CSS过渡动画

Posted 2764150442

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS过渡动画相关的知识,希望对你有一定的参考价值。

css中实现动画有两种方式:transition过渡动画、 animation自定义动画。

transition 是 css3 新增的⼀个功能,可以实现元素不同状态间的平滑过渡(当元素从⼀个状态进⼊到另⼀个状态时),经常⽤来制作⼀些动画效果。

之前:元素 -> 元素:hover 状态直接切换,从开始状态到结束状态,瞬间完成,中间过程⼏乎不可⻅。

过渡:从开始状态到结束状态的中间过程可以查看

格式:

transition:过渡的属性 完成时间(s) 运动曲线 延迟时间

transition:all 3s(1s=1000ms) linear 0s;

transition 包含以下四个属性:

transition-property 过渡属性。如果希望所有的属性都发⽣过渡,就使⽤all

transition-duration 过渡的持续时间,单位是s或者ms

transition-timing-function 运动曲线。属性值取值:

ease 慢速开始,然后变快,然后慢速结束的过渡效果(默认 cubic-bezier(0.25,0.1,0.25,1))

linear 线性,以相同速度开始至结束的过渡效果(cubic-bezier(0,0,1,1))

ease-in 以慢速开始的过渡效果(cubic-bezier(0.42,0,1,1))

ease-out 慢速结束的过渡效果(cubic-bezier(0,0,0.58,1))

ease-in-out 以慢速开始和结束的过渡效果(cubic-bezier(0.42,0,0.58,1))

cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值,https://cubic-bezier.com/

transition-delay 默认是0,单位为s,过渡延迟。多⻓时间后再执⾏这个过渡动画。

transition-duration 这个属性需要首先设置,否则时长为 0,就不会产生过渡效果。

1.圆过渡

<style>
        .div-1
            width: 200px;
            height: 200px;
            border-radius: 50%;
            background-color: aqua;
            transition: all 3s;
            transition-timing-function: steps(3000,start);
        
        .div-1:hover
            background-color: rgb(21, 255, 0);
            width: 400px;
            height: 400px;
            border-radius: 0%;
        
    </style>

 

 

2.钟表秒针

<style>
        .clock
            background: url(img/clock.png);
            border-radius: 50%;
            width: 284px;
            height: 284px;
            position: relative;
        
        .clock::before
            content: "";
            width: 20px;
            height: 20px;
            background-color: black;
            transform: translate(-50%,-50%);
            top: 50%;
            left: 49.5%;
            position: absolute;
            border-radius: 50%;
        
        .clock::after
            content: "";
            width: 3px;
            height: 110px;
            background-color: black;
            position: absolute;
            left: 49.8%;
            top: 50%;
            transform: translate(-50%,-100%);
            border-radius: 70%;
            transform-origin: bottom;
            animation: rotate360 60s steps(60) infinite;
        
        @keyframes rotate360 
            to 
                transform: translate(-50%, -100%) rotate(360deg);
            
        
        /* .clock:hover::after
            transform: translateX(-50%) rotate(360deg);
         */
    </style>

 

 3.圆过渡动画

 <style>
        .div-1
            width: 300px;
            height: 300px;
            background-color: royalblue;
            border-radius: 50%;
            /* 应用动画 */
            animation-name: div_animate;    /*制定动画名称*/
            animation-duration: 2s;         /*动画持续时间*/
             animation-fill-mode: forwards; /*动画填充模式,forwards作用是将动画的样式停留在最后一个 */
            animation-delay: 2s;           /*动画延迟的时间,当值为负数时表示动画已经执行了多长时间*/
            animation-direction: alternate;     /*规定是否应该轮流反向播放动画。*/
            animation-iteration-count: infinite;    /*规定动画的速度曲线。*/
            animation-timing-function: cubic-bezier(.97,.08,.35,.72);/*速度*/
        

        /* 定义动画规则 */
        @keyframes div_animate
            from
                background-color:royalblue;
                margin-left: 0px;
            
            to
                background-color: brown;
                margin-left: 500px;
            
        
    </style>

 

如何触发css3过渡动画

参考技术A 不过要注意CSS3属性兼容性问题
平时我们直接使用transition动画一般是这样的
鼠标放置在div方块上触发动画效果(鼠标悬浮div上即可触发)
参考技术B 发生事件时就触发了

以上是关于CSS过渡动画的主要内容,如果未能解决你的问题,请参考以下文章

前端基础学习CSS过渡与动画

前端学习(18)~css3属性学习:动画详解

前端Css3那些事

CSS3实践之路:CSS3的过渡效果(transition)与动画(animation)

前端框架Vue学习的心得记录(过渡&动画)

如何触发css3过渡动画