css transform 翻页动画记录

翻页问题场景
B和C是同一页(正反两面)
image.pngcss

image.png

当想要翻页覆盖 A 时,B、C 须要同时翻页才能覆盖A,显示D。html

B、C 不能写在同一个盒子里动画

错误例子:spa

<div class="pagesBox A"></div>
<div class="pagesBox">
  <div class="B"></div>
  <div class="C"></div>
</div>
<div class="pagesBox D"></div>

正确例子:3d

<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,使他们翻转就能够了?

答案在下面。code

B 须要设置orm

.B{
  backface-visibility: hidden;
}

backface-visibility: hidden; 这个属性是让B的 背面 隐藏。htm

而且让 B、C 重叠,使用绝对定位进行重叠。it

C 须要设置io

.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);
  }
}