• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

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

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

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

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

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

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

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

          <body =>

          <div =>

          <p =/p>

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

          </div>

          </body>

          這是段相當簡單的HTML代碼,但是具有相當的代表性.我們慢慢就能發現它為什么具有代表性了.

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

          {

          ;

          }

          { /* 11 */

          ;

          }

          { /* 12 */

          ;

          }

          { /* 2 */

          ;

          }

          { /* 102 */

          ;

          }

          {

          ;

          }

          { /* 3 */

          ;

          }

          { /* 13 */

          ;

          }

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

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

          1. 統計在這個選擇器里面ID選擇器的數目為a

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

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

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

          * /* 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 */

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

          是不是就這么簡單呢?

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

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

          {

          ;

          }

          { /* 11 */

          ;

          }

          { /* 11 */

          ;

          }

          {

          }

          { /* 111*/

          red

          }

          { /* 111 */

          green

          }

          {

          gray

          }

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

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

          {

          ;

          }

          { /* 11 */

          ;

          }

          { /* 11.5 */

          ;

          }

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

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

          {

          }

          { /* 111*/

          red

          }

          { /* 111 */

          green

          }

          {

          gray

          }

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

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

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

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

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

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

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

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

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

        PHP中關于類的定義04-01

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

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲国产午夜站香蕉 | 中文字幕精品视频在线看免费 | 日韩呦呦一区二区精品视频 | 亚洲h片在线观看播放 | 亚洲国产欧美在线观看 | 午夜福利久久野草 |