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

1. transition基本用法:

  

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Document</title>
  7. <style>
  8. body,
  9. html {
  10. height: 100%;
  11. width: 100%;
  12. padding: 0;
  13. margin: 0;
  14. }
  15. img {
  16. width: 50px;
  17. height: 50px;
  18. display: block;
  19. margin: auto;
  20. transition: 1s; //如果不使用 transition 鼠标移到img 上面时是马上变化的,加上这个属性,变化就会持续一秒的过程
  21. }
  22. img:hover {
  23. width: 500px;
  24. height: 500px;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <img src="./o_200404110308weixin_20191025171935.jpg" alt="" />
  30. </body>
  31. </html>

 

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

  1. img {
  2. width: 50px;
  3. height: 50px;
  4. display: block;
  5. margin: auto;
  6. transition: 1s height;
  7. }

 

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

  1. img {
  2. width: 50px;
  3. height: 50px;
  4. display: block;
  5. margin: auto;
  6. transition: 1s height, 1s 1s width;
  7. }

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

  1. img {
  2. width: 50px;
  3. height: 50px;
  4. display: block;
  5. margin: auto;
  6. transition: 1s height, 1s 1s width ease;
  7. }

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

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

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

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

  使用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 需要指定动画一个周期持续时间

  1. .donghua {
  2. animation: 1s rainbow;
  3. }

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

  1. @keyframes rainbow {
  2. 0% {
  3. background: red;
  4. }
  5. 50% {
  6. background: orange;
  7. }
  8. 100% {
  9. background: yellowgreen;
  10. }

  触发动画

  1. <div id="div1"></div>
  2. <button onclick="donghua()">点我</button>
  3. <script>
  4. let div1 = document.getElementById('div1')
  5. function donghua() {
  6. div1.classList.add('donghua')
  7. }
  8. </script>

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

  1. .donghua {
  2. animation: 1s rainbow infinite;
  3. }

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

  1. .donghua {
  2. animation: 1s rainbow 3;
  3. }

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

animation-fill-mode属性。

  1. .donghua {
  2. animation: 1s rainbow forwards;
  3. }

  animation-fill-mode 的其他值

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

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

  

  1. .donghua {
  2. animation: 1s rainbow infinite;
  3. animation-play-state: paused;
  4. }
  5. .donghua:hover {
  6. animation-play-state: running;
  7. }

  

css 动画 transition和animation的更多相关文章

  1. css动画(transition/transform/animation)

    在开发中,一个好的用户操作界面,总会夹杂着一些动画.css用对少的代码,来给用户最佳的体验感,下面我总结了一些css动画属性的使用方法及用例代码供大家参考,在不对的地方,希望大佬直接拍砖评论. 1 t ...

  2. css动画——transition和animation

    http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html 第一部分:CSS Transition 在CSS 3引 ...

  3. CSS动画-transition/animation

    HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...

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

    transition和animation都是CSS3新增的特性,使用时需要加内核 浏览器 内核名称 W3C   IE  -ms-  Chrome/Safari -webkit-   Firefoc - ...

  5. CSS动画效果之animation

    Y(^o^)Y css动画大乱弹之animation. 概述 什么是animation呢?在回答这个问题之前,先要说明什么叫做@keyframe(关键帧).@keyframe算是一个动画模板.在其中, ...

  6. css动画 transition

    比如输入框触交渐变 在原来的属性添加 : .form-control{-webkit-transition: all .3s; transition: all .3s;} .form-control: ...

  7. css3动画入门transition、animation

    css3动画 transition.animation CSS3 transition demo <!DOCTYPE html> <html> <head> < ...

  8. Css动画形式弹出遮罩层,内容区上下左右居中于不定宽高的容器中

    <!DOCTYPE html> <html> <head> </head> <body id="body"> <! ...

  9. css 动画 transform transition animation

    1.transform  transform 是通过在浏览器里面让网页元素 移动 旋转 透明 模糊 等方法来实现改变其外观的技术 -webkit-transform : translate(3em,0 ...

随机推荐

  1. Nuts.js01

    1.简介 Vue ssr框架.支持vue2,vue-router,vuex,vue server render, vue meta 2.基本使用: vue init nuxt-community/ko ...

  2. 前端每日实战:111# 视频演示如何用纯 CSS 创作一只艺术的鸭子

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/aaoveW 可交互视频 此视频是可 ...

  3. 关于Java序列化的问题你真的会吗?

    引言 在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现.但是在我看来,Java 序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输.在平时 ...

  4. linux 安装Mosquitto

    这篇博客讲的很好:https://www.cnblogs.com/chen1-kerr/p/7258487.html 此处简单摘抄部分内容 1.下载mosquitto安装包 源码地址:http://m ...

  5. Layabox enabled 脚本禁用 坑

    从unity入坑到Layabox,真的是一路踩坑啊,今天这个坑叫做 脚本禁用 enabled 问题一: 首先看官方文档 https://ldc2.layabox.com/doc/?nav=zh-ts- ...

  6. 什么是RPM

    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u ...

  7. flask 设置https请求 访问flask服务器

    学习过程中想要学教程中一样,做个假的微信公众号推送,不过去了微信开发文档怎么一直说需要https的请求(教学中没有说需要https,一直是http) 但是我的服务器只能使用http请求访问,如果硬是要 ...

  8. Redis使用指南

    原文链接 能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 设置过期时间.释放资源 使用Redis做K-V存储,一定要注意过期时间的把控,任何K- ...

  9. Python实现对excel的操作

    1.操作excel使用第三方库openpyxl安装:pip install openpyxy引入:import openpyxl2.常用简单操作1)打开excel文件获取工作簿wb = openpyx ...

  10. Element UI中的上传文件功能

    上传文件给后台: <el-upload style="display:inline-block" :limit=" class="upload-demo& ...