H5^Study

CSS变形动画

2019-03-22  本文已影响0人  Merbng

过渡动画

css3的特征之一,可以在不使用flash或JavaScript的情况下,当元素从一种样式变换成另一种样式时为元素添加效果。

transition

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div{
                width: 100px;
                height: 100px;
                background-color: pink;
                /* 多组属性用逗号分隔 */
                /* transition: width 0.5s ease 0s ,height 1s ease 0s ; */
                transition: all 10s;
                /* 过渡写到本身上,谁做过渡动画,就写到谁身上 */
            }
            div:hover{
                width: 800px;
                height: 800px;
            }
        </style>
    </head>
    <body>
        <div></div>
    </body>
</html>

2D变形(CSS3)transform

transformCSS3具有颠覆性的特征之一,可以实现元素的位移、旋转、倾斜、缩放、甚至支持矩阵方式,配合过渡,可以取代大量之前只能靠Flash才可以实现的效果。

 translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)
 translateX(x)仅水平方向移动(X轴移动)
 translateY(Y)仅垂直方向移动(Y轴移动)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div {
                width: 100px;
                height: 100px;
                background-color: pink;
                transition: all .6s;
            }

            div:hover {
                /*transform:位移, 第一个参数 x轴,第二个参数是y轴 */
                transform: translate(100px, 200px);
            }
        </style>
    </head>
    <body>
        <div></div>
    </body>
</html>

可以对元素进行水平和垂直方向的缩放

scale()的取值默认值是1,当值设置为0.010.99之间的任意值,作用是使一个元素缩小,而任何大于1.01的值是让元素方法

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div {
                width: 382px;
                height: 260px;
                border: 1px solid red;
                overflow: hidden;
            }

            div img {
                transition: all 1.6s;
            }

            div:hover img {
                transform: scale(1.1);
            }
        </style>
    </head>
    <body>
        <div><img src="images/1.jpg" alt=""></div>
    </body>
</html>

可以对元素进行旋转,正值为顺时针,负值为逆时针;
单位是deg

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div img {
                width: 100px;
                height: 100px;
                transition: all .6s;

            }

            div:hover img {
                transform: rotate(720deg);
            }
        </style>
    </head>
    <body>
        <div><img src="images/fengche.png"></div>
    </body>
</html>

transform-origin可以调整元素转换变形的原点

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div img {
                width: 100px;
                height: 100px;
                transition: all .6s;
                /* 设置旋转中心点为 右下角 */
                transform-origin: right bottom;

            }

            div:hover img {
                transform: rotate(720deg);
            }
        </style>
    </head>
    <body>
        <div><img src="images/fengche.png"></div>
    </body>
</html>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            div {
                width: 200px;
                height: 200px;
                margin: 130px auto;
                background-color: pink;
                transition: all .5s;
            }

            div:hover {
                transform: skew(-720deg, 720deg);
            }
        </style>
    </head>
    <body>
        <div></div>
    </body>
</html>

3D变形(CSS3)transform

2d x y
3d x y z

x左边是负的,右边是正的
y 上面是负的,下面是正的
z 里面是负的,外面是正的

transform:rotateX(180deg)
<!DOCTYPE html>
<html lang="zh">
    <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></title>
        <style type="text/css">
            body {
                perspective: 500px;
            }

            div {
                width: 224px;
                height: 224px;
                margin: 100px auto;
                position: relative;
            }

            div img {
                position: absolute;
                top: 0;
                left: 0;
                transition: all 1s;
            }

            div img:last-child {
                /* 当定义的元素不面向屏幕时 是否可见 */
                backface-visibility: hidden;
                z-index: 1;
            }

            div:hover img {
                transform: rotateY(180deg);
            }
        </style>
    </head>
    <body>
        <div>
            <img src="images/qian.svg" alt="">
            <img src="images/hou.svg" alt="">
        </div>
    </body>
</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            img {
                /* 动画名称 花费时间 运动曲线 何时开始 播放次数 是否反方向 */
                animation: heart 1s linear 0s infinite alternate;
            }

            div {
                width: 100px;
                height: 100px;
                background-color: pink;
                margin: 50px auto;
                animation: heart 1s ease 0s infinite alternate;
            }

            @keyframes heart {
                0% {
                    transform: scale(1.0);
                }

                50% {
                    transform: scale(1.3);
                }

                100% {
                    transform: scale(1.0);

                }
            }
        </style>
    </head>
    <body>
        <img src="images/heart.png">
        <div></div>
    </body>
</html>

参考地址

待续:2019年3月22日18:04:58
新增:2019年3月24日22:02:44

事例代码地址

上一篇 下一篇

猜你喜欢

热点阅读