首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

CSS 樣式在外部文件失效、內聯卻生效的優先級覆蓋問題

     編輯:程式設計綜合問答

現象

外部 CSS 中 h1, body 樣式不生效,寫在 HTML <style> 或 style="" 卻生效。.one, .two 類選擇器正常。

根因:CSS 級聯優先級

來源優先級權重示例
內聯 style1000<h1 style="color:red">
ID 選擇器100#header
類/屬性/偽類10.one, [type=text], :hover
元素/偽元素1h1, body, ::before
通配符/繼承0*, body { color: inherit }

常見導致外部失效的場景

  1. 後載入的 CSS 覆蓋:HTML 中 <style> 在 <link> 之後,同權重後者勝出
  2. 更高優先級規則:外部 CSS 中存在 body { color: black !important } 或 #container h1 等高權重規則
  3. 瀏覽器緩存舊 CSS:強制刷新 Ctrl+F5 或加版本號 style.css?v=2
  4. 路徑錯誤/404:F12 Network 面板確認 CSS 是否 200 OK

排查步驟

  1. F12 Elements 面板 → Styles 面板,查看 h1 打勾/劃掉的規則來源
  2. 檢查是否有 !important 強制覆蓋
  3. 確認 <link rel="stylesheet"> 在 <style> 之前
  4. 臨時在外部 CSS 加 !important 測試:h1 { color: red !important } 若生效說明是優先級問題

最佳實踐

  • 避免 !important,改用更具體選擇器(如 .page-header h1)
  • 採用 BEM/ITCSS 等方法論控制優先級層級
  • 關鍵樣式內聯輸出(Critical CSS),非關鍵異步加載
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved