<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 詳細解答CSS中相同元素不同結構重復定義的問題

    時間:2024-10-16 01:33:43 CSS 我要投稿
    • 相關推薦

    詳細解答CSS中相同元素不同結構重復定義的問題

      CSS選擇器是構建CSS的基礎.在為大型,復雜嵌套的(x)HTML文檔進行樣式定義時,很有可能會遇上針對相同元素在不同結構下的重復定義的問題,這個問題也是前端開發(fā)人員相對頭痛的問題。

      在這種情況 發(fā)生的前提下,瀏覽器在渲染頁面文件時,會按照一定規(guī)則進行優(yōu)先級排列,然后根據這個優(yōu)先級權重對發(fā)生狀況的元素進行處理。

      而這個瀏覽器遵循的規(guī)則是什么呢?下面請看小編為你細細解答。

      讓我們來看一段簡單的HTML代碼:

      <body =>

      <div =>

      <p =/p>

      <em ="em" "wrap"></em>

      </div>

      </body>

      這是段相當簡單的HTML代碼,但是具有相當?shù)拇硇?我們慢慢就能發(fā)現(xiàn)它為什么具有代表性了.

      首先我們來加上一點簡單的CSS聲明:

      {

      ;

      }

      { /* 11 */

      ;

      }

      { /* 12 */

      ;

      }

      { /* 2 */

      ;

      }

      { /* 102 */

      ;

      }

      {

      ;

      }

      { /* 3 */

      ;

      }

      { /* 13 */

      ;

      }

      大家來猜猜看結果中的"For Testing2"是什么顏色的呢?嗯...不浪費大家眼神了,結果是的,奇怪嗎?有疑問嗎?大家有沒有注意到我在CSS中加入的注釋中的數(shù)字?這是什么呢?這是CSS選擇器特性權重值.

      id選擇器,class類選擇器,HTML標簽選擇器,這3種選擇器就是構成CSS繼承的組件,瀏覽器在渲染它們的時候是有優(yōu)先權的.而這個優(yōu)先權在一定情況下是可以計算出來的.

      1. 統(tǒng)計在這個選擇器里面ID選擇器的數(shù)目為a

      2. 統(tǒng)計在這個選擇器里面類的選擇器,屬性選擇器和偽類為b

      3. 統(tǒng)計在這個選擇器里面的元素名稱數(shù)目為c,其中要忽略偽元素.串聯(lián)三個數(shù)字為a-b-c,得到特征值.

      串連這3個數(shù)字就可以得到特征值.

      * /* a=0 b=0 c=0 -> 特征值 = 0 */

      li /* a=0 b=0 c=1 -> 特征值 = 1 */

      ul li /* a=0 b=0 c=2 -> 特征值 = 2 */

      ul ol+li /* a=0 b=0 c=3 -> 特征值 = 3 */

      h1 + *[rel=up] /* a=0 b=1 c=1 -> 特征值 = 11 */

      ul ol li.red /* a=0 b=1 c=3 -> 特征值 = 13 */

      li.red.level /* a=0 b=2 c=1 -> 特征值 = 21 */

      #x34y /* a=1 b=0 c=0 -> 特征值 = 100 */

      #s12:not(FOO) /* a=1 b=0 c=1 -> 特征值 = 101 */

      這樣就能明白上面代碼中的數(shù)字的含義了.

      是不是就這么簡單呢?

      應該還有耐人尋味的地方.

      比如說我給出這樣一組CSS來定義上面的HTML:

      {

      ;

      }

      { /* 11 */

      ;

      }

      { /* 11 */

      ;

      }

      {

      }

      { /* 111*/

      red

      }

      { /* 111 */

      green

      }

      {

      gray

      }

      這里的前3條權重值都是11,后4條聲明的權重值都是111,那我們應該怎么判斷呢?

      首先,我們看這條聲明最終定義的是哪個元素.前3條都是定義這個元素的,不難從中總結出一條規(guī)律:在聲明中聲明了元素的HTML標簽的,權重又可以增加0.5,那么根據上面的例子,權重值就會變成:

      {

      ;

      }

      { /* 11 */

      ;

      }

      { /* 11.5 */

      ;

      }

      可以發(fā)現(xiàn)第1條和第3條的權重值還是一樣的,我們試著交換一下他們的位置,天哪,它們之間是可以相互覆蓋的.對,那就證明它們是真正的同層(level)聲明.

      那同樣的后4條聲明也可以這樣分析了:

      {

      }

      { /* 111*/

      red

      }

      { /* 111 */

      green

      }

      {

      gray

      }

      在這里的第1條和第4條權重值相同,第2條和第3條權重值相同.經交換實驗也能發(fā)現(xiàn)這個數(shù)值的正確性,之前的權重計算公式曾經出現(xiàn)在Eric的書中以及W3的CSS3規(guī)范草稿中。

    【詳細解答CSS中相同元素不同結構重復定義的問題】相關文章:

    CSS閉合浮動元素教程04-01

    英語寫作中的重組結構的問題03-18

    英語寫作中的“結構重組”問題05-23

    健身中的常見問題解答03-04

    AutoCAD不同塊中如何將相同東西快速刪除?03-20

    關于英語寫作中的結構重組問題01-10

    催乳師工作中的實用問題解答02-27

    PHP中關于類的定義04-01

    用友U8應用中的常見問題解答07-19

    主站蜘蛛池模板: 国产精品久久精品| 99久久久国产精品免费无卡顿| 亚洲国产精品自产在线播放 | 久久91精品久久91综合| 亚洲精品无码专区久久久| 国产日韩久久久精品影院首页 | 久久96国产精品久久久| 亚洲国产一二三精品无码 | AAA级久久久精品无码区| 99在线精品免费视频九九视| 国内精品久久久久伊人av| 精品无码久久久久久午夜| 日本精品一区二区三区在线视频| 久久国产乱子伦精品免费强| 国产麻豆精品久久一二三| 野狼第一精品社区| 精品少妇一区二区三区在线 | 亚洲精品少妇30p| 蜜桃麻豆www久久国产精品 | 精品国产亚洲男女在线线电影| 国产精品久久久久影院色| 精品久久久久中文字幕日本 | 久久99精品久久久久久水蜜桃 | 国产l精品国产亚洲区在线观看| 99re6在线视频精品免费| 人妻精品久久久久中文字幕69| 一区二区国产精品| 欧美成人精品网站播放| 精品久人妻去按摩店被黑人按中出| 91精品国产91热久久久久福利| 国产精品莉莉欧美自在线线| 国产精品久久久久jk制服| 日产精品久久久一区二区| 少妇伦子伦精品无码STYLES| 亚洲精品无码久久一线| 亚洲综合无码精品一区二区三区| 亚洲精品成人网久久久久久| 四虎永久在线精品国产馆V视影院| 精品国内自产拍在线观看 | 日本精品久久久久久久久免费| 久久久久久久久久久免费精品|