详解css3过渡属性transition

实现html页面动画的方式有很多种,而css3中的过渡属性transition`也是实现动画效果的高频工具。

transition 属性允许 CSS 的属性值在一定的时间区间内平滑地过渡。当元素的某个 CSS 属性值发生变化时,过渡效果可以避免属性值的突然改变,而是以动画的形式逐渐变化,从而增强用户体验。

transition动画

基本用法

transition 是一个简写属性,它可以一次性设置四个过渡相关的属性,四个属性值分别对应transition-property(指定要应用过渡的 CSS 属性)、transition-duration(定义过渡动画总时长)、transition-timing-function(定义动画速度曲线)、transition-delay(设置动画开始前的等待时间)。

 /*复合写法*/ 
transition: property duration timing-function delay;

参数1:transition-property

property:对应的是transition-property,指定要应用过渡效果的 CSS 属性名称。

可以是单个属性,如 widthopacity 等;也可以是多个属性,用逗号分隔,如 width, height;还可以使用 all 表示所有可过渡的属性。

参数2:transition-duration

duration:定义过渡效果持续的时间,以秒(s)或毫秒(ms)为单位。例如 2s 表示过渡持续 2 秒。

参数3:transition-timing-function

timing-function:指定过渡效果的时间曲线,即过渡的速度变化方式。常见的值有:

  • ease:默认值,过渡开始时较慢,然后加速,结束时又变慢。

  • linear:过渡速度保持一致。

  • ease-in:过渡开始时较慢,然后逐渐加速。

  • ease-out:过渡开始时较快,然后逐渐减速。

  • ease-in-out:过渡开始和结束时较慢,中间加速。

  • cubic-bezier(0.25, 0.1, 0.25, 1.0)(对应 ease)`:自定义贝塞尔曲线,通过四个数值来精确控制过渡的速度变化。

  • 阶梯函数:steps(5, jump-start)(用于离散动画)

参数4:transition-delay

delay:定义过渡效果开始前的延迟时间,同样以秒(s)或毫秒(ms)为单位。例如 1s 表示过渡将在 1 秒后开始。

  • 负值特性-500ms 会使动画从中途开始(需总时长 > 延迟绝对值)

运行原理

  1. 触发条件:必须由 状态变更 引发(如 :hover 伪类、JS 修改 class/样式)

  2. 插值计算:浏览器根据起始/结束值和持续时间,计算中间帧属性值

  3. 渲染管线

    • 触发 CSS 解析 → 样式重算 → 布局(Layout)→ 绘制(Paint)→ 合成(Composite)

    • 优化建议:优先使用 transform/opacity 触发合成层动画,避免重排

注意:父元素的 transition 设置不会继承到子元素;同一元素的相同属性被多个 transition 定义时,后定义的生效;当状态还原时,自动执行反向过渡(除非中途被中断)。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇