transform
transform浏览器支持
在 transform 中有一个 rotate 旋转属性,利用 rotate 可以做到书本翻页的效果
书本的翻页主要围绕书本轴线进行左右翻动书本
例子为书本从合起状态到打开状态首先定义一本书本 div
<style> .outbookPage { margin: 100px auto; width: 586px; height: 632px; perspective: 2000px; background:gray ; box-shadow: 0 0 10px #999; }</style><div class="outbookPage"> </div>
复制代码
效果:
在此 div 中设置好 perspective,这是用户相对于屏幕的远近距离,之后翻页效果出现时 perspective 值越近,翻转效果越明显。
在 outbookPage 中编写要进行旋转的子 div 元素
<style> .outbookPage { margin: 100px auto; width: 586px; height: 632px; perspective: 2000px; background:gray ; box-shadow: 0 0 10px #999; } .innerBookPage { width: 100%; height: 100%; background-color: #333333; /* 向外面旋转 */ transform: rotateY(-40deg); transform-origin: 0 0; font-size: 40px; text-align: center; color: white; z-index: 5; }</style><div class="outbookPage"> <div class="innerBookPage"> 封面 </div></div>
复制代码
效果: 当前为静态效果,如果想要制作完整的动画翻页效果可以使用 animation,但是需要注意的是 animation 只能支持 IE10+。tansform:rotateY( 定义的角度 ) 代表让 div 元素绕 Y 轴进行 3d 旋转。 rotateY 也只支持 IE10+在封面 div 旋转到背面之后可以使用 backface-visibility: hidden; 对背面进行隐藏。此时封面旋转到一般就消失了
为了让封面旋转到一半后消失出现第一页,可以给封面 div 添加兄弟元素,即第一页的 div。
注意此处第一页的 div 需要进行 180 度翻转,这样旋转之后才能正向显示。同样需要进行背部隐藏: backface-visibility: hidden;
动作的进行可以使用 animation 动画,定一个 @keyframes 效果来进行翻页运动
不过值得注意的是,animation 只兼容 IE10 及以上
完整代码:
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .outbookPage { margin: 100px auto; width: 586px; height: 632px; perspective: 2000px; background:gray ; background-position: 100% 0%; box-shadow: 0 0 10px #999; } .innerBookPage { width: 100%; height: 100%; background-color: #333333; /* 向外面旋转 */ transform: rotateY(-20deg); transform-origin: 0 0; animation: openbook 3s forwards; font-size: 40px; text-align: center; color: white; backface-visibility: hidden; z-index: 5; } .innerfirstPages { width: 100%; height: 100%; background: burlywood; background-size: 100% 100%; position: absolute; top: 0; left: -100%; font-size: 40px; text-align: center; animation: openbook2 3s forwards; transform: rotateY(180deg); transform-origin: 100% 0; backface-visibility: hidden; } @keyframes openbook{ 0%{ transform: rotateY(0deg) scaleX(1); } 100%{ transform: rotateY(-180deg) scaleX(1); } } @keyframes openbook2{ 0%{ transform: rotateY(180deg) scaleX(1); } 100%{ transform: rotateY(0deg) scaleX(1); box-shadow: 0 0 10px #999; } } </style> </head> <body> <div class="outbookPage"> <div class="innerBookPage"> 封面 </div> <div class="innerfirstPages"> 第一页内容 1111111111111 222222222222222 </div> </div> </body></html>
复制代码
效果:
评论