资讯专栏INFORMATION COLUMN

css 动画

fish / 3260人阅读

摘要:动画首先要明白动画是一帧一帧的,由多个帧拼起来的动画此为动画样式中的关键帧,用关键帧来控制动画中的关键样式。将会遵守倒序还是正序的停留正序倒序总写按照上方顺序即可如下关键帧动画演示效果

css动画
首先要明白动画是一帧一帧的,由多个帧拼起来的动画

@keyframes

此为动画样式中的关键帧,用关键帧来控制css动画中的关键样式。相比较过渡更加的容易空值中间的部分
其指示了一个过程到另一个过程的过程
关键帧还具有名字,在应用的时候通过名字将其绑定。

如果关键帧重复定义,则根据最后一次定义为准

关键帧中的important会被略过

举个栗子

定义一个关键帧

@keyframes myFrames {
    form {
        background:#a7e5c6;
        width:100px;
    }

    to {
        width:90%;
        background:#c6c2a3;
    }
}

样式如下

这样就完成一次动画操作

分开定义

也可以进行分开定义
按照百分号进行定义,结果如下
关键帧如下

@keyframes myFrames {
    0% {
        width:200px;
        background:#827e64;
    }

    20% {
        width:400px;
        background:#86bece;
    }

    50% {
        height:600px;
        background:#af92aa;
    }

    90% {
        width:300px;
        height:400px;
        background:#698771;
    }
}

效果如下

animation

animation 同样是一个简写属性,相比较js写动画来说,css动画已经灰常简单了。

大概看了一点纯js动画,js动画核心在于对css样式的更改,外加一个重复时间对css不断的累加得到动画效果

下面依次说明

animation-name

和关键帧进行绑定
必须和关键帧的名字相同(废话)

animation-duration

指定一个动画的周期

负值的动画无效
举一个栗子
div {
    width:300px;
    height:400px;
    background:#698771;
    margin:auto;
    animation-name: myFrames;
    animation-duration:.9s;
}

/*关键帧*/
@keyframes myFrames {
    0% {
        width:200px;
        background:#827e64;
    }

    20% {
        width:400px;
        background:#86bece;
    }

    50% {
        height:600px;
        background:#af92aa;
    }

    90% {
        width:300px;
        height:400px;
        background:#698771;
    }
}

动画效果如下

animation-timing-function

定义一个动画的过程,类似于过渡的函数
同样的,有贝塞尔曲线等等
不在阐述

DevTools

谷歌浏览器的调试工具具有该方法,可以直接使用调试工具绘制贝塞尔曲线

animation-delay

定义动画的延迟

css如下

* {
    margin:0;
    padding:0;
}
body {
    position:relative;
}
div {
    width:400px;
    height:400px;
    position: absolute;
    left:0;
    top:0;
    bottom:0;
    margin:auto;
    background:#698771;
    border-radius:1000px;
    animation-name: myFrames;
    animation-duration:5s;
    animation-timing-function:cubic-bezier(0.785, 0.135, 0.15, 0.86);
    animation-delay:.9s;
}
div div {
    width:40px;
    height:40px;
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:#e8e3da;
    animation-name:myCenter;
}

/*关键帧*/
@keyframes myFrames {
    from {
        left:0;
    }

    to {
        left:70%;
    }
}

@keyframes myCenter {
    from {
        left:0;
    }

    to {
        left:0;
    }
}

html如下




    
    
    css动画


    

动画延迟了0.9秒

animation-iteration-count

定义动画的迭代次数infinite 为永远重复
数值为number

举栗子
animation-iteration-count:3;

动画重复播放3次。

animation-iteration-count:infinite;

动画永远重复播放

animation-direction

定义是否向前,向后,是否交替来回

如果想要重复的多次播放,必须有animation-iteration-count的值为infinity否则不会出现重复播放
normal

为一个每次重复重新的位置开始播放(每次都将重置为新状态,开始执行)

reverse

倒序播放

alternate

奇数正向播放
偶数倒序播放
即来回

alternate-reverse

奇数倒序播放
偶数正向播放
即倒来回

ps 动画具有继承的属性
animation-fill-mode forwards

将会保留最后一个关键帧,让其停留。

css

    /*animation-iteration-count:infinite;*/
    animation-direction:alternate;
    animation-fill-mode:forwards;
backwards

将会应用第一个动画值

和none的区别在于none使用默认的css样式,backwards将会使用动画的第一帧

    /*animation-iteration-count:infinite;*/
    animation-direction:alternate;
    animation-fill-mode:backwards;
ps 加上注释的原因是因为如果不加将会重复播放。
both

将会遵守倒序还是正序的停留

正序
    /*animation-iteration-count:infinite;*/
    animation-direction:normal;
    animation-fill-mode:both;

倒序

    /*animation-iteration-count:infinite;*/
    animation-direction:reverse;
    animation-fill-mode:both;
总写

按照上方顺序即可
css 如下

* {
    margin:0;
    padding:0;
}
body {
    position:relative;
}
div {
    width:400px;
    height:400px;
    position: absolute;
    left:0;
    top:0;
    bottom:0;
    margin:auto;
    background:#698771;
    border-radius:1000px;
    animation:myFrames 5s cubic-bezier(0.785, 0.135, 0.15, 0.86) .5s infinite alternate both;
}
div div {
    width:40px;
    height:40px;
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:#e8e3da;
    animation-name:myCenter;
}

/*关键帧*/
@keyframes myFrames {
    from {
        left:0;
    }

    to {
        left:70%;
    }
}

@keyframes myCenter {
    from {
        left:0;
    }

    to {
        left:0;
    }
}



    
    
    css动画


    

演示效果 https://melovemingming.gitee....

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/113688.html

相关文章

  • [译]10个惊人的CSS和JavaScript动画logos例子

    摘要:任天堂的最新游戏的控制台带有一个辉煌的动画,他所有的商业广告和这个示例都由创建。使用重新构建任天堂开关,同时使用动画化整个事物。 现在构建一个HTML和CSS的动画logo比以前容易多了,配合更新的JavaScript库可以进一步推动网络动画的发展。 看看这个画廊的10个令人难以置信的自定义动画logo,它们展示的是一些未知的实体或者世界知名品牌。 1、Flowers SVG Web...

    YFan 评论0 收藏0
  • JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能

    摘要:贝塞尔曲线贝塞尔曲线是应用于二维图形应用程序的数学曲线。通过调整控制点,贝塞尔曲线的形状会发生变化。让我们看看贝塞尔曲线的工作原理。贝塞尔曲线需要四个值,或者更准确地说它需要两对数字。每对描述立方贝塞尔曲线控制点的和坐标。 这是专门探索 JavaScript 及其所构建的组件的系列文章的第 13 篇。 如果你错过了前面的章节,可以在这里找到它们: JavaScript 是如何工作的:...

    darcrand 评论0 收藏0
  • JavaScript 工作原理之十三-CSS 和 JS 动画底层原理及如何优化其性能

    摘要:关键帧是用来通知浏览器在规定的时间点上应有的属性值然后填充空白。每一对数值内包含表示三次贝塞尔曲线控制点的和坐标。即使每个控制点的和值的微小差异都会输出完全不同的贝塞尔曲线。 原文请查阅这里,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland。 本系列持续更新中,Github 地址请查阅这里。 这是 JavaScript 工作原理的第十三章。 概述 正如你所知,动画在...

    0xE7A38A 评论0 收藏0
  • JavaScript 工作原理之十三-CSS 和 JS 动画底层原理及如何优化其性能

    摘要:关键帧是用来通知浏览器在规定的时间点上应有的属性值然后填充空白。每一对数值内包含表示三次贝塞尔曲线控制点的和坐标。即使每个控制点的和值的微小差异都会输出完全不同的贝塞尔曲线。 原文请查阅这里,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland。 本系列持续更新中,Github 地址请查阅这里。 这是 JavaScript 工作原理的第十三章。 概述 正如你所知,动画在...

    william 评论0 收藏0

发表评论

0条评论

fish

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<