CSS之3D变形
rotateX()
就是沿着 x 立体旋转.
img { transition:all 0.5s ease 0s; } img:hove { transform:rotateX(180deg); }
rotateY()
沿着y轴进行旋转
img { transition:all 0.5s ease 0s; } img:hove { transform:rotateX(180deg); }
rotateZ
沿着z轴进行旋转
img { transition:all .25s ease-in 0s; } img:hover { /* transform:rotateZ(180deg); */ /* transform:rotateX(45deg) rotateY(180deg) rotateZ(90deg) skew(0,10deg); */ }
透视(perspective)
电脑显示屏是一个2D平面,图像之所以具有立体感(3D效果),其实只是一种视觉呈现,通过透视可以实现此目的。
透视可以将一个2D平面,在转换的过程当中,呈现3D效果。
透视是眼睛到屏幕的距离 透视只是一种展示形式 是有3d效果的意思
注:并非任何情况下需要透视效果,根据开发需要进行设置。
perspective有两种写法
作为一个属性,设置给父元素,作用于所有3D转换的子元素
作为transform属性的一个值,做用于元素自身
perspective: 500px;
视距:眼睛到屏幕的距离。 视距越小,透视效果越明显
开门案例
body { } .door { width: 300px; height: 300px; margin: 100px auto; border: 1px solid gray; perspective: 1000px; background: url('images/dog.gif') no-repeat center/cover; position: relative; } .door > div { box-sizing: border-box; border: 1px solid black; } .left { float: left; width: 50%; height: 100%; background-color: brown; transform-origin: left center; transition: 1s; position: relative; } .left::before { content: ''; position: absolute; width: 20px; height: 20px; border-radius: 50%; top: 50%; right: 0px; transform: translateY(-10px); border: 1px solid whitesmoke; } .right { width: 50%; height: 100%; float: left; background-color: brown; transform-origin: right center; transition: 1s; position: relative; } .right::before { content: ''; position: absolute; width: 20px; height: 20px; border-radius: 50%; top: 50%; left: 0px; transform: translateY(-10px); border: 1px solid whitesmoke; } .door:hover .left { transform: rotateY(-130deg); } .door:hover .right { transform: rotateY(130deg); }
translateX(x)
仅水平方向移动**(X轴移动)
主要目的实现移动效果
translateY(y)
仅垂直方向移动(Y轴移动)
translateZ(z)
transformZ的直观表现形式就是大小变化,实质是XY平面相对于视点的远近变化(说远近就一定会说到离什么参照物远或近,在这里参照物就是perspective属性)。比如设置了perspective为200px;那么transformZ的值越接近200,就是离的越近,看上去也就越大,超过200就看不到了,因为相当于跑到后脑勺去了,我相信你正常情况下,是看不到自己的后脑勺的。
3D呈现(transform-style)
设置内嵌的元素在 3D 空间如何呈现,这些子元素必须为转换原素。
flat:所有子元素在 2D 平面呈现
preserve-3d:保留3D空间
3D元素构建是指某个图形是由多个元素构成的,可以给这些元素的父元素设置transform-style: preserve-3d来使其变成一个真正的3D图形。
一般而言,该声明应用在3D变换的兄弟元素们的父元素上。
z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
注释:元素可拥有负的 z-index 属性值。
注释:Z-index 仅能在定位元素上奏效(例如 position:absolute;)
backface-visibility: hidden; /backface-visibility 属性定义当元素不面向屏幕时是否可见,不是正面对向屏幕,就隐藏/
翻转盒子案例
body { margin: 0; padding: 0; background-color: #B3C04C; } .wallet { width: 300px; height: 300px; margin: 50px auto; position: relative; transform-style: preserve-3d; transition: all 0.5s; } .wallet::before, .wallet::after { content: ''; position: absolute; left: 0; top: 0; display: block; width: 100%; height: 100%; background-image: url(./images/bg.png); background-repeat: no-repeat; } .wallet::before { background-position: right top; transform: rotateY(180deg); } .wallet::after { background-position: left top; transform: translateZ(2px); } .wallet:hover { transform: rotateY(180deg); }
作者:符号哥
微信公众号:左侧为二维码
个人技术网站-编程符号网:http://www.itfh.cn
个人技术网站-IT源码网:http://www.itym.cn
新浪微博:https://weibo.com/u/2814576687
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号