現象:樣式規則存在,但 HTML 元素未命中。
/* CSS */
li.red { color: red; } /* 後代選擇器:僅匹配 內部 class="red" 的元素 */
/* HTML */
內容 /* 不匹配!div 不是 li */
- 匹配
排查方法:F12 開發者工具 → Elements → Styles,查看該元素是否應用了目標規則,或被劃線覆蓋。檢查選擇器拼寫、層級關係、偽類狀態。
現象:修改 CSS 後刷新頁面無變化。
解決:
.box {
color: red
background: blue; /* 缺少分號,導致此規則及後續解析失敗 */
}
排查:開發者工具 Console 面板查看 CSS 解析錯誤提示;使用 CSS Lint 工具預檢。
服務器返回 `Content-Type: text/plain` 或 `text/html` 而非 `text/css`,瀏覽器拒絕應用。
→ 檢查 Nginx/Apache/Tomcat 靜態資源映射配置,確保 `.css` 映射為 `text/css`。
CSS 文件保存為 UTF-8 但無 BOM,或聲明 `@charset "gbk"` 與實際編碼不符,導致中文選擇器/內容屬性亂碼失效。
→ 統一項目編碼為 UTF-8 (無 BOM),CSS 文件首行聲明 `@charset "UTF-8";`。
Vue/React CSS Modules、Shadow DOM、CSS-in-JS 等方案可能導致類名哈希化,原始類名不再生效。
→ 檢查構建產物類名,使用對應框架的綁定語法 (`:class="$style.red"`)。
1. F12 Network 確認 CSS 文件 200 OK、Content-Type=text/css
↓ 否 → 檢查路徑/服務器配置
2. F12 Elements 選中目標元素,Styles 面板搜索類名
↓ 無規則 → 選擇器寫錯/HTML 結構不匹配
↓ 有規則但劃線 → 優先級被覆蓋/被繼承屬性覆蓋
↓ 有規則無劃線但無效果 → 屬性寫錯/瀏覽器不支持/繼承問題
3. Console 面板檢查 CSS 解析錯誤
4. 強制刷新/禁用緩存/加版本號驗證緩存問題
CSS 引入無效果 90% 以上是選擇器不匹配或緩存問題。善用瀏覽器開發者工具「Elements → Styles」面板是定位根因的最快路徑。系統化排查:網絡 → 選擇器 → 優先級 → 語法 → 編碼 → 服務器配置。