CSS动画之转换模块
2D转换模块:注意点:1.可以类似于过渡模块一样简写,但是这里不是用逗号隔开而是用空格
2.2D的转换模块会修改元素的坐标系,所以旋转之后的平移就不是水平平移
格式:旋转:transform: rotate(30deg)旋转角度
平移:transform: translate(50px,100px);平移的坐标系
缩放:transform: scale(2,4);缩放的倍数
翻转:transform: skew(30deg,20deg);沿x轴y轴旋转的角度
矩阵:transform:matrix(0.866,0.5,-0.5,0.866,0,0);使用六个值的矩阵。达到以上所有功能
综合:transform: rotate(30deg) translate(50px,10px) scale(2,4) skew(30deg,30deg);用空格隔开
形变中心点:transform-origin:50% 50% 可以用百分比,像素,特殊关键字,默认旋转是通过自己的中心点做参考,可以通过修改形变中心点来改变旋转
旋转轴向:transform:rotateX(45deg);transform:rotateY(45deg);transform:rotateZ(45deg);一般默认旋转是垂直桌面的Z轴旋转的
透视属性:perspective:500px 近大远小(一般结合旋转轴向来看,更加直观)值是距离物体的多远
注意点:一定要把透视属性设置到你要观察的元素的父元素(上级就行,设置给它爷爷也行)上面!!!!!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>2D转换</title> <style> *{ padding: 0; margin: 0; } ul{ list-style: none; width: 800px; height: 800px; background-color: #5bc0de; margin: 0 auto; } li{ width: 60px; height: 50px; background-color: yellow; margin: 0 auto; margin-bottom: 100px; text-align: center; line-height: 50px; } .box2{ transform: rotate(30deg); } .box3{ transform: translate(50px,10px); } .box4{ transform: scale(2,4); } .box5{ transform: skew(30deg,30deg); } .box6{ transform: rotate(30deg) translate(50px,10px) scale(2,4) skew(30deg,30deg); } </style> </head> <body> <ul> <li class="box1">正常</li> <li class="box2">旋转</li> <li class="box3">平移</li> <li class="box4">缩放</li> <li class="box5">翻转</li> <li class="box6">综合</li> </ul> </body> </html>
1.2D和3D的区别:2D就是没有厚度只有宽高,3D就是除了宽高还加了厚度
默认情况下所有的元素都是2D元素
2.如何呈现3D:类似于透视,给其父元素添加transform-style:preserve-3d就行
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>3D转换</title> 6 <style> 7 *{ 8 padding: 0; 9 margin: 0; 10 } 11 .father{ 12 background-color:skyblue; 13 width: 200px; 14 height: 200px; 15 margin: 100px auto; 16 perspective: 500px; 17 transform: rotateY(0deg); 18 transform-style: preserve-3d; 19 } 20 .son{ 21 background-color: red; 22 width: 100px; 23 height: 100px; 24 margin: 20px auto; 25 transform: rotateY(45deg); 26 } 27 </style> 28 </head> 29 <body> 30 <div class="father"> 31 <div class="son"></div> 32 </div> 33 </body> 34 </html>