css中的層疊性及權重的比較

来源:http://www.cnblogs.com/qiujianmei/archive/2017/07/14/7173011.html
-Advertisement-
Play Games

假如同一個標簽被多個選擇器選中,每個選擇器都設置了相同的樣式,瀏覽器中載入時這個樣式聽誰的? 不同選擇器設置的同一個樣式,只會選擇一個進行載入,不會疊加。 為瞭解決聽誰的問題,引入層疊性的概念。 層疊性:多個選擇器選中同一個標簽,設置同一個樣式,瀏覽器中載入時,不會載入所有的屬性值,挑選其中一個載入 ...


假如同一個標簽被多個選擇器選中,每個選擇器都設置了相同的樣式,瀏覽器中載入時這個樣式聽誰的?

不同選擇器設置的同一個樣式,只會選擇一個進行載入,不會疊加。

為瞭解決聽誰的問題,引入層疊性的概念。

層疊性:多個選擇器選中同一個標簽,設置同一個樣式,瀏覽器中載入時,不會載入所有的屬性值,挑選其中一個載入,其中一個值層疊/覆蓋掉其他的值。

 

要實現層疊或覆蓋就涉及到比較,下麵就是比較選擇器之間的權重的比較,權重的比較一共有兩種情況:1、選擇器選中了標簽;2、選擇器沒有選中標簽

首先說一下選擇器的權重:id>class>標簽>*(通配符);

①選擇器選中了標簽:

首先:如果都選中了標簽,比較選擇器權重。

選擇器有權重,權重大的會層疊權重小的。

計算權重:選擇器選擇的範圍越大,權重反而越小。id>class>標簽>*

方法:數選擇器的數量,先比較id個數→再比較class個數→最後比較標簽個數。

圖片中的標註順序(id個數,class個數,標簽個數)

頁面上顯示的樣式:

控制台顯示:

 

 

 

其次:如果選擇器權重相同,比較css中代碼的書寫順序。

css代碼有載入順序,從上往下載入,後面載入的會覆蓋前面載入。

 

 #box1 .box2 .box3 p{      (1,2,1)

    color: red;

  }

 .box1 #box2 .box3 p{    (1,2,1)

    color: green;

 }

 .box1 .box2 #box3 p{    (1,2,1) 書寫順序最後,層疊前面的樣式

    color: blue;

 }

 

 

②選擇器都沒有選中標簽:一部分樣式是可以繼承的。繼承誰的?

首先:比較每個選擇器選中的元素,距離目標元素p的在HTML中的距離,距離近的層疊距離遠的。簡稱就近原則。

 

 #box1{    

   color: red;

 }

  .box1 .box2{

    color: green;

  } 

  .box3{           選中的標簽距離p最近,繼承他的

    color: blue;

  }

 

 

其次:如果距離一樣近,比較權重,權重大的層疊權重小的。

 

 #box1 .box2 #box3{               (2,1,0)

    color: red;

  }

  .box1 #box2.box2 #box3{   (2,2,0)

    color: green;

  }

  .box1 .box2 #box3.box3{     (1,3,0)

    color: blue;

  }

 

 

再次:如果距離一樣近,選擇器權重一樣,看書寫順序。

 

 #box1 .box2 #box3.box3{

    color: red;

  }

  .box1 #box2.box2 #box3{

    color: green;

  }

  #box1.box1 #box2 .box3{

    color: blue;

  }

 

 

特殊的,在比較權重的過程中,有一個單詞important可以提升某一個樣式屬性的權重到最大。

比較就近原則,important對繼承性沒影響。

 

 #box1 .box2 #box3.box3{

    color: red;

  }

  #box3{

    color: green !important;    將這條屬性的權重提升的最大,與選擇器權重無關

  }

  #box1.box1 #box2 .box3{

    color: blue;

  }

 

 綜上所述:

 

最後:

移上比較都是以css內嵌式為例,在css的行內式、內嵌式和外鏈式中,權重:行內>內嵌=外鏈,顧名思義無論內嵌式或者外鏈式的權重多大都抵不過一句行內式!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Iterator介面也是Java集合框架的成員,與Collection和Map兩個系列的集合不一樣的是Collection和Map系列主要用於充當容器的作用,而Iterator正如其名字一樣是主要用於迭代訪問Collection集合中的元素,Iterator對象也被稱為迭代器。 Iterator介面 ...
  • 看的過程中,發現好多模式都用過,只是沒有總結,或者是不知道叫這個名字吧··· 這裡列舉結構型模式,適配器、橋接、過濾、組合、裝飾器、外觀、享元、代理, 適配器模式:將現存的對象放到新的環境裡邊去,但是介面不一樣,其實就是添加一個類把新的介面包裝一樣 之前公司的wcf服務端就是這種模式,公司很多部門, ...
  • 在開始autofac時,有必要先瞭解兩個關鍵詞:“控制反轉(IoC/Inverse Of Control)”與“依賴註入(DI/Dependence injection)”。 控制反轉(IoC):它把傳統上由程式代碼直接操控的對象的調用權交給容器,通過容器來實現對象組件的裝配和管理。 依賴註入(DI ...
  • 面試問到這個··答不出來就是沒有架構能力···這裡學習一下···面試的時候直接讓我說出26種設計模式··當時就懵逼了··我記得好像之前看的時候是23種的 還有3個是啥的··· 這裡先列出幾種創建型模式,工廠、抽象工廠、單例,建造者、原型,後續在更新 工廠模式:缺點是每增加一個類型就得增加一個工具類和 ...
  • 前面的話 每次寫HTML結構涉及到CSS命名時,都要掙扎一番。關於CSS命名的規範,市面上有不少,如OOCSS、SMACSS、BEM和MVCSS等。在這裡面最火的應該算BEM了。本文將詳細介紹CSS命名 主流命名 【BEM】 說起CSS命名,當然要提到BEM。BEM的意思就是B模塊(block)、E ...
  • 工作中遇到的功能點,覺得以後可以復用,就打算備一下咯 格式要求(例):On Friday, July 14, 2017 我的思路是用js就可以實現了,具體代碼如下: ...
  • 前面的話 由歷史原因及個人習慣引起的 DOM 結構、命名不統一,導致不同成員在維護同一頁面時,效率低下,迭代、維護成本極高。所以,使用統一的命名規範非常必要。本文將詳細介紹命名規範 目錄命名 1、項目文件夾:projectname 2、樣式文件夾:css 3、腳本文件夾:js 4、樣式類圖片文件夾: ...
  • 初始化本地git倉庫(創建新倉庫) git init 配置用戶名 git config --global user.name "xxx" 配置郵件 git config --global user.email "[email protected]" git status等命令自動著色 git config -- ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...