CSS3 3D变换之综合运用 - 3D box

2021-02-18 13:19

阅读:557

  • 这里的transform的顺序很重要,如果是先rotateYtranslateZ, 那么translateZ是以rotate以后的坐标轴进行平移,这样才能达到前后左右平移的效果; 如果先translateZrotateY, 那么所有元素都会先平移,然后在一个位置上进行旋转了!

  • changeRotateY函数用来改变div的旋转角度,根据该元素的eq和传入的count值(按钮被点击的次数)来设置元素的rotateY的值。由于遇到了动态获取transform值的问题这里的函数灵活性不高,有点遗憾。 第一次点击的时候,count为0,index()为0的元素的rotateY会从0°增加到90°,index()为1的元素的rotateY会从90°增加到180°,and so on; 第二次点击,count为1, 上述值会各增加90°,完成无限旋转的效果;

  • 遇到的一个很大的问题就是转到后面的元素依旧会显示出来。 试过background-colorbackface-visibility:hidden都不怎么好用,尤其是backface-visibility, 转到90度的时候还是显示的,在90.01°时才会隐藏backface, 如果想用backface-visibility来隐藏后面元素的话得fine-tune, 还会引起稍微的错位问题,遂放弃;

  • 最后使用的是z-index来隐藏后面的元素, 动态设置转到最前面的元素的z-index为较大值。注意z-index属性不对positionstatic的元素起作用。 当然我们这里的div们都是absolute,所以就能应用得很好啦~

  • 要显示的元素的eq值分别为3、2、1、0,当然直接用递增的count变量+switch/if else语句也能做,但陡减可读性; 取而代之的是增加了一个递减的reversedCount变量,它来负责匹配每次要设置z-index的元素。

上一篇:http相关面试题

下一篇:html字体


评论


亲,登录后才可以留言!