讲师中心 微信公众号

工具推荐

视频效率加速
立刻MV
立刻MV

低成本歌曲 MV、视频生成

Seko
Seko

AI短剧一键生成成片

Laper
Laper

剧本策划到成片协作

剧云
剧云

中文短剧剧本制作平台

css transition 不生效怎么办_检查是否写在初始状态上

梦浩君_6239

梦浩君_6239

发布时间:2026-01-03 16:09:58

|

624人浏览过

|

来源于php中文网

原创

transition必须写在初始状态而非伪类中,且仅对可过渡属性(如color、transform)生效;不可过渡属性(如display、height:auto)需用max-height等替代;多处声明时后写覆盖前写。

css transition 不生效怎么办_检查是否写在初始状态上

transition 必须写在「状态变化前」的元素上

很多情况下 transition 看似写了却没动画,根本原因是把它放在了 hover、active 等伪类里,而不是初始状态(即默认样式)中。浏览器只在属性值真正发生变化时触发动画,而如果 transition 是在变化后才声明的,它对本次变化无效。

  • ✅ 正确:在默认样式中声明 transition: background-color 0.3s;
  • ❌ 错误:只在 a:hover { transition: background-color 0.3s; } 里写
  • hover 时背景色变了,但因为 transition 没在初始状态定义,第一次变化无过渡效果

检查是否修改了「不可过渡」的 CSS 属性

不是所有 CSS 属性都支持 transition。比如 display、height(当值为 auto 时)、position、z-index 等,要么无法插值,要么浏览器不支持过渡。

  • 常见踩坑:transition: height 0.3s; + height: auto; → 不生效(auto 无法计算中间值)
  • 替代方案:用 max-height 或 transform: scaleY(),或配合 overflow: hidden
  • 可安全过渡的常用属性:color、background-color、opacity、transform、margin、padding 等

确认触发重绘的属性确实发生了变化

transition 只响应「计算值变化」。有些看似变化的操作其实不会触发重绘,比如:

CSS
CSS

CSS 官方网站入口。访问 W3C 的 CSS 页面,查看 CSS 标准、学习资料与工作组动态;CSS 是 Web 标准,无需下载安装。

下载
  • 仅修改 class 但新 class 没改变任何可过渡属性 → 无动画
  • JS 中连续设置同一属性(如先设 el.style.opacity = '0.5',再设 '1'),若未强制重排,浏览器可能合并为一次渲染
  • 使用 getComputedStyle 或读取 offsetHeight 可强制触发重排,让 transition 生效
el.style.opacity = '0.5';
// 强制重排,确保下一次变化能过渡
void el.offsetHeight;
el.style.opacity = '1';

检查是否被其他样式或继承覆盖

transition 是简写属性,容易被后续声明覆盖。尤其注意:

立即学习“前端免费学习笔记(深入)”;

  • 多个 transition 声明时,后写的会完全覆盖前面的(不是叠加)
  • 父元素设置了 transition: all 0.2s;,子元素又写了 transition: opacity 0.3s; → 子元素只过渡 opacity
  • 检查 computed styles 面板里 transition-property 的实际值,确认没被 reset 成 none
  • 某些 CSS 重置库(如 normalize.css)或框架(如 Tailwind 的 !important 工具类)可能静默覆盖
transition 是否生效,关键不在“有没有写”,而在“写在哪”“变的是什么”“浏览器认不认”。最容易忽略的是:过渡必须由「已声明 transition 的状态」发起变化,且变化目标必须是浏览器能插值的属性。

热门AI工具

更多
讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4576

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

326

2025.12.06

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

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

4956

2023.06.20

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

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

1455

2023.07.28

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

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

1918

2023.08.03

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

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

10503

2023.08.17

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

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

1060

2023.09.01

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

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

3164

2023.09.04

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

0

2026.11.12

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn