css transform 翻页动画记录的实现
(编辑:jimmy 日期: 2024/11/2 浏览:3 次 )
翻页问题场景
B和C是同一页(正反两面)
当想要翻页覆盖 A 时,B、C 需要同时翻页才能覆盖A,显示D。
B、C 不能写在同一个盒子里
错误例子:
<div class="pagesBox A"></div> <div class="pagesBox"> <div class="B"></div> <div class="C"></div> </div> <div class="pagesBox D"></div>
正确例子:
<main> <div class="pagesBox A"></div> <div class="pagesBox B"></div> <div class="pagesBox C"> <div>内容</div> </div> <div class="pagesBox D"></div> </main>
为什么不使用一个盒子包裹 B、C,使他们翻转就可以了?
答案在下面。
B 需要设置
.B{ backface-visibility: hidden; }
backface-visibility: hidden; 这个属性是让B的 背面 隐藏。
并且让 B、C 重叠,使用绝对定位进行重叠。
C 需要设置
.C > div{ transform: rotateY(-180deg); }
因为正常内容是显示正面的,我们需要把 C 的内容翻转到背面。让它看起来像是 纸张 的 背面
回到上面的问题,为什么不使用一个盒子
因为包裹 B、C 的盒子进行翻转时,B 设置背面隐藏是无效的。只有让 B 进行翻转,才能让 B 的背面隐藏起来。显示背面的 C。
接着对B、C进行动画翻页。
main{ perspective: 1800; transform-style: preserve-3d; } .B,.C{ transition: transform 1s; &.On{ transform: rotateY(180deg); } }
下一篇:详解CSS3+JS完美实现放大镜模式