CSS变形动画

作者: Merbng | 来源:发表于2019-03-22 18:06 被阅读0次

过渡动画

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

  • 过渡动画:
    是从一个状态渐渐的过渡到另一个状态
  • 帧动画:
    通过一帧一帧的画面按照固定顺序和速度播放,如电影胶片。

transition

  • 语法格式:
    transition:要过渡的属性 花费时间 运动曲线 何时开始;
    如果有多组属性,使用逗号隔开。
    1.transition-property:如果想要所以的属性都变化过渡,写一个all就可以
    2.transition-duration: 花费时间,单位是秒s 比如:0.5s 这个单位是必须写的,ms 毫秒
    3.transition-timing-function:运动曲线 默认是ease
    4.transition-delay:规定过渡效果何时开始,默认是0
<!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可以为负值
 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(x,y)

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

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>

  • 旋转 rotate(deg)

可以对元素进行旋转,正值为顺时针,负值为逆时针;
单位是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>

  • 倾斜 skew(deg,deg)
    可以使元素一定的进度进行倾斜,可以为负值,第二个参数不写默认为0
<!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 里面是负的,外面是正的

  • rotateX()
    沿着x 立体旋转
transform:rotateX(180deg)
  • rotateY()
    沿着Y轴旋转
  • rotateZ()
    沿着Z轴旋转
  • 透视(perspective)
    原理:
    -- 近大远小
    -- 浏览器透视:把近大远小的所有图像,透视在屏幕上
    --perspective:视距,表示视点距离屏幕的长短,视点,用于模拟透视时人眼的位置。
    设置给父元素,作用于所有用于3D转换的子元素
  • translateX()
    仅水平方向移动(x轴移动)
  • translateZ
  • backface-visibility
    定义当元素不面向屏幕时是否可见
<!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>
  • @keyframes 动画名称{
    from{开始位置 } 0%
    to{ 结束} 100%
    }
<!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

事例代码地址

相关文章

  • CSS变形、过渡和动画

    CSS实战手册 CSS变形,过渡和动画 1 变形 transform 1.1 旋转:rotate transfor...

  • web前端入门到实战:CSS3中的变形(transform)、过

    css3中制作动画的几个属性:css3中的变形(transform)、过渡(transition)、动画(anim...

  • web前端入门到实战:CSS3中的变形(transform)、过

    css3中制作动画的几个属性:css3中的变形(transform)、过渡(transition)、动画(anim...

  • 2019-06-04

    css基础知识 变形: 元素旋转 变形中心点: 背面可见 图片翻转: animation动画: 定义动画名称及形式...

  • 2017-06-18

    css3中变形与动画(上) 1.Animation 动画定义animation动画2.Animation动画播放 ...

  • CSS变形动画

    过渡动画 css3的特征之一,可以在不使用flash或JavaScript的情况下,当元素从一种样式变换成另一种样...

  • 无标题文章

    css3中变形与动画(下) 1.设置动画播放次数: animation-iteration-count 定义动画的...

  • css3之Transform

    要说css3最受大家欢迎的新功能,无外乎动画、变形、媒体查询和弹性布局。今天来说说css3的变形—transfor...

  • 前端(八)

    条件Hack css过渡动画 transition运动曲线 图片文字遮罩 变形 元素旋转

  • CSS3知识概要之变形与动画(三)

    从这里开始,我们去开始学习CSS3的变形和动画 变形--旋转 rotate() 旋转rotate()函数通过指定的...

网友评论

    本文标题:CSS变形动画

    本文链接:https://www.haomeiwen.com/subject/lkbrvqtx.html