总结css3的transform属性

168 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情

前言

昨天讲了css3的animation属性,css3的动画了解了,css3还有2个跟动画搭边的属性,转换(transform)和过渡(transition)。

今天先来学习这个转换属性。

transform

这个是叫转换。分成有2d转换和3d转换。可以对元素做移动,放大/缩小,旋转,倾斜等操作。

移动(translate)

可以对元素进行移动。默认向右,向下,向屏幕的方向移动。

有2d移动,x轴和y轴
和3d移动,x轴,y轴,z轴。
也可以只针对某一轴,比如x轴。

translateX(X) // 只x轴方向移动
translate(x,y) // 在x轴和y轴方向移动,如果只传一个值,代表是x轴。
translate3d(x,y,z) // 在x轴和y轴,z轴方向移动

可以是负数,负数代表着反方向移动。

<style>
  .box {
    width: 200px;
    height: 200px;
    background-color: skyblue;
  }
  .move {
    width: 100px;
    height: 100px;
    border: 1px solid red;
    transform: translate(50px, 0px);
    background-color: pink;
  }
</style>
<div class="box">
  <div class="move"></div>
</div>

往右移动50px

image.png

scale(放大缩小)

放大元素或者缩小元素,默认是1,不放大缩小。

可以对元素的x轴/y轴/z轴放大缩小。

scaleX(0.8) // x轴方向缩小到0.8倍
scale(1.2, 2) // x轴方向放大1.2倍,y轴放大2倍
scale(2) // x轴和y轴放大2倍,只传一个值,另一个轴也是该值。
scale3d(1, 1, 1.5) // Z轴放大1.5倍(不能省略x,y)

x轴和y轴放大2倍

image.png

rotate(旋转)

把元素按照传入的度数旋转,单位是deg

如果是2d旋转,度数是正的则顺时针旋转,负数则逆时针旋转。

如果是3d旋转,则可以对x轴,y轴,z轴进行旋转。

rotate3d(x,y,z,deg) x,y,z如果为0,则代表那个轴不旋转,为1则那个轴旋转。

rotate(30deg) // 顺时针转动30度
rotate(-45deg) // 逆时针转动45度
rotate3d(1,0,0,30deg)  // 3d旋转 绕x轴旋转30deg
rotateY(30deg)  // 3d旋转 绕y轴旋转30deg

顺时针转动30度

image.png

绕x轴旋转45deg
image.png

skew(倾斜)

把元素按照传入的角度倾斜。

可以按照x轴,y轴倾斜。 这个只有x轴,y轴的倾斜。正角度x轴是逆时针,y轴是顺时针。

skew(30deg) // x轴倾斜30deg
skewX(-45deg) // x轴倾斜30deg

x轴倾斜30deg

image.png

y轴倾斜30deg
image.png

如果要实现3d转换,需要在父元素加上perspective属性。不然没有效果。

这个perspective属性是针对3d转换的,定义3d元素距视图的距离。

    .box {
      margin: 100px;
      width: 200px;
      height: 200px;
      background-color: skyblue;
      perspective: 200px;
    }

    .scale {
      width: 100px;
      height: 100px;
      border: 1px solid red;
      transform: translate3d(0, 0, 100px);
      background-color: pink;
    }
    <div class="box">
      <div class="scale"></div>
    </div>

从视觉来看,离我们更近了,所以更大了。

image.png

transform-origin

默认转换都是以元素的中心为支点,进行转换的,所以它的默认值是50% 50% 50%,对应着x轴,y轴,z轴。

x轴可选值有left,right,center, 百分比,具体px值。
y轴可选值有top,bottom,center, 百分比,具体px值。 z轴可选值有具体px值。