1. 程式人生 > >CSS3新特性—transform

CSS3新特性—transform

str -i lte port htm div 縮放 跟著 mar

1、2D轉換

2D轉換包括四個方面:位移,縮放,旋轉,傾斜

位移【讓元素移動位置】 
      transform: translate(100px,100px);
      備註:
          1. 如果只設置一個值,那麽代表在水平方向移動
          2. 如果設置兩個值,那麽第一個值代表水平方向,第二個值代表垂直方向
          3. 可以設置負數,負數代表相反方向
          4. 通過translate移動元素位置的時候,是相對元素自己本身,可以設置百分比。

縮放【放大縮小】:
      transform: scale(2,1);

      備註:
         1. 如果設置的是一個值,那麽代表當前元素的寬度和高度同時放大或縮小對應的倍數。
         2. 如果設置兩個值,第一個值代表寬度的放大或縮小,第二值代表高度的放大或縮小。
         3. 設置的值不能帶任何單位,不能設置負數。
         4. 設置大於0 小於1的值,代表縮小。
         5. 給父元素設置縮放的時候不會影響子元素。
旋轉: transform: rotate(角度) 備註: 1. 角度的單位是deg 例如: 30deg 2. 如果設置的是正數那麽代表順時針旋轉,反之逆時針旋轉。 傾斜: transform: skew(45deg,45deg); 備註: 1. 如果設置一個值,代表當前元素是沿著x軸,讓y軸傾斜了 2. 如果設置兩個值,第一個值沿著x軸,讓y軸傾斜,第二值代表沿著y軸,x軸發生傾斜。
 註意:
     1. transform屬於復合屬性。如果設置多個值的時候,要使用復合寫法
: transform: translate(length, length) rotate() scale(0, 0) skew(angle, angle); 2. 默認元素在旋轉或者傾斜的時候,是按照中心點進行旋轉的。

     如果希望改變旋轉點(旋轉軸),通過transform-origin 設置即可。
取值可以是具體的方位名稱: left | right | bottom | top
或者可以設置具體值: transform-origin: right bottom; transform-origin: right 200px;

2、2D轉化案例

鼠標懸浮在盒子上,盒子向右移動:<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>

    div {
      width: 100px;
      height: 100px;
      background-color: red;
    // 過渡屬性
transition: transform 1s linear; }

div:hover { // 設置向正方向移動400px transform: translate(400px,0); } </style> </head> <body> <div></div> </body> </html>

技術分享圖片

3、3D轉換

位移
     1. transfrom: translateX(值);   正數代表向右移動,負數代表向左移動
     2. transform:translateY(值);   正數代表向下移動,負數代表向上移動
     3. transform:transalteZ(值);   正數代表朝向我們自己移動,負數代表背向移動
      備註:
          1. 3D位移也是相當元素自己。
          2. 3D位移也可以設置百分比

旋轉
     1. transform: rotateX(值deg);
     2. transform: rotateY(值deg);
     3. transform: rotateZ(值deg);

     遵循左手法則,坐標軸也跟著旋轉

縮放
      1. transform: scaleX(2)  
      2. transform: scaleY(2)

透視:
1. 要給父元素設置perspective;
2. perspective的取值可以影響我們視覺上的效果差。【600-1000推薦設置的值】


轉換為立體效果:
transform-style: preserve-3d;

4、3D轉換案例

倆個盒子重疊在一起,鼠標懸浮在上面,一個盒子旋轉45°。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            margin: 100px auto;
            position: relative;
            transform-style: preserve-3d;
        }
        .box > div{
            width: 100%;
            height: 100%;
            position: absolute;
        }
        .box .front{
            background: red;
        }
        .box .back{
            background: green;
            /* transform: skew(0,0) rotateX(0deg); */
            transition: all 1s linear;
        }
        .box .back:hover {
            transform: skew(45deg,0) rotateX(45deg);
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="front"></div>
        <div class="back"></div>
    </div>
</body>
</html>

技術分享圖片

CSS3新特性—transform