好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

CSS3中设置3D变形的transform-style属性详解

transform -s tyle属性是3D空间一个 重要 属性,指定嵌套元素如 何在 3D空间中呈现。他主要有两个属性值:flat和 PR eserve-3d。

transform-style属性的使用语法非常 简单 :

CSS Code 复制内容到剪贴板

transform-style:&nbs p; flat | preserve-3d  

其中flat值为默认值,表示所有子元素在2D平面呈现。preserve-3d表示所有子元素在3D空间中呈现。

也就是说,如果对一个元素设置了transform-style的值为flat,则该元素的所有子元素都将被平展到该元素的2D平面中进行呈现。沿着X轴或Y轴 方向 旋转该元素将导致位于正或负Z轴位置的子元素显示在该元素的平面上,而不是它的前面 或者 后面。如果对一个元素设置了transform-style的值为preserve-3d,它表示不执行平展操作,他的所有子元素位于3D空间中。

transform-style属性需要设置在父元素中,并且高于任何嵌套的 变形 元素。最后,我们运用一个翻转的例子,来加深一下对transform-style属性的印象:
HT ML 模板

XM L/HTML Code 复制内容到剪贴板

< div   class = "wrap" >         < div   class = "spin" >             < div   class = "rotate" >                 < img   src = "images/cardKingCl ub .png"   alt = ""   width = "142"   h ei ght = "200"   />             </ div >         </ div >    </ div >    < div   class = "wrap" >         < div   class = "spin" >             < div   class = "rotate t hr ee-d" >                 < img   src = "images/cardKingClub.png"   alt = ""   width = "142"   height = "200"   />             </ div >         </ div >    </ div >   

CSS

CSS Code 复制内容到剪贴板

.wrap {         width :  500px ;         height :  300px ;         m arg in :  30px   auto ;         pos IT ion :  relative ;         background :  url (images/bg-grid. jpg )  no-re PE at   center   center ;         background - size : 100% 100%;    }    /*设置动画*/    @keyfr am es spin{        0%{            transform:rotateY(0 deg )        }        100%{            transform:rotateY( 360 deg)        }    }    .spin {         width :  142px ;         height :  200px ;         position :  absolute ;         top : 50%;         left : 50%;         mar gin -left : - 72px ;         margin -t op : - 101px ;         border :  1px   dashed  orange;         cursor :  pointer ;        transform-style: preserve-3d;    }    /*调用动画*/    .spin:hover{        animation:spin 5s linear infinite;    }    .rotate {         background :  url (images/cardKingClub.png)  no-repeat   center ;         background - size : 100% 100%;         border :  5px   solid  hsla(50,50%,50%,.9);        transform: perspective( 200px ) rotateY(45deg);    }    .rotate img{         border :  1px   solid   green ;        transform: rotateX(15deg) translateZ( 10px );        transform-origin: 0 0  40px ;    }    /* 改变 transform-style的默认值*/    .three-d {        transform-style: preserve-3d;    }  

特别声明:为了 节省 篇幅,代码中CSS3属性代码省去了各浏览器的私有前缀,在实际操作中,需要将各浏览器前缀加上,才会有效果。

其效果如下所示:

正如您所看到的,当元素设置.rotate设置了flat值时,其子元素img不会根据translateZ()值摊开,而在同一平面旋转,如上图上部分所示;当元素.rotate设置了preserve-3d值时,其子元素img会根据translateZ()值摊开,不再会 堆叠 在一起,如上图下部分所示。

有 一点 需要特别提醒大家,如果你的元素设置了transform-style值为preserve-3d,就不能为了 防 止子元素溢出容器而设置overflow值为hidden,如果设置了overflow:hidden同样可以迫死子元素出现在同一平面(和元素设置了transform-style为flat一样的效果),如下图所示:

总结

以上是 为你收集整理的 CSS3中设置3D变形的transform-style属性详解 全部内容,希望文章能够帮你解决 CSS3中设置3D变形的transform-style属性详解 所遇到的问题。

如果觉得 网站内容还不错, 推荐好友。

查看更多关于CSS3中设置3D变形的transform-style属性详解的详细内容...

  阅读:27次