快捷搜索:  汽车  科技

css3动画详解:CSS3过渡属性让你的动画更流畅

css3动画详解:CSS3过渡属性让你的动画更流畅transition:60s; transition-timing-function:steps(60 start); 步进时钟transition-delay设置延迟过渡时间选项 说明 steps(n start) 设置n个时间点,第一时间点变化状态 steps(n end) 设置n个时间点,第一时间点初始状态 step-start 等于steps(1 start),可以理解为从下一步开始 step-end 等于steps(1 end),可以理解为从当前步开始<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width init

动画属性


不是所有属性都拥有过渡效果,可支持过度效果的属性

css3动画详解:CSS3过渡属性让你的动画更流畅(1)


我们看到边框实线 -> 虚线 这个状态是没有过渡效果的

transition-property


设置元素某些属性应用过渡效果

  • all 默认所有属性都发生过渡效果
  • 多个属性设置使用 逗号分隔

css3动画详解:CSS3过渡属性让你的动画更流畅(2)

transitionend


用于控制过渡结束后执行的JS事件

css3动画详解:CSS3过渡属性让你的动画更流畅(3)

<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width initial-scale=1.0"> <title>transitionend</title> <style> *{ padding:0; margin:0; } body{ display:flex; justify-content:center; align-items:center; width:100vw; height:100vh; background:#2c3e50; } main{ width:100px; height:100px; } div{ position:relative; width:100px; height:100px; } div::before{ content:"Mondo"; color:#fff; width:100px; height:100px; position:absolute; display:flex; justify-content:center; align-items:center; background:#1abc9c; border-radius:10px; transition-duration:2s; } div::after{ content:"imondo.cn"; color:#fff; position:absolute; bottom:-40px; transform:translateX(-1000px)skew(45deg); transition:.5s; } div:hover::before{ transform:rotate(360deg); } div.move::after{ transform:translateX(0)skew(0); } </style> </head> <body> <main> <div></div> </main> <script> document.querySelector('div').addEventListener('transitionend' function(e){ console.log(e) this.classList.add('move') }) </script> </body> </html> transition-duration


用于设置过渡时间,需要注意以下几点

  • 可使用单位为 ms 毫秒、s 秒
  • 默认值为 0s 不产生过渡效果
  • 一个值时,所有属性使用同样的时间
  • 二个值时,奇数属性使用第一个,偶数属性使用第二个
  • 变化属性数量大于时间数量时,后面的属性再从第一个时间开始重复使用

transition-property:background width height transform; transition-duration:200ms 2s;

css3动画详解:CSS3过渡属性让你的动画更流畅(4)

transition-timing-function


设置过渡效果的速度,控制运行轨迹
可以参考https://cubic-bezier.com/网站体验效果

steps


步进速度,步进帧动画过渡效果;过渡使用阶梯形式呈现

选项 说明 steps(n start) 设置n个时间点,第一时间点变化状态 steps(n end) 设置n个时间点,第一时间点初始状态 step-start 等于steps(1 start),可以理解为从下一步开始 step-end 等于steps(1 end),可以理解为从当前步开始

transition:60s; transition-timing-function:steps(60 start); 步进时钟

css3动画详解:CSS3过渡属性让你的动画更流畅(5)

transition-delay


设置延迟过渡时间

  • 默认为0s即立刻开始过渡
  • 值可以为负数
  • 变化属性数量大于时间数量时,后面的属性再从第一个时间开始重复使用

css3动画详解:CSS3过渡属性让你的动画更流畅(6)

<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width initial-scale=1.0"> <title>纯CSS图片切换</title> <style> p{ width:150px; height:150px; background:#2980b9; border-radius:50%; transition-property:width height background border-radius; transition-delay:0ms 2s 4s 6s; transition-duration:2s; } p:hover{ width:250px; height:250px; border-radius:0; background:#16a085; } </style> </head> <body> <p></p> </body> </html> transition


统一设置过渡规则

  • 必须设置过渡时间
  • 延迟时间放在逗号或结束前

transition:widthlinear2s heightease2s2s backgroundease-in2s4s border-radius2s6s; 红心点赞

css3动画详解:CSS3过渡属性让你的动画更流畅(7)

<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width initial-scale=1.0"> <title>红心点赞</title> <linkhref="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"rel="stylesheet"> <style> *{ margin:0; padding:0; } body{ display:flex; justify-content:center; align-items:center; width:100vw; height:100vh; background:#34495e; } div{ position:relative; display:flex; } i.fa{ position:absolute; font-size:100px; transition:1s; color:#95a5a6; } div.hearti.fa:nth-of-type(1){ transform:scale(3); opacity:0; color:#e74c3c; } div.hearti.fa:nth-of-type(2){ transform:scale(1); opacity:1; color:#e74c3c; } </style> </head> <body> <div> <iclass="fafa-heart"></i> <iclass="fafa-heart"></i> </div> <script> document.querySelector('div').addEventListener('click' function(){ if(this.classList.contains('heart')){ this.classList.remove('heart') }else{ this.classList.add('heart') } }) </script> </body> </html>

猜您喜欢: