内联样式优先级最高但可能被覆盖,原因包括拼写错误、!important干扰、JS动态修改、DOM未渲染或Shadow DOM隔离;应通过开发者工具检查element.style及Computed值定位问题。
内联样式(style 属性)的优先级确实高于外部样式表和内部 块中的规则,但“覆盖不了全局样式”通常不是优先级问题,而是以下几种常见原因导致的。
检查是否拼写错误、语法不合法,或者属性值被浏览器忽略。比如:
color: #fff; 写成 colour: #fff;(英式拼写无效)display: flex; 在不支持的旧版 IE 中可能不生效color: var(--text-color); 却没在 :root 或父级设该变量内联样式本身优先级最高(specificity = 1000),但有两点例外:
!important,会压过普通内联样式(除非内联也加 !important)style,比如 Vue/React 的响应式更新、或 jQuery 的 .css() 调用尤其在框架开发中很常见:
v-if 或 v-show 导致元素被销毁/隐藏,你加的 style 没挂到最终渲染节点上className 而非 style,或用 styled-components 等库生成了带哈希的类名,覆盖逻辑变了打开浏览器开发者工具(F12),选中元素,在
Styles 面板看:
element.style,且对应属性没被划掉(划掉=被更高优先级覆盖)!important:(慎用,仅调试或极简场景)
基本上就这些。内联样式不是万能钥匙,但只要定位准、写得对,99% 的覆盖问题都能解决。