所有通用样式必须抽成独立 CSS 文件用 <link> 引入,禁止在 <style> 标签或 style 属性中写样式;class 名需语义化、遵循 BEM 规范;语义化标签不可替代 <div>,且须配合显式样式声明。
<style> 标签里因为浏览器不会缓存 <style> 块,每次加载页面都得重新下载、解析整段 HTML;多个页面共用相同样式时,你得在每个文件里复制粘贴,改一处漏一处,UI 就崩了。
常见错误现象:<style> 里写了 .btn { color: #007bff; },结果另一个页面也加了一模一样的块,后来统一换主题色,只改了其中一个,线上就出现两种蓝色按钮。
main.css、components.css 等外部文件,用 <link rel="stylesheet" href="main.css"> 引入<style>,但必须加注释说明“仅本页有效”,且上线前评估是否值得单独维护<link> 必须放在 <head> 内,路径拼错(比如写成 ./css/base.css 少了个 styles/)或标签写成 <line>,样式会彻底不加载,且无任何报错提示style="..." 为什么是硬伤它不是语法错误,但会让样式无法响应媒体查询、伪类、继承,也无法被构建工具处理——Vite 或 Webpack 的 CSS 压缩插件对它完全失效。
常见错误现象:你在 main.css 里写了 .btn:hover { background: #0056b3; },但某个按钮用了 <button style="background: #007bff">,hover 效果根本触发不了;用 JS 批量操作时,element.style.backgroundColor 返回空字符串,因为值不在 style 属性里,而在 computed styles 中。
立即学习“前端免费学习笔记(深入)”;
style="margin: 10px;" 这类写法<circle cx="" cy="" r="">,但 x、y、r 必须经数字校验,不可拼接用户输入style="margin-left: 20px",改用原子类或封装组件,确保样式来源唯一起名不是为了编译通过,而是让人一眼看懂语义和用途。用 div1、box2 这类名,等于把结构逻辑藏进 CSS,后续改版根本不敢动——怕删错一个类名导致三处页面崩掉。
使用场景:一个商品卡片要复用于首页、搜索页、分类页,它的样式必须可预测、可继承、可组合。
product-card(块)、product-card__title(元素)、product-card--featured(修饰符)left-sidebar(布局一变就失效)、red-button(换主题色就得重命名)u-text-center(工具类)、js-dropdown-trigger(仅作 JS 钩子,不带样式)<p> 真只需要缩进 1em,就在 CSS 里统一定制 p:first-of-type { text-indent: 1em; },而不是加 class="first-paragraph"
浏览器对 <header>、<nav> 等标签默认只做块级渲染,毫无样式。写了语义标签 ≠ 页面自动美观;但没写,关掉 CSS 后页面就只剩一堆 <div> 堆叠,SEO 和无障碍支持直接掉线。
常见错误现象:用 <div class="header"> 包 logo 和导航,其实该用 <header>;把侧边栏链接塞进 <nav>,但 <nav> 应专指独立语义导航单元,页脚导航不属于它。
<main> 全页只能出现一次,代表用户核心关注内容,不能嵌套在 <section> 或 <article> 内<section> 需配有 <h2>–<h6> 标题,表达主题明确的文档分区,不是通用容器<aside> 只用于与主内容相关但可脱离存在的旁注(如术语解释、作者简介),非广告位或无关推荐