CSS3 2D转换 - 移动、旋转与缩放元素
CSS3 2D 转换 ¶
CSS3转换允许你对HTML元素进行移动、旋转、缩放和倾斜等操作,从而创建更加丰富的视觉效果。
浏览器支持 ¶
属性 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
transform | 4.0 1.0 -webkit- |
9.0 | 3.5 3.5 -moz- |
3.1 3.1 -webkit- |
10.5 |
CSS3 2D转换方法 ¶
CSS3 2D转换通过transform属性实现,支持以下转换方法:
- translate() - 移动元素
- rotate() - 旋转元素
- scale() - 缩放元素
- skew() - 倾斜元素
- matrix() - 组合多种转换
translate() 方法 ¶
translate()方法将元素从当前位置移动,根据给定的 left(X坐标)和 top(Y坐标)位置参数。
css
1div {
2 transform: translate(50px, 100px);
3 -ms-transform: translate(50px, 100px); /* IE 9 */
4 -webkit-transform: translate(50px, 100px); /* Safari and Chrome */
5}
这会把元素从左边移动50像素,从上面移动100像素。
你也可以只指定一个值,表示水平方向的移动:
css
1div {
2 transform: translate(50px);
3}
还可以单独使用translateX()和translateY()方法:
css
1div {
2 transform: translateX(30px) translateY(5px);
3}
rotate() 方法 ¶
rotate()方法用于顺时针旋转元素,负值为逆时针旋转。
css
1div {
2 transform: rotate(20deg);
3 -ms-transform: rotate(20deg); /* IE 9 */
4 -webkit-transform: rotate(20deg); /* Safari and Chrome */
5}
上面的例子将元素顺时针旋转20度。
scale() 方法 ¶
scale()方法用于调整元素的大小,可以放大或缩小。
css
1div {
2 transform: scale(2, 3);
3 -ms-transform: scale(2, 3); /* IE 9 */
4 -webkit-transform: scale(2, 3); /* Safari and Chrome */
5}
上面的例子把宽度转换为原始尺寸的2倍,把高度转换为原始高度的3倍。
如果只指定一个值,则宽度和高度同时调整:
css
1div {
2 transform: scale(2); /* 宽高都变为原来的2倍 */
3}
还可以单独使用scaleX()和scaleY()方法:
css
1div {
2 transform: scaleX(2) scaleY(3);
3}
skew() 方法 ¶
skew()方法用于沿X和Y轴倾斜元素。
css
1div {
2 transform: skew(30deg, 20deg);
3 -ms-transform: skew(30deg, 20deg); /* IE 9 */
4 -webkit-transform: skew(30deg, 20deg); /* Safari and Chrome */
5}
上面的例子将元素沿X轴倾斜30度,沿Y轴倾斜20度。
如果只指定一个值,则表示只沿X轴倾斜:
css
1div {
2 transform: skew(30deg);
3}
还可以单独使用skewX()和skewY()方法:
css
1div {
2 transform: skewX(30deg) skewY(20deg);
3}
matrix() 方法 ¶
matrix()方法能够组合所有2D转换方法,它需要六个参数,包含数学函数,用于旋转、缩放、移动以及倾斜元素。
css
1div {
2 transform: matrix(1, -0.3, 0, 1, 0, 0);
3 -ms-transform: matrix(1, -0.3, 0, 1, 0, 0); /* IE 9 */
4 -webkit-transform: matrix(1, -0.3, 0, 1, 0, 0); /* Safari and Chrome */
5}
组合转换 ¶
可以在一个transform属性中组合多个转换方法:
css
1div {
2 transform: translate(50px, 50px) rotate(45deg) scale(1.5);
3}
上面的例子先将元素移动,然后旋转,最后缩放。注意:转换的顺序很重要,不同的顺序会产生不同的效果。
transform-origin 属性 ¶
transform-origin属性允许你改变被转换元素的位置(原点)。
2D转换元素的默认原点是元素的中心(50%, 50%),你可以使用transform-origin属性改变这一点。
css
1div {
2 transform: rotate(45deg);
3 transform-origin: 20% 40%; /* 从元素的20%宽度和40%高度处开始转换 */
4}
实际应用示例 ¶
1. 创建悬停时旋转的图标 ¶
css
1.rotate-icon {
2 transition: transform 0.3s ease;
3}
4
5.rotate-icon:hover {
6 transform: rotate(90deg);
7}
2. 制作缩放效果的卡片 ¶
css
1.card {
2 transition: transform 0.3s;
3}
4
5.card:hover {
6 transform: scale(1.05);
7 box-shadow: 0 10px 20px rgba(0,0,0,0.2);
8}
3. 倾斜的徽章或标签 ¶
css
1.badge {
2 background: red;
3 color: white;
4 padding: 5px 10px;
5 transform: skew(-10deg);
6}
7
8.badge span {
9 display: inline-block;
10 transform: skew(10deg); /* 使文字保持不倾斜 */
11}
CSS3 2D转换属性总结 ¶
属性 | 描述 |
---|---|
transform | 向元素应用2D或3D转换 |
transform-origin | 允许改变被转换元素的位置 |