css 动画 transition和animation

本文参考:http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html

1. transition基本用法:

  

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body,
      html {
        height: 100%;
        width: 100%;
        padding: 0;
        margin: 0;
      }
      img {
        width: 50px;
        height: 50px;
        display: block;
        margin: auto;
        transition: 1s;  //如果不使用 transition 鼠标移到img 上面时是马上变化的,加上这个属性,变化就会持续一秒的过程
      }
      img:hover {
        width: 500px;
        height: 500px;
      }
    </style>
  </head>
  <body>
    <img src="./o_200404110308weixin_20191025171935.jpg" alt="" />
  </body>
</html>

 

 我们还可以指定 height 或者 width 等属性的变化

img {
        width: 50px;
        height: 50px;
        display: block;
        margin: auto;
        transition: 1s height;
      }

 

 这种写法表示只有 img 的height 有持续1s 的过度属性,如果想高度变化在变化宽度,可以指定delay参数

img {
        width: 50px;
        height: 50px;
        display: block;
        margin: auto;
        transition: 1s height, 1s 1s width;
      }

  transiton 的状态变化速度默认不是匀速的,而是逐渐放慢的,这叫做 ease

img {
        width: 50px;
        height: 50px;
        display: block;
        margin: auto;
        transition: 1s height, 1s 1s width ease;
      }

  除了可以取值ease 以外,还有其他模式

1. linear : 匀速
2.ease-in: 从慢到快
3.ease-out: 从快到慢
4.cubic-bezier函数:自定义速度模式

  cubic-bezier可以用工具网址:https://cubic-bezier.com/#.17,.67,.83,.67 来定制

img{
    transition: 1s height cubic-bezier(.83,.97,.05,1.44);
}

  使用transition 的注意事项:

    1.目前各大浏览器都已经支持无前缀的 transition ,所以可以很安全的使用

    2.不是所有css 属性都支持 transition

    3. transition 需要明确知道开始状态和结束状态的具体数值,也就是说如果开始或结束的设置是 height:auto,那么不会产生动画效果,类似的情况还有, display:none到 block background:url(foo,jpg)到url(bar.jpg)等等

transition 的局限:

    1. transiton 需要事件触发,所以没办法在网页加载时自动触发

    2.transition 是一次性的,不能重复发生,除非一再触发

    3.transition 只能有两个状态

2.Animation

  首先,css Anmiation 需要指定动画一个周期持续时间

.donghua {
        animation: 1s rainbow;
      }

  上面的代码表设计,给.donghua 这个class 添加一个 动画,我们需要定义动画的rainbow 动画效果

@keyframes rainbow {
        0% {
          background: red;
        }
        50% {
          background: orange;
        }
        100% {
          background: yellowgreen;
        }

  触发动画

<div id="div1"></div>
    <button onclick="donghua()">点我</button>
    <script>
      let div1 = document.getElementById('div1')
      function donghua() {
        div1.classList.add('donghua')
      }
    </script>

  默认情况下,动画只能播放一次,加入 infinite 关键可以让动画无限播放

.donghua {
        animation: 1s rainbow infinite;
      }

 也可以指定动画具体播放次数

.donghua {
        animation: 1s rainbow 3;
      }

  动画结束以后,会立即从结束状态跳回起始状态。如果想让动画保持在结束状态可以使用

animation-fill-mode属性。

.donghua {
        animation: 1s rainbow forwards;
      }

  animation-fill-mode 的其他值

1. none :默认值,回到动画没开始的状态
2.backwards : 让动画回到第一帧的状态
3.forwars : 结束状态

  有时,动画播放过程中突然停止,这时,默认跳回到动画开始时的状态,如果想要动画保持结束的位置,可以使用 animation-play-state属性

  

.donghua {
        animation: 1s rainbow infinite;
        animation-play-state: paused;
      }
      .donghua:hover {
        animation-play-state: running;
      }

  

(0)

相关推荐

  • 你可能不知道的10个CSS新功能(2021版)

    今天 以下文章来源于前端全栈开发者 ,作者张张 前端全栈开发者专注分享国内外前端技术.Web全栈开发技术精选文章,大前端技术资讯.优质教程.工具资源等,助力开发者成长. 多年来,CSS已经超越了背景颜 ...

  • 抽屉式少女风侧导航栏 可用于博客站

    效果图 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  • Vue过渡&动画

    大家好,我是VHotDog,热狗得小舔狗! 目录 概述 过渡 过渡类名 动画 transition属性介绍 name appear css type mode duration 注意 最近看一个项目源 ...

  • 网易新闻《娱乐圈画传》H5的动画技巧

    今天看到一个非常喜欢的H5,又是网易出品的!于是,我忍不住去研究了他的实现方式,有3个值得我们学习的地方,分别是逐帧动画,多种变换叠加的css动画,还有最亮的:画中画动画的实现方式,下文将分享技术实现 ...

  • [软技能] 第68天 js动画和css动画有什么区别?

    今日试题: js动画和css动画有什么区别? 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己). 前端面试每 ...

  • 深入理解CSS 动画

    通过CSS3 可以创建动画,它可以取代许多网页动画图像.Flash 动画以及 JavaScript实现的效果.要创建 CSS3 动画,需要学习 @keyframes 规则. @keyframes 规则 ...

  • javascript动画和CSS动画的区别

    一. javascript动画和css动画区别. css实现动画:animation transition transform等 javascript实现动画:setInterval  setTime ...

  • 集中力量回血!京都动画合并子公司Animation Do

    根据最新情报确认,于9月16日,日本京都动画株式会社,今日对其在大阪的子公司Animation Do进行了吸收合并,Animation Do的法人从此解散,以后动画制作由京都动画全权负责. Anima ...

  • CSS动画实例:涡旋

    设页面中有<div class=" vortex "></div>,若定义. vortex的样式规则和关键帧如下: .vortex { position: ...

  • CSS动画实例:圆与圆的碰撞

    在页面中放置9个<div class=" circle"></div>,定义每个.circle的样式规则,使得9个圆在页面中显示为半径依次相差20px的同心 ...

  • CSS动画基础:常用动画效果的设置

    设页面中有<div class="shape"></div>,若定义.shape的样式规则为: .shape { position: absolute; l ...

  • CSS动画实例:SierPinski地毯

    设页面中有<div class="shape"></div>,若定义.shape的样式规则为: .shape { width: 100px; height: ...

  • CSS动画实例:行星和卫星

    设页面中有<div class=" planet "></div>,用来绘制一个行星和卫星图形.这个图形包括三部分:行星.卫星和卫星旋转的轨道.定义. pl ...