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"  />
  </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;
      }

  

原文地址:https://www.cnblogs.com/SuperBrother/p/12642130.html

时间: 2024-10-12 05:04:30

css 动画 transition和animation的相关文章

css动画(transition/transform/animation)

在开发中,一个好的用户操作界面,总会夹杂着一些动画.css用对少的代码,来给用户最佳的体验感,下面我总结了一些css动画属性的使用方法及用例代码供大家参考,在不对的地方,希望大佬直接拍砖评论. 1 transition(过渡) 使用语法: transition: property duration timing-function delay; 参数: (1) property(设置过渡效果的css属性名称):none | all | property.none表示没有属性获得过渡效果:all表示

css动画——transition和animation

http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html 第一部分:CSS Transition 在CSS 3引入Transition(过渡)这个概念之前,CSS是没有时间轴的.也就是说,所有的状态变化,都是即时完成. delay的真正意义在于,它指定了动画发生的顺序,使得多个不同的transition可以连在一起,形成复杂效果. transition的使用注意 (1)目前,各大浏览器(包括IE 10)都已经

关于CSS的Transition,Transform,Animation

Transform:DOM变形 Transition:某个DOM或者多个DOM变化,只有两个关键帧. Animation:生成动画,可以多个关键帧 Transition 需要触发的时事件. Animation不需要 关于CSS的Transition,Transform,Animation,布布扣,bubuko.com

CSS动画效果之animation

Y(^o^)Y css动画大乱弹之animation. 概述 什么是animation呢?在回答这个问题之前,先要说明什么叫做@keyframe(关键帧).@keyframe算是一个动画模板.在其中,可以使用百分比,如从0%到100%的任意值,分别在每个百分比中,加上不同的属性,从而让元素达到一种在不断变化的动画效果.这和我们制作flash动画一样,我们只需设计几个关键帧,系统就能生成动画啦! 一个@keyframe例子: 1 /*定义关键帧动画*/ 2 @keyframes myframe {

CSS3动画 transition和animation的用法和区别

transition和animation都是CSS3新增的特性,使用时需要加内核 浏览器 内核名称 W3C   IE  -ms-  Chrome/Safari -webkit-   Firefoc -moz-   opera -o-  区别: transition是过度属性,需要用户自行触发,触发时间比如:点击,鼠标悬浮等 animation是动画属性,其不需要用户触发,网页加载完成后自动执行 使用: transation{过度属性 过度时间 动画类型 延迟时间} -o-transation{过

关于css3里的transition和animation

** 做了很久的项目了,transition和animation两个css3属性经常被用到实际项目当中,想想把它整理出来.如下: 1:先介绍transition: a,在做项目中经常会遇见这样的情景,比如一个按钮,当鼠标移入进去的时候改变按钮背景颜色以及字体颜色,此时我们一般会这么做: .btn{width: 80px;height: 25px;border: 1px solid #333;color:#333;text-align: center;line-height: 25px;} .bt

CSS动画 animation与transition

一.区分容易混淆的几个属性和值 先区分一下css中的几个属性:animation(动画).transition(过渡).transform(变形).translate(移动). CSS3中的transform(变形)属性用于内联元素和块级元素,可以旋转.扭曲.缩放.移动元素,它的属性值有以下五个:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix: transform(变形)是CSS3中的元素的属性,而translate只是transform的一个属性

[ css 过渡和动画 transition animation ] 过渡和动画听课笔记记录

HTML5 过渡: 过渡:给改变添加过程; 要实现这一点就必须规定两项条件: 1.规定要将效果添加到那个css的属性上(那个属性需要进行改变); 2.规定效果的时长; 3.transition:属性 时长(要将多个属性进行过渡设置,中间以逗号进行区分,如果要是将整体属性全部变化可以省略属性而直接设置时间就好了); CSS过渡属性: 1.transition-property:指定过渡或动态模拟的css属性; 1.1 none:没有指定任何样式; 1.2 all:给所有样式进行更改(通常我们不写就

css——动画(transform, transition, animation)

transform 静态属性,一旦写进style里面,会立即显示作用,无任何变化过程.(类似于left, right, top, bottom这类属性) 主要用来做元素的变形 改变元素样式的属性主要有以下五个 translate3d(x,y,z) 用来控制元素在页面的三轴上的位置 rotate(10deg) 是用来控制元素旋转角度(度deg) skewx,y 制作斜度,2d里面创建3d透视图的必备属性 scale3d(2, 1.5, -6) 用来放大缩小效果,属性是比值 matrix3d css