理解 CSS3 转换方法






4.73/5 (12投票s)
在这里,我们将学习 CSS3 的 translate 方法
引言
在本文中,我们将学习 CSS3 的 translate 方法。它是 CSS3 2D 和 3D 转换的一部分。此方法有五个变体,其中三个方法用于 2D 转换,另外两个方法用于 3D 转换。我们将学习以下五个 translate 方法的变体:
- 沿 X 轴平移 – translateX(K)
- 沿 Y 轴平移 – translateY(K)
- 沿 X/Y 轴平移 – translate(K1,K2)
- 沿 Z 轴平移 – translateZ(K)
- 沿 X/Y/Z 轴平移 – translate3d(K1,K2,K3)
让我们从 translate 方法的第一个变体开始讨论。
沿 X 轴平移 – translateX(K)
平移表示将元素移动一定距离。设该距离为 K。当元素沿 X 轴移动时,称为沿 X 轴平移。它类似于绝对定位,但左偏移量等于 K。 K 是以像素为单位的任何数字,它可以从负整数变化到正整数。
示例 1
<div id=“box-X”></div>
CSS
#box-X{
width:100px;
height:100px;
border:1px solid black;
position:absolute;
top:40px;
left:40px;
-webkit-transition:all 0.5s;
}
#box-X:hover{
-webkit-transform:translateX(200px);
}
在运行上面的示例时,我们将看到框沿 X 轴从原点 (0,0) 平移到 (200,0),即沿 X 轴平移 200px。 同样可以通过将 left 属性设置为 200px 来实现。 上面代码的输出如下:
沿 Y 轴平移 – translateY(K)
此方法变体用于沿 Y 轴平移元素。 元素的 X 坐标保持不变,但 Y 坐标变化量等于 K,其中 K 是任何整数。
示例 2
<div id=“box-X”></div>
CSS
#box-X{
width:100px;
height:100px;
border:1px solid black;
position:absolute;
top:40px;
left:40px;
-webkit-transition:all 0.5s;
}
#box-X:hover{
-webkit-transform:translateY(200px);
}
在执行上面的代码后,我们将看到框沿 Y 轴平移。 框将从 (0,0) 平移到 (0,200),即沿 Y 轴平移 200px。 通过将“top”属性设置为 200px,可以实现相同的效果。
沿 X/Y 轴平移 – translate(K1,K2)
此方法变体允许我们在 X-Y 平面上平移任何元素。 每个 X、Y 坐标可以彼此独立地平移,平移量分别为 K1 和 K2。
示例 3
CSS
#box-X{
width:100px;
height:100px;
border:2px solid red;
position:absolute;
top:40px;
left:40px;
-webkit-transition:all 0.5s;
}
#box-X:hover{
-webkit-transform:translate(200px,200px);
}
在执行上面的代码后,该元素将在 X-Y 平面上平移,沿 X 轴平移 200px,沿 Y 轴平移 200px。 这与将元素从 (0,0) 平移到 (200,200) 相同。 通过设置“left
”和“top
”属性都可以实现相同的效果。
沿 Z 轴平移 – translateZ(K)
此平移变体主要用于 3D 转换。 它使元素沿 Z 轴平移,平移量等于 K。为了使此效果可见,我们需要启用 CSS3 的 3D 设置。 这可以通过将“transform-style
”设置为“preserve-3d
”和透视距离来完成。
示例 4
CSS
body{
-webkit-perspective:1000px;
}
#box-X{
width:100px;
height:100px;
border:2px solid red;
position:absolute;
top:40px;
left:80px;
-webkit-transform-style:preserve-3d;
-webkit-transition:all 0.5s;
}
#box-X:hover{
-webkit-transform:translateZ(100px);
}
在执行上述代码后,我们将看到一个元素朝用户抬起。 这是因为该元素沿 Z 轴平移。元素在 Z 轴上的平移导致用户眼睛和元素之间的距离减小,而距离的这种减小导致该元素看起来比原来更大。 在上面的代码中,元素中心从 (0,0,0) 转移到 (0,0,50)。 这种效果无法通过使用绝对定位设置来实现。
沿 X/Y/Z 轴平移 – translate3d(K1,K2,K3)
这种平移变体也来自 3D 转换。 通过使用此方法,用户可以分别沿 X 轴、Y 轴和 Z 轴在 X-Y-Z 平面上平移元素,平移量分别等于 K1、K2 和 K3。 此效果要求您像我们在上一种方法中所做的那样在网页上启用 3D 效果。
示例 5
HTML
<div id=“camera”>
<div id=“stub1?></div>
<div id=“box-X”></div>
</div>
CSS
#camera{
-webkit-perspective:1000px;
}
#box-X{
-webkit-transform-style:preserve-3d;
width:100px;
height:100px;
border:2px solid red;
position:absolute;
top:40px;
left:40px;
background-color:rgba(50,50,50,0.5);
-webkit-transition:all 0.5s;
-webkit-transform:rotateX(85deg);
}
#stub1{
position:absolute;
top:40px;
left:40px;
width:200px;
height:200px;
border:1px solid black;
background-color:rgba(50,50,50,0.5);
-webkit-transform:rotateX(85deg);
}
#box-X:hover{
-webkit-transform:rotateX(85deg) translate3d(100px,50px,-50px);
}
在执行上面的代码后,box-x 坐标将从 (0,0,50) 平移到 (100,50,0)。 这种效果无法使用绝对定位或任何其他设置来实现。
演示列表
摘要
这就是本文的全部内容。 我希望您喜欢阅读这篇文章,并发现它很有用。 如果有任何疑问,请随时在评论区提问。
注意:上面的代码仅适用于 Chrome 浏览器。 由于 CSS3 是新的,并且其所有功能尚未实现,因此如果在不同的浏览器上测试代码,则需要使用特定于浏览器的前缀。 一些前缀代码如下:
- Chrome -webkit-
- Internet Explorer -ie-
- Firefox 浏览器 -moz-
归档于:CodeProject, CSS