translate设置的移动与position设置的定位间区别

来源:2-9 位移变形

江舟

2021-04-29 15:53:01

<!DOCTYPE HTML>
<html>

<head>
<meta charset="utf-8">
<title>2-3</title>
<style type="text/css">
/* 此处写代码*/
.bgc{
width: 900px;
height: 600px;
margin: 20px auto;
background-color: red;
position: relative;
overflow:hidden;
}
.star{
width: 0;
height: 0;
border: 35px solid transparent;
border-top: 25px solid yellow;
position: relative;
margin:200px auto;
}
.star::before{
content: "";
display: block;
width: 0;
height: 0;
border: 35px solid transparent;
border-top: 25px solid yellow;
transform: rotate(73deg) translate(-49px,40px);
}
.star::after{
content: "";
display: block;
width: 0;
height: 0;
border: 35px solid transparent;
border-top: 25px solid yellow;
position: relative;
transform: rotate(-72deg);
left: -17px;
top: -97px;
}
</style>
</head>

<body>
<!-- 此处写代码 -->
<div class="bgc">
<div class="star"></div>
</div>
</body>

</html>

我在浏览器上更改translate的参数,发现元素移动与其朝向有关,而通过relative设置left和top后元素位置与坐标有关,上面代码中::before通过translate设置,::after通过relative设置,请问下这两个设置移动的方法有什么区别,在开发中更倾向于使用哪种,使用它的原因是什么?

写回答

1回答

好帮手慕久久

2021-04-29

同学你好,解答如下:

1、使用translate移动时,元素实际移动的方向与旋转轴方向有关,即同学理解的“朝向”。具体内容,可以参考如下链接:https://class.imooc.com/lesson/1618#mid=45692

http://img.mukewang.com/climg/608a6d1609e8cd8f08680301.jpg

2、translate与relative定位,都是相对于元素自身位置移动,只不过translate可以让元素在空间移动(3d移动),而relative不能空间移动。

实际开发中,可以根据如下内容来选择:

a)relative更多的时候是用来给“设置了absolute定位元素”做定位参照点,如下:

http://img.mukewang.com/climg/608a703b09bbca8e07520554.jpg

偶尔也会用它来移动元素自身的位置,比如这里的::after。

b)​translate更多的时候是用来做动画,比如元素有位置移动的动画,那么大多都用translate来完成。

3、我们这个练习中,before和after既可以使用translate移动位置,也可以使用relative移动位置,效果上没有差异,都可以。

祝学习愉快!

0

0 学习 · 15276 问题

查看课程