You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何@import放在主CSS文件末尾时无法生效?

问题与解析

问题描述

最小可复现示例

index.html

<head> <link rel="stylesheet" href="main.css"> </head>
<p> This is a test </p>

main.css

p {color:purple;}
@import "background.css";

background.css

p {background-color:yellow;}

在Vivaldi和Firefox中测试时,background.css中的样式并未生效。但调换main.css中的两行顺序,先写@import "background.css";再写p {color:purple;},样式就能正常生效。为什么顺序会有影响?无论顺序如何,background.css的样式都应该被应用才对?

注:此问题与另外两个问题描述情况相同,但那些回答仅建议在HTML文件中按正确顺序导入,并未触及核心原因。

核心原因

这是因为CSS规范强制要求@import规则必须放在所有样式规则之前。

当你把@import写在p {color:purple;}这类样式规则之后时,浏览器会直接忽略这条导入语句——它根本不会去加载background.css,自然也就不会应用里面的样式。只有当@import位于所有样式规则的前面时,浏览器才会正常解析并加载对应的外部样式文件。

简单说,@import在CSS文件里有严格的位置限制,不能放在样式规则之后,否则会被判定为无效语句直接跳过。


内容的提问来源于stack exchange,提问作者Mike Pierce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:50:17