欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

CSS3旋转缩放移动倾斜等效果——transform

程序员文章站 2022-07-01 20:55:33
1.transform浏览器支持情况 也就是说目前不考虑老浏览器的话是不用加前缀的,感谢菜鸟教程:https://www.runoob.com/cssref/css3-pr-transform.html transform默认值none;就是不转换,不继承,js中对其更改示例:object.styl ......

1.transform浏览器支持情况

CSS3旋转缩放移动倾斜等效果——transform

也就是说目前不考虑老浏览器的话是不用加前缀的,感谢菜鸟教程:https://www.runoob.com/cssref/css3-pr-transform.html

transform默认值none;就是不转换,不继承,js中对其更改示例:object.style.transform="rotate(7deg)"

2.transform能干啥?

transform属性让元素进行2d或3d转换。可以将元素:旋转,缩放,移动,倾斜等。

3.transform怎么用? 

transform: none|transform-functions;

 

none是默认的,就是不进行转换,好理解。transform-functions有哪些?如下表:

transform-functions的值 描述 示例
matrix(n,n,n,n,n,n) 定义 2d 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3d 转换,使用 16 个值的 4x4 矩阵。  
translate(x,y) 定义 2d 转换。
translate3d(x,y,z) 定义 3d 转换。  
translatex(x) 定义转换,只是用 x 轴的值。
translatey(y) 定义转换,只是用 y 轴的值。
translatez(z) 定义 3d 转换,只是用 z 轴的值。  
scale(x,y) 定义 2d 缩放转换。
scale3d(x,y,z) 定义 3d 缩放转换。  
scalex(x) 通过设置 x 轴的值来定义缩放转换。
scaley(y) 通过设置 y 轴的值来定义缩放转换。
scalez(z) 通过设置 z 轴的值来定义 3d 缩放转换。  
rotate(angle) 2d 旋转,在参数中规定角度(如:30deg)。 transform: rotate(360deg);
rotate3d(x,y,z,angle) 定义 3d 旋转。  
rotatex(angle) 定义沿着 x 轴的 3d 旋转。
rotatey(angle) 定义沿着 y 轴的 3d 旋转。
rotatez(angle) 定义沿着 z 轴的 3d 旋转。
skew(x-angle,y-angle) 定义沿着 x 和 y 轴的 2d 倾斜。

transform: rotate(30deg,60deg);

skewx(angle) 定义沿着 x 轴的 2d 倾斜。  
skewy(angle) 定义沿着 y 轴的 2d 倾斜。  
perspective(n) 为 3d 转换元素定义透视视图。 测试


 4.详细介绍下transform属性怎么用

页面有个几个div,宽200px,高100px,有的为其加上transform:rotate(30deg),效果如下(1\2\3\6是没有定义transform的):

CSS3旋转缩放移动倾斜等效果——transform

注意,这是打开页面就会变形旋转好的,不会有动画!!!

使用transition过渡,才会产生动画。如下:

1             .box5 {
2                 /* 匀速 时间2s */
3                 transition: linear 2s;
4             }
5             .box5:hover{
6                 transform: rotate(360deg);
7             }

 

效果如下:

CSS3旋转缩放移动倾斜等效果——transform

 

 下面主要介绍transform属性值的效果,所以都配合transition来使用吧,方便看看前后变化的不同。

skewx(x) ,x是倾斜的度数,

 1         <style type="text/css">
 2             .box1 {
 3                 width: 200px; height: 100px; background-color: #ff9900;
 4                 transition: 0.5s;
 5             }
 6             .box1:hover {
 7                 transform: skewx(-45deg);
 8             }
 9         </style>
10 ...
11         <div style="border: #000000 1px solid">
12             <div class="box1">看看我的变化</div>
13         </div>
14         我是下一行内容

 效果如下:

 CSS3旋转缩放移动倾斜等效果——transform

 skewy(y),上面代码skewx改为skewy,效果如下

CSS3旋转缩放移动倾斜等效果——transform

skew就是skewx和skey的合集,上面第7行transform: skewx(-45deg);改为transform: skew(-45deg,45deg);效果如下

 CSS3旋转缩放移动倾斜等效果——transform

在这里,我不得不承认,还是在大脑总难以图像化:skew怎么去变形的过程。只有x轴上变动可以在脑中有个印象,只有y轴变动,也可以有个动态的过程,都变动的话,嗯,脑子中形成不了那个印象。下面图对让变动和原图对比,看看怎么变的,也不深究了。。。

CSS3旋转缩放移动倾斜等效果——transform

 CSS3旋转缩放移动倾斜等效果——transform

再来看看缩放函数transform:scale(2); 放大两倍(看到没,放大了是视觉上的,并不挤占兄弟和父级的空间)

1             .box1 {
2                 width: 200px; height: 100px; background-color: #ff9900;
3                 transition: 0.5s;
4             }
5             .box1:hover {
6                 /* scale括号里只能是正数或0 */
7                 transform:scale(2);
8             }
1     <body>
2         <div style="border: #000000 1px solid; margin-left: 200px; margin-top: 200px;">
3             <div class="box1">看看我的变化</div>
4         </div>        
5     </body>

 

 CSS3旋转缩放移动倾斜等效果——transform

还有一个函数translate,它的意思就是位移!translatex只是它的分支。比如,向左移动50px之类的。

1             .box1 {
2                 width: 200px; height: 100px; background-color: #ff9900;
3                 transition: 0.5s;
4             }
5             .box1:hover {
6                 /* 沿x轴移动100px */
7                 transform:translatex(100px);
8             }

 CSS3旋转缩放移动倾斜等效果——transform