移动web变形,旋转,缩放,渐变

变形 transform(2D)

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

位移 translate

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

语法:

 /* 变形 transform-- 位移 translate*/
transform: translate(x, y);
transform: translateX(x);
transform: translateY(y);

问题:

  1. 它和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;
    } */
	/*分析:*/
    .inner { 
     width: 200px;
     height: 200px;
     background-color: purple; 
    /* 左侧全部充满 */
     margin-left: auto; 
    /* 右侧全部充满 */
     margin-right: auto; 
    /* margin: 0 auto; */
    }

旋转 rotate

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

语法:

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

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

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

  <style>
    img {
      width: 200px;
      transition: .5s;
    }

    img:hover {
      /* 旋转语法 */
      transform: rotate(-360deg);
    }

    .arr {
      width: 40px;
      height: 40px;
      border-right: 2px solid pink;
      border-bottom: 2px solid pink;
      transform: rotate(-45deg);
    }
  </style>
</head>

<body>
  <img src="./images/p4-tx3.png" alt="">
  <div class="arr"></div>
</body>

设置中心点 transform-origin

设置旋转的中心点位置

transform-origin: right bottom;
  <style>
    img {
      width: 200px;
      transition: .5s;
      /* 旋转中心点 */
      /* transform-origin: right bottom; */
    }
    img:hover {
      /* 旋转语法 */
      transform: rotate(-360deg);
    }
  </style>
</head>

<body>
  <img src="./images/p4-tx3.png" alt="">
</body>

多形态变形小技巧

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

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

    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        /* 1.1 设置大盒子基本样式 */
        .box {
            width: 800px;
            height: 200px;
            border: 2px solid pink;
            margin: 100px auto;
        }
        /* 1.2 设置过渡效果 */
        .box img {
            transition: all 10s;
        }
        /* 1.3 设置多重转换效果 */
        .box:hover img {
            /* 正确写法语法 各个属性值之间 使用空格隔开  */
            /* transform: translate() rotate(); */
            transform: translateX(600px) rotate(360deg);
            /* 如果需要移动,也需要旋转,则一定先写移动,后写旋转, css属性书写顺序影响代码执行。  */ 
            /* 旋转会改变网页元素的坐标轴方向 */
            /* transform: rotate(360deg) translateX(600px); */
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="./images/tyre.png" alt="" width="200">
    </div>
</body>

缩放 scale

语法:

transform: scale(1.2)

它比这宽度和高度最大的优势: 他是用中心点来进行缩放的,同样他不会影响其他的盒子。

  <style>
    /* img {
      width: 200px;
      transition: all .5s;
    }

    img:hover {
      width: 400px;
    } */
    img {
      display: block;
      margin: 100px auto;
      transition: all .6s;
    }

    img:hover {
      /* 以中心点往四周缩放 */
      transform: scale(1.5);
    }
  </style>
</head>

<body>
  <img src="./images/hero.jpeg" alt="">
</body>

渐变

线性渐变

基本语法:

      background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, .5))
  <style>
    .box {
      width: 300px;
      height: 300px;
      /* background-color: pink; */
      /* background-image: linear-gradient(red, green); */
      /* 默认的方向是 to bottom */
      background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5));
      /* background-image: linear-gradient(方向,颜色1, 颜色2...颜色n); */
      /* background-image: linear-gradient(to right, red, green, blue); */

    }
  </style>
</head>

<body>
  <div class="box"></div>
</body>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值