css3 利用perspective实现翻页效果和正方体 以及翻转效果

要点:

1 实现3D效果就需要使用perspective属性

1 页面旋转使用css3的rorate

2 使用backface-visibility 实现正面元素翻转之后背面不可见,显示出反面的元素

demo1 翻页效果:

html

<div class="demo1">
  <div class="demo1-1">
    <div class='info'> 这是正面</div>
  </div>
  <div class="demo1-2">这是反面</div>
</div>

css

.demo1 {
        margin: 20px auto;
        width: 200px;
        perspective: 1200px;/*重点*/
        height: 200px;
        position: relative;
        transform-style: preserve-3d;/*重点*/
        color: #fff;
    }

    .demo1 .demo1-1,.demo1 .demo1-2 {
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        text-align: center;
        background-color: blue;
    }

    .demo1 .demo1-1{
        z-index: 2;
        background-color: red;
        transform-origin: left;
        transition: all 1s ease-in-out;
        transform-style: preserve-3d;

    }

    .demo1:hover .demo1-1 {
        transform: rotateY(-120deg);
    }

 

反面内容不显示需要加上css:(这个效果生效的关键点是它的父元素加上transform-style: preserve-3d;)

    .demo1 .demo1-1 .info {
        backface-visibility:hidden;/* 重点 */
   -webkit-backface-visibility:hidden; }

 

正方体:

html

<div class="code-box">
        <div class='code code1'>1</div>
        <div class='code code2'>2</div>
        <div class='code code3'>3</div>
        <div class='code code4'>4</div>
        <div class='code code5'>5</div>
        <div class='code code6'>6</div>
    </div>

css:

 .code-box {
        perspective: 1200px;/* 重点 */
        width: 100px;
        height: 100px;
        margin: 20px auto;
        position: relative;
        transform-style: preserve-3d;/* 重点 */
        transform: rotateY(-30deg);/* 可以看见全貌 */
        perspective-origin: -50% -50%;/* 已正方体的中心店来透视 */
        transform-origin: center center 50px;
        transition: all 2s ease-in-out;
    }
    .code-box:hover {
        transform: rotateY(360deg);
    }

    .code-box .code {
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        opacity: 0.7;
        color: #fff;
        font-size: 18px;
        line-height: 100px;
        text-align: center;

    }

    .code-box .code1 {
        background-color: red;
        transform: translateZ(100px);
    }
    .code-box .code2 {
        background-color: blue;
    }
    .code-box .code3 {
        background-color: green;
        transform: rotateY(90deg);
        transform-origin: right;
    }

    .code-box .code4 {
        background-color: yellow;
        transform: rotateY(-90deg);
        transform-origin: left;
    }

    .code-box .code5 {
        background-color: fuchsia;
        transform: rotateX(90deg);
        transform-origin: top;
    }

    .code-box .code6 {
        background-color: blueviolet;
        transform: rotateX(-90deg);
        transform-origin: bottom;
    }

翻转效果:

html

 <div class="flip-container">
        <div class="flipper">
            <div class="front">
                <div class="info">here is content : AA</div>
            </div>
            <div class="back">
                <div class="info">here is content : BB</div>
            </div>
        </div>
    </div>

css

.flip-container {
        margin: 20px auto;
        -webkit-perspective: 500;/* 重点 */
        -moz-perspective: 500;
        -ms-perspective: 500;
        perspective: 500;
        -ms-transform: perspective(500px);
        -moz-transform: perspective(500px);
        transform-style: preserve-3d;/* 重点 */
    }

    .flipper {
        position: relative;
        width: 200px;
        height: 200px;
        transition: 0.6s;
        transform-style: preserve-3d;
    }

    .flip-container .front,
    .flip-container .back {
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        transform-style: preserve-3d;/* 翻转后背面不可见 */
    }
    .flip-container .info{
        backface-visibility: hidden;/* 翻转后背面不可见 */
    }

    .front {
        transform: rotateY(0deg);
        z-index: 2;
        background: red;
    }

    .back {
        transform: rotateY(-180deg);/* 初始翻转-180deg, */
        background: green;
    }


    .flip-container:hover .flipper {
        transform: rotateY(180deg);/*hover的时候翻转180deg,back刚好转到正面可见,front正面转到反面不可见*/

    }

 

转载于:https://www.cnblogs.com/xiaofenguo/p/10834200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用CSS3实现翻页效果可以使用`transform`属性和`transition`属性来实现。以下是一个简单的实现翻页效果CSS代码: HTML部分: ```html <div class="book"> <div class="page">第一页的内容</div> <div class="page">第二页的内容</div> <div class="page">第三页的内容</div> <div class="page">第四页的内容</div> </div> ``` CSS部分: ```css .book { width: 300px; height: 200px; perspective: 1000px; /* 设置3D视角 */ position: relative; } .page { width: 300px; height: 200px; position: absolute; top: 0; left: 0; transform-style: preserve-3d; /* 保留3D变换 */ backface-visibility: hidden; /* 隐藏背面 */ transition: transform 1s ease-in-out; /* 设置过渡效果 */ } .page:nth-child(1) { transform: rotateY(0deg); /* 第一页的旋转角度 */ } .page:nth-child(2) { transform: rotateY(-90deg); /* 第二页的旋转角度 */ } .page:nth-child(3) { transform: rotateY(-180deg); /* 第三页的旋转角度 */ } .page:nth-child(4) { transform: rotateY(-270deg); /* 第四页的旋转角度 */ } ``` JavaScript部分: ```javascript const book = document.querySelector('.book'); let currentPage = 1; function nextPage() { if (currentPage < 4) { currentPage++; book.style.transform = `rotateY(${-90 * currentPage}deg)`; } } function prevPage() { if (currentPage > 1) { currentPage--; book.style.transform = `rotateY(${-90 * currentPage}deg)`; } } document.addEventListener('keydown', (event) => { if (event.keyCode === 37) { prevPage(); // 按左箭头键翻到上一页 } if (event.keyCode === 39) { nextPage(); // 按右箭头键翻到下一页 } }); ``` 这段代码实现了一个简单的翻页效果。通过旋转`book`元素,实现了页面的翻转效果。通过设置`transition`属性,使得翻页过程有过渡效果。通过JavaScript的`keydown`事件监听,可以通过按左箭头键或右箭头键来翻到上一页或下一页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值