• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

三、动画 -变形transform

武飞扬头像
gaoya7305
帮助1

目录:
1.变形transform定义
2.具体描述
3.用途
4.练习

一、变形transform定义

变形就是指通过CSS来改变元素的形状或位置

  • 变形不会影响到页面的布局
  • transform 用来设置元素的变形效果
  • 设置具体的值用translate()函数

二、具体描述

  - 平移:
    translateX() 沿着x轴方向平移
    translateY() 沿着y轴方向平移
    translateZ() 沿着z轴方向平移
  - 平移元素,百分比是相对于自身计算的

例子:

1.首先我们先做准备工作:在界面上画出两个方块。


  <style>
    .box1{
      width: 200px;
      height: 200px;
      background-color: goldenrod;
      margin: 0 auto;
      margin-top:100px;
    }
    .box2{
      width: 200px;
      height: 200px;
      background-color: orange;
      margin:0 auto;
    }
    /* 如果我们对box1变形,不会对box2产生影响,所有的位置任何属性都不会发生变化。
    有点像相对定位
    变形用transform:具体用函数translate()函数来设置
    */
  </style>

<body>
  
  <div class="box1"></div>
  <div class="box2"></div>

</body>

学新通

2.现在让box1往x轴右侧移动。

 .box1{
      width: 200px;
      height: 200px;
      background-color: green;
      margin: 0 auto;
      margin-top:100px;

      /* transform: translateX(100px); */
      /*平移元素,百分比是相对于自身计算的,所以可以看到移动的位置是往右移动自己的一个整个宽度*/
      transform: translateX(100%);
    }

三、用途

比如以前我们设置一个元素在整个界面居中,是如下设置:

 <style>
 .box3{
      width: 100px;
      height: 100px;
      background-color: red;
      position:absolute;
      top:0;
      left:0;
      right:0;
      bottom:0;
      margin: auto;

    }
  </style>
  
<body>
  <div class="box3"></div>
</body>
学新通
  • 上面这种写法有缺陷:如果这个元素,宽高是确定,可以这样写。

  • 现在如果我现在把宽高删掉,然后box3盒子里面有字。现在想box3的宽高,通过我设置的box3的文字内容来撑开。并且box3依然在屏幕的居中。

  • 如下这样写,你会发现box3撑满整个屏幕,因为你设置了 margin: auto; 所以它宽高也可以自动设置。当margin 和宽高 都auto,优先调整宽高

 <style>
 .box3{
      background-color: red;
      position:absolute;
      top:0;
      left:0;
      right:0;
      bottom:0;
      margin: auto;

    }
  </style>
  
<body>
  <div class="box3">22222</div>
</body>

  /* 
      这种居中方式,只适用于元素的大小确定
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      margin: auto; */

学新通

解决方法:

  • left:50%; 初始包含块的50%,在这里就是body,即box3先往左边便宜整个屏幕的一半,
  • 然后,我们在让aaa box3本身往左偏移一半,使得,box3的中心点,对齐,屏幕的中心点。能办到这点的就是用transform:translateX(-50%), 这里的-50% 是表示自身的一半。
  • 同理,水平居中,类似高度只需要控制top,和translateY.

代码:

 .box3{
      background-color:red;
      position:absolute;
      left: 50%;
      top: 50%;
      transform: translateX(-50%), translateY(-50%);
    }

学新通

四、练习

做一个下面的效果。
学新通

<style>

    body{
      background-color: silver;
    }
   
   .box4, .box5{
    width: 220px;
    height: 330px;
    background-color: #fff;
    margin:0 auto;
    /* 浮动,让两个box5水平排列 */
    float: left;
    /* 左右设置间距 */
    margin: 0 10px;

    /* hover移动动画,过渡下,让动画效果自然 */
    transition: all .3s;
   }

   .box4:hover, .box5:hover{
    transform: translateY(4px);
    box-shadow: 0 0 10px rgba(0, 0, 0, .3)
   }
  
  </style>
<body>

  <div class="box4"></div>
  <div class="box5"></div>


</body>

学新通

效果图:
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgehgkg
系列文章
更多 icon
同类精品
更多 icon
继续加载