css transform 翻页动画记录的实现

网站建设 itxz 5年前 (2020-12-05) 332次浏览 已收录 0个评论

翻页问题场景

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{
  <a href="http://www.itxz.com/?tag=transform" title="查看更多关于transform的文章" target="_blank">transform</a>: rotateY(-180deg);
}

因为正常内容是显示正面的,我们需要把 C 的内容翻转到背面。让它看起来像是 纸张 的 背面

回到上面的问题,为什么不使用一个盒子

因为包裹 B、C 的盒子进行翻转时,B 设置背面隐藏是无效的。只有让 B 进行翻转,才能让 B 的背面隐藏起来。显示背面的 C。

接着对B、C进行动画翻页

main{
  perspective: 1800;
  <a href="http://www.itxz.com/?tag=transform" title="查看更多关于transform的文章" target="_blank">transform</a>-style: preserve-3d;
}
 
.B,.C{
  transition: <a href="http://www.itxz.com/?tag=transform" title="查看更多关于transform的文章" target="_blank">transform</a> 1s;
   
  &.On{
    <a href="http://www.itxz.com/?tag=transform" title="查看更多关于transform的文章" target="_blank">transform</a>: rotateY(180deg);
  }
}

IT学者 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:css transform 翻页动画记录的实现
喜欢 (0)

您必须 登录 才能发表评论!