变形 transform的一些属性

172 阅读1分钟

变形 transform(2D)

变形可以改变盒子在平面内的形态(位移、旋转、缩放等等)

位移 translate

translate可以让盒子沿着x轴或者y轴来移动。

语法:

  transform: translate(x, y);
  transform: translateX(x);
  transform: translateY(y);

他和margin的区别。

-   margin移动盒子**会**影响其余的盒子。把其他人挤走。
-   位移translate移动盒子**不会**影响其他的盒子。不脱标。

注意:

移动的时候可以写百分比,如果使用的百分比,移动的是盒子自身的宽度

   transform: translateX(100%);

应用- 盒子水平和垂直

可以让一个子盒子在父盒子里面水平和垂直居中。

  .inner {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 100px;
        height: 100px;
        background-color: skyblue;
        transform: translate(-50%, -50%);
      }
  ​
      /* .inner {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        margin: auto;
        width: 200px;
        height: 200px;
        background-color: skyblue;
      } */

开门大吉案例

效果:

  <!DOCTYPE html>
  <html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
  ​
      .box {
        overflow: hidden;
        width: 1366px;
        height: 600px;
        margin: 50px auto;
        background: url(./images/bg.jpg) no-repeat top center;
      }
  ​
      .box::before,
      .box::after {
        content: '';
        width: 50%;
        height: 600px;
        transition: .5s;
        background: url(./images/fm.jpg) no-repeat;
      }
  ​
      .box::before {
        float: left;
        background-color: pink;
      }
  ​
      .box::after {
        float: right;
        background-color: purple;
        /* 背景图片右对齐 */
        background-position: right center;
      }
  ​
      /* .box:hover 
      .box::before  */
      /* 鼠标经过 box 大盒子,  两个子盒子(before 和 after)来拉动 */
      .box:hover::before {
        /* 百分比是盒子自身的宽度 */
        transform: translateX(-100%);
      }
  ​
      .box:hover::after {
        /* 百分比是盒子自身的宽度 */
        transform: translateX(100%);
      }
    </style>
  </head><body>
    <div class="box"></div>
  </body></html>

旋转 rotate

旋转可以让盒子旋转角度。

语法:

  transform: rotate(45deg);    一定要写单位

如果是正度数,则是顺时针旋转

如果是负度数,则是逆时针旋转

设置中心点 transform-origin

设置旋转的中心点位置

    transform-origin: right bottom;

多形态变形小技巧

  1. 如果需要移动,也需要旋转,则一定要先写移动,后写旋转,css属性书写顺序影响代码执行。

       transform: translate(-50%, -50%) rotate(360deg);
    
  2. 注意,多个值之前用 空格隔开。

缩放 scale

语法:

  transform: scale(1.2);

他是用中心点来进行缩放的,不会影响其他的盒子。