CSS3 中的 2D 变换

1.transform 设置对象的转换。

取值:none | <transform-function>

(1)none:无转换

(2)2D Transform Functions:

  • translate():指定对象的2D translation(2D平移)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认值为0
  • translatex():指定对象X轴(水平方向)的平移
  • translatey():指定对象Y轴(垂直方向)的平移
  • rotate():指定对象的2D rotation(2D旋转),需先有 <' transform-origin '> 属性的定义
  • scale():指定对象的2D scale(2D缩放)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认取第一个参数的值
  • scalex():指定对象X轴的(水平方向)缩放
  • scaley():指定对象Y轴的(垂直方向)缩放
  • skew():指定对象skew transformation(斜切扭曲)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认值为0
  • skewx():指定对象X轴的(水平方向)扭曲
  • skewy():指定对象Y轴的(垂直方向)扭曲
  • matrix():以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a,b,c,d,e,f]变换矩阵

(3)3D Transform Functions:

  • translate3d():指定对象的3D位移。第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略
  • translatez():指定对象Z轴的平移
  • rotate3d():指定对象的3D旋转角度,其中前3个参数分别表示旋转的方向x,y,z,第4个参数表示旋转的角度,参数不允许省略
  • rotatex():指定对象在x轴上的旋转角度
  • rotatey():指定对象在y轴上的旋转角度
  • rotatez():指定对象在z轴上的旋转角度
  • scale3d():指定对象的3D缩放。第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略
  • scalez():指定对象的z轴缩放
  • perspective():指定透视距离
  • matrix3d():以一个4x4矩阵的形式指定一个3D变换

示例代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>2D transform</title>
  <style>
    body{
      padding: 100px 0;
    }
    h2{
      line-height: 30px;
      font-size:16px;
      font-family:'Microsoft Yahei';
      width:860px;
      margin: 30px auto 20px;
      border-bottom:1px #ccc solid;
    }
    .test{
      width:900px;
      margin:0 auto 20px;
      list-style:none;
    }
    .test:after{
      content: '';
      clear: both;
      display: block;
      overflow: hidden;
    }
    .test li{
      float:left;
      margin:0 20px 30px 0;
      border:1px solid #000;
    }
    .test li p{
      width:300px;
      height:100px;
      margin:0 0 50px;
      background:#369;
      color: #fff;
    }
    .test .matrix{
      transform:matrix(0,1,1,1,10,10);
    }
    .test .translate p{
      transform:translate(10px,10px);
    }
    .test .translate2 p{
      transform:translate(-10px,-10px);
    }
    .test .translateX p{
      transform:translateX(20px);
    }
    .test .translate3 p{
      transform:translate(20px);
    }
    .test .translateY p{
      transform:translateY(10px);
    }
    .test .translate4 p{
      transform:translate(0,10px);
    }
    .test .rotate{
      transform:rotate(-5deg);
    }
    .test .rotate2{
      transform:rotate(5deg);
    }
    .test .scale{
      transform:scale(.8);
    }
    .test .scale2{
      transform:scale(1.2);
    }
    .test .skew{
      transform:skew(-5deg);
    }
    .test .skew2{
      transform:skew(-5deg,-5deg);
    }
  </style>
</head>
<body>
  <h2>矩阵变换:matrix()</h2>
  <ul class="test">
    <li class="matrix">
      <p>transform:matrix(0,1,1,1,10,10)</p>
    </li>
  </ul>

  <h2>平移:translate(), translateX(), translateY()</h2>
  <ul class="test">
    <li class="translate">
      <p>transform:translate(5%,10px)</p>
    </li>
    <li class="translate2">
      <p>transform:translate(-10px,-10px)</p>
    </li>
    <li class="translateX">
      <p>transform:translateX(20px)</p>
    </li>
    <li class="translate3">
      <p>transform:translate(20px)</p>
    </li>
    <li class="translateY">
      <p>transform:translateY(10px)</p>
    </li>
    <li class="translate4">
      <p>transform:translate(0,10px)</p>
    </li>
  </ul>

  <h2>旋转:rotate()</h2>
  <ul class="test">
    <li class="rotate">
      <p>transform:rotate(-15deg)</p>
    </li>
    <li class="rotate2">
      <p>transform:rotate(15deg)</p>
    </li>
  </ul>

  <h2>缩放:scale()</h2>
  <ul class="test">
    <li class="scale">
      <p>transform:scale(.8)</p>
    </li>
    <li class="scale2">
      <p>transform:scale(1.2)</p>
    </li>
  </ul>

  <h2>扭曲:skew()</h2>
  <ul class="test">
    <li class="skew">
      <p>transform:skew(-5deg)</p>
    </li>
    <li class="skew2">
      <p>transform:skew(-5deg,-5deg)</p>
    </li>
  </ul>
</body>
</html>

代码效果截图:

11.png

2.transform-origin 设置对象以某个原点进行转换(变换时的原点坐标)。

取值:[ <percentage> | <length> | left | center | right ] [ <percentage> | <length> | top | center | bottom ]

默认值50% 50%,效果等同于center center。

该属性提供2个参数值,如果提供两个,第一个用于横坐标,第二个用于纵坐标。如果只提供一个,该值将用于横坐标;纵坐标将默认为50%。

(1)<percentage>:用百分比指定坐标值。可以为负值。

(2)<length>:用长度值指定坐标值。可以为负值。

  • left:指定原点的横坐标为left
  • center:指定原点的横坐标为center
  • right:指定原点的横坐标为right
  • top:指定原点的纵坐标为top
  • center:指定原点的纵坐标为center
  • bottom:指定原点的纵坐标为bottom
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值