前端 CSS 属性transform 平面转换 详解
CSDN 2024-10-15 09:33:01 阅读 94
可以通过设置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() 表示的是垂直方向移动。
<code><head>
<meta charset="UTF-8">code>
<meta name="viewport" content="width=device-width, initial-scale=1.0">code>
<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">code>
<div class="son"></div>code>
</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">code>
<meta name="viewport" content="width=device-width, initial-scale=1.0">code>
<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">code>
<img src="./images/product.jpeg" alt="">code>
</div>
</body>
3:rotate(angle);旋转时带上单位。
rotate(angle):旋转元素一个角度rotateX(angle):沿 x 轴旋转元素rotateY(angle):沿 y 轴旋转元素rotateZ(angle):沿 z 轴旋转元素
<head>
<meta charset="UTF-8">code>
<meta name="viewport" content="width=device-width, initial-scale=1.0">code>
<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="">code>
</body>
<!DOCTYPE html>
<html lang="en">code>
<head>
<meta charset="UTF-8">code>
<meta name="viewport" content="width=device-width, initial-scale=1.0">code>
<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="">code>
</body>
</html>
特别:
也可以先移动在旋转
<head>
<meta charset="UTF-8">code>
<meta name="viewport" content="width=device-width, initial-scale=1.0">code>
<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">code>
<img src="./images/tyre.png" alt="">code>
</div>
</body>
4:skew(angle);默认原点倾斜
skewX(angle):倾斜元素沿 x 轴skewY(angle):倾斜元素沿 y 轴skew(angle);默认原点倾斜
<head>
<meta charset="UTF-8">code>
<meta name="viewport" content="width=device-width, initial-scale=1.0">code>
<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);
在一个标签中,要回合写在一起,同时顺序不同效果也会不同。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。