当前位置:首页 » 《我的小黑屋》 » 正文

前端 CSS 属性transform 平面转换 详解

1 人参与  2024年10月04日 10:03  分类 : 《我的小黑屋》  评论

点击全文阅读


可以通过设置css属性改变标签的移动位置,旋转,缩放比例,倾斜度数。

transform 是一个符合属性,一个标签的属性不可以出现两个transform。可以发他们的值写在一些。

移动的方向是:

水平左正,右负。

垂直方向,上负,下正。

首先显示transform 的属性都有那些

translateX(x):平移元素沿 x 轴translateY(y):平移元素沿 y 轴translate(x, y):平移元素沿 x 和 y 轴scaleX(x):缩放元素沿 x 轴scaleY(y):缩放元素沿 y 轴scale(x, y):缩放元素沿 x 和 y 轴rotate(angle):旋转元素一个角度rotateX(angle):沿 x 轴旋转元素rotateY(angle):沿 y 轴旋转元素rotateZ(angle):沿 z 轴旋转元素skewX(angle):倾斜元素沿 x 轴skewY(angle):倾斜元素沿 y 轴skew(angle);默认原点倾斜

1:translate 移动位置

用到的是 

transform: translate(200px,100px);  表示向左移动200px,向下移动100px.

transform: translate(200px);也可以是一个值,表示向左移动200px.

transform: translate(100%); translate里的值也可以是百分比。

移动的距离是参考自身,如果自身宽度是200px,那么100%就是200px,同时高度也是同样的道理。

translateX() 表示的就是向水平方向可以作用移动。

translateY() 表示的是垂直方向移动。

<head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>平移效果</title>    <style>        .father{            width: 500px;            height: 300px;            margin: 100px auto;            border: 1px solid #000;        }        .son{            width: 200px;            height: 100px;            background-color: pink;            transition: all 0.5s;        }        /* 鼠标移入到父盒子,.son改变位置 */        .father:hover .son {            /* 做移动200px,向下移动100px */            transform: translate(200px,100px);            /* 百分比:参照盒子自身尺寸计算结果 */            /* 这个向当于向左100px,向下100px */            transform: translate(50%,100%);            transform: translate(-50%,100%);            /* 只写一个数表示水平方向 */            transform: translate(100px);                transform: translatey(100px);            transform: translateX(100px);        }    </style></head><body>    <div class="father">        <div class="son"></div>    </div></body>

2:scale 缩放比例

transform: scale(2); 作用是把原来的宽高,缩放到之前的2倍。

scaleX(x):缩放元素沿 x 轴scaleY(y):缩放元素沿 y 轴scale(x, y):缩放元素沿 x 和 y 轴 

特别注意:

transform-origin: right bottom; 这个属性transform-origin:可以改变缩放的中心位置。

<head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>缩放效果</title>    <style>        .box{            width: 300px;            height: 200px;            margin: 100px auto;            background-color: pink;        }        .box img{            width: 100%;            transition: all 1s;        }        .box:hover img        {            /* 修改宽度尺寸,从坐上角开始缩放 */            /* width: 500px; */            /* height: 300px; */            /* 大于1 ,表示放大 */            /* transform: scale(2); */            /* 小于1,表示放小 */            /* transform: scale(0.5); */            /* 等于1,表示不变 */            transform: scale(1);                    }    </style></head><body>    <div class="box">        <img src="./images/product.jpeg" alt="">    </div></body>

3:rotate(angle);旋转时带上单位。

rotate(angle):旋转元素一个角度rotateX(angle):沿 x 轴旋转元素rotateY(angle):沿 y 轴旋转元素rotateZ(angle):沿 z 轴旋转元素
<head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>旋转效果</title>    <style>        img        {            width: 200px;            transition: all 2s;        }        /* 鼠标悬停到图片上,添加旋转效果 */        img:hover        {            /* 正数:图片是顺势针旋转,负数:图片是逆势针旋转 */            transform:rotate(360deg);            transform:rotate(-360deg);        }    </style></head><body>    <img src="./images/rotate.png" alt=""></body>
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>旋转原点</title>    <style>        img{            width: 200px;            height: 200px;            border: 1px solid sandybrown;            transition: all 1s;            /* 改变旋转得位置. */            transform-origin: right bottom;        }        img:hover{            transform: rotate(360deg);        }    </style></head><body>    <img src="./images/rotate.png" alt=""></body></html>

特别:

也可以先移动在旋转

<head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>多种转换效果</title>    <style>        .box{            width: 800px;            height: 200px;            border: 1px solid #000;        }        img{            width: 200px;            transition: all 5s;        }        /*鼠标移动到盒子里,图片边走边转*/        .box:hover img{            /* 先平移,在旋转 */            transform: translate(600px) rotate(360deg);               /* 旋转会改变坐标轴向 */            /* 多重转换:以第一种旋转形态得坐标轴为准 */            /* transform: rotate(360de) translate(600px); */                        /* 层叠性 */            /* transform: translate(600px); */            /* transform: rotate(360deg); */        }    </style></head><body>    <div class="box">        <img src="./images/tyre.png" alt="">    </div></body>

4:skew(angle);默认原点倾斜

skewX(angle):倾斜元素沿 x 轴skewY(angle):倾斜元素沿 y 轴skew(angle);默认原点倾斜
<head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>倾斜效果</title>    <style>        div{            margin: 0 auto;            width: 100px;            height: 200px;            background-color: pink;            transition: all .5s;        }        div:hover{            transform: skew(30deg);            }    </style></head>

这个transform CSS属性,是一个混合属性:

 transform: translate(800px) rotate(360deg) scale(2) skew(180deg);

在一个标签中,要回合写在一起,同时顺序不同效果也会不同。


点击全文阅读


本文链接:http://zhangshiyu.com/post/167536.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1