transition和transform

transition和transform
transition-property属性指定CSS属性的nametransition效果(transition效果时将会启动指定的CSS属性的变化),默认是all,width和height也可以。
提示:一个转场效果,通常会出现在当用户将鼠标悬停在一个元素上时。
transition-duration 属性规定完成过渡效果需要花费的时间(以秒或毫秒计),默认是0.
transition-delay 属性规定过渡效果何时开始(延迟过渡),值以秒或毫秒计,默认为0
ransition-timing-function属性指定切换效果的速度。此属性允许一个过渡效果,以改变其持续时间的速度。默认值:ease
transition和transform

<!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>
        div{width: 100px;height: 100px;background: red;transition-property: all/* 过渡属性 */;transition-duration: 1s;/* 过渡时间 */transition-delay: 2s;/* 延迟过渡 */transition-timing-function: ease;/* 规定速度效果的速度曲线 */}
        div:hover{width: 200px;height: 200px;background: blue;}
    </style>
</head>
<body>
    <div></div>
</body>
</html>

效果开始
transition和transform
鼠标移入时
transition和transform
transform位移与缩放
translate位移有translateX、translateY(通常是前面两个)、translateZ(3d)

translate(100px,100px) ;
<!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>
        .box1{width: 300px;height: 300px;border: 1px black solid;margin: 30px auto;}
        .box2{width: 100px;height: 100px;background: red;transition: 2s;}
        .box1:hover .box2{ transform: translate(100px,100px) 
                          /* transform: translateX(100px); */
                          }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>>
    </div>
</body>
</html>

开始前
transition和transform
scale缩放
值是一个比例值,正常大小是1,会已当前元素中心点进行缩放
scaleX、scaleY(通常是前面两个)、scaleZ(3d)
scale(2,2)=scale(2)
前面一个是宽,后面一个是高

 transform: scale(2);
<!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>
        .box1{width: 300px;height: 300px;border: 1px black solid;margin: 30px auto;}
        .box2{width: 100px;height: 100px;background: red;transition: 2s;}
        .box1:hover .box2{/* transform: translate(100px,100px) */
                          /* transform: translateX(100px); */
                          transform: scale(2);}
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>>
    </div>
</body>
</html>

rotate旋转
单位是角度deg
正值顺时针,负值逆时针
rotateX(3d)、rotateY(3d)、rotateZ(2d)常用

 transform: rotateZ(-45deg);
<!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>
        .box1{width: 300px;height: 300px;border: 1px black solid;margin: 30px auto;}
        .box2{width: 100px;height: 100px;background: red;transition: 2s;}
        .box1:hover .box2{/* transform: translate(100px,100px) */
                          /* transform: translateX(100px); */
                          /* transform: scale(2); */
                          transform: rotateZ(-45deg);
                          }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>>
    </div>
</body>
</html>

skew斜切
单位也是角度,正值向左倾斜,负值向右倾斜
skewX、skewY

 transform: skew(-30deg,-30deg);
<!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>
        .box1{width: 300px;height: 300px;border: 1px black solid;margin: 30px auto;}
        .box2{width: 100px;height: 100px;background: red;transition: 2s;}
        .box1:hover .box2{/* transform: translate(100px,100px) */
                          /* transform: translateX(100px); */
                          /* transform: scale(2); */
                          /* transform: rotateZ(-45deg); */
                          transform: skew(-30deg,-30deg);
                          }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>>
    </div>
</body>
</html>

transform的注意事项
1、变形操作不会影响到其他元素
2、变形操作只能添加给块元素,但是不能添加给内联元素
3、复合写法,可以添加多个变形的操作,执行是有顺序的,先执行后面的操作,在执行前面的操作,translate会受到rotate、scale、skew的影响

.box2{width: 100px;height: 100px;background: red;transform: translate(100px,0) scale(.5);}
        /* 先进行缩放 0.5,在位移100px */
        .box3{width: 100px;height: 100px;background: red;transform: scale(.5) translate(100px,0);}
        /* 受影响,先移动50px,在缩放0.5 ,如果前面是旋转角度,则先旋转设置的度数*/

transform-origin:基点的位置
transform-Origin属性允许您更改转换元素的位置。2D转换元素可以改变元素的X和Y轴。 3D转换元素,还可以更改元素的Z轴。

transform-origin: x-axis y-axis z-axis;

transition和transform
也可以用数值

transform-origin:100px 100px;

综合代码

<!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>
        .box1{width: 100px;height: 100px;background-color: red;}
        .box2{width: 100px;height: 100px;background: red;transform: translate(100px,0) scale(.5);}
        /* 先进行缩放 0.5,在位移100px */
        .box3{width: 100px;height: 100px;background: red;transform: scale(.5) translate(100px,0);}
        /* 受影响,先移动50px,在缩放0.5 ,如果前面是旋转角度,则先旋转设置的度数*/
        .box4{width: 100px;height: 100px;background: red;transition: 1s;transform-origin: center center;}
        .box4:hover{transform: rotate(180deg);}
    </style>
</head>
<body>
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>
    <div class="box4">4</div>
</body>
</html>

斜切的导航

<!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;}
        ul{list-style: none;}
        ul{width: 435px;margin: 30px auto;overflow: hidden;}
        ul li{float: left;width: 100px;height: 30px;background: red;color: white;line-height: 30px;text-align: center;margin: 0 5px;transform: skewX(-30deg);cursor: pointer;}
        ul li.active{background: blue;}
        ui li span{transform: skewX(30deg);display: block;}
        ul li:first-child{padding-left: 10px;margin-left: -10px;}
        ui li:last-child{padding-right: 20px;margin-right: -20px;}
    </style>
</head>
<body>
    <div>
        <ul>
            <li class="active"><span>首页</span></li>
            <li><span>关于我们</span></li>
            <li><span>联系方式</span></li>
            <li><span>招聘信息</span></li>
        </ul>
    </div>
</body>
</html>

transition和transform

上一篇:力扣50、Pow(x,n)


下一篇:Vue过渡&动画