css css 动画怎么做渐隐渐现_通过 opacity 和 keyframes 实现

酷明小哥_7574

酷明小哥_7574

2026-01-13

260人浏览

原创

opacity动画需配合transition或@keyframes才能生效;仅设opacity:0无过渡效果;@keyframes须定义起止关键帧,如0%、50%、100%;transition适合交互显隐,@keyframes适合完整序列;性能上opacity通常GPU加速,慎用will-change。

css css 动画怎么做渐隐渐现_通过 opacity 和 keyframes 实现

opacity 动画必须配合 transition 或 @keyframes 才生效

直接写 opacity: 0 不会自动变透明,也不会“渐”——CSS 不会自己插值。要产生过渡效果,得明确告诉浏览器“这个属性要平滑变化”。两种主流方式:transition 适合简单状态切换(比如 hover 显隐),@keyframes 更适合定义完整动画序列(比如淡入→停留→淡出)。

用 @keyframes 写淡入淡出必须定义至少两个关键帧

只写 from { opacity: 0 } 没用,浏览器不知道终点;只写 to { opacity: 1 } 也不行,起点不明确。标准写法是明确起止,或用百分比控制节奏:

@keyframes fadeInOut {
  0%   { opacity: 0; }
  50%  { opacity: 1; }
  100% { opacity: 0; }
}

然后通过 animation 属性挂载:

.box {
  animation: fadeInOut 2s ease-in-out infinite;
}
  • 2s 是整个循环耗时(0%→100%)
  • ease-in-out 让淡入淡出更自然,避免机械感
  • infinite 表示无限循环;去掉它就只播一次

opacity 动画性能差?别乱加 will-change

单纯改 opacity 是 CSS 合成属性,浏览器通常能走 GPU 加速,一般不需要优化。但如果你同时动了 transform 和 opacity,或者在低性能设备上卡顿,可以加:

.box {
  will-change: opacity;
}

不过要注意:

JSON Toolkit
JSON Toolkit

JSON文件多功能工具。支持格式化、验证、压缩、键排序及点记法路径查询。零依赖。

下载
  • will-change 是提示,不是魔法,滥用反而拖慢渲染
  • 不要对大量元素批量加,尤其在滚动区域里
  • 动画结束建议用 JS 移除该声明,或用 animationend 事件清理

IE 不支持 @keyframes?用 transition + 类名切换更稳妥

IE10+ 支持 @keyframes,但 IE9 及以下完全不认。如果还要兼容老 IE,推荐用 transition 配合 JS 切换类:

.fadeable {
  opacity: 1;
  transition: opacity 0.3s ease;
}
.fadeable.hidden {
  opacity: 0;
}

JS 控制:

element.classList.add('hidden'); // 渐隐
element.classList.remove('hidden'); // 渐显

这种方式兼容性好,逻辑清晰,也方便用 JS 精确控制时机(比如等图片加载完再淡入)。

实际项目中,@keyframes 写法简洁,适合装饰性动效;而 transition + 类控制更适合交互反馈。别为了“酷”堆复杂 keyframes,多数渐隐渐现,一行 transition 就够用。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

css js 浏览器 ssl

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

7067

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2908

6

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

5036

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1455

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1938

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

10583

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

1060

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

3204

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1689

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程