好的!把“样式的内联式”和“外部 CSS 文件”放在一起对比,看法一目了然。下面先给定义,再说特点/适用范围,最后结合你刚做的 Banner 例子说明取舍。
style 属性里。
例:<section class="hero" style="background-image:url('images/banner.jpg')">…</section>.css 文件,用 <link rel="stylesheet" href="styles/hero.css"> 引入。
例:styles/hero.css 里写 .hero { … }| 维度 | 内联式(style="") | 外部 CSS(.css 文件) |
|---|---|---|
| 优先级 | 很高(仅次于 !important 规则);容易覆盖其它样式 |
常规优先级,遵循选择器权重与加载顺序 |
| 复用/维护 | 不可复用,样式散落在 HTML 中,维护成本高 | 高复用、结构清晰,便于协作与代码审查 |
| 功能完整性 | 不能写选择器、伪类、媒体查询,也不便写复杂效果 | 能写选择器/伪类/@media/变量等,支持体系化设计 |
| 性能与缓存 | 跟随 HTML,每次都要下载;HTML 变大 | CSS 独立文件,可缓存,首屏后更省流量 |
| 修改速度 | 改动单个元素最快 | 改动需进 CSS 文件,但能“一处改,处处生效” |
| 动态性 | 适合 JS 临时注入/覆盖某个元素样式 | 适合稳定规则;JS 也可切换类名来触发样式 |
| 可读性/可维护 | 容易“边写边乱”,难统一规范 | 符合“结构-表现分离”,最利于长期维护 |
你现在有两种写法:
A. 背景图用内联式(我们刚做的版本)
<section class="hero" style="background-image:url('images/banner.jpg')">
…
</section>
<picture> 或把逻辑放回 CSS 的 @media。B. 背景图写在 CSS(之前的版本)
/* styles/hero.css */
.hero--spring { background-image:url('../images/spring.jpg'); }
.hero--autumn { background-image:url('../images/autumn.jpg'); }
<!-- HTML -->
<section class="hero hero--spring">…</section>
@media 切大/小图、用变量统一控制遮罩/高度;命名清晰、可复用。