<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文檔進行樣式定義時,很有可能會遇上針對相同元素在不同結構下的重復定義的問題,這個問題也是前端開發人員相對頭痛的問題。

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

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

      讓我們來看一段簡單的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

    主站蜘蛛池模板: 国产成人精品日本亚洲直接| 国产精品国产三级国产潘金莲| 久久久久国产精品| 四虎成人精品国产永久免费无码| 99国产精品久久久久久久成人热| 日本精品自产拍在线观看中文| 日韩麻豆国产精品欧美| 漂亮人妻被黑人久久精品| 精品伦精品一区二区三区视频| 精品国产第1页| 精品一区二区三区东京热 | 亚洲国产精品第一区二区三区| 国内精品久久久久| 欧洲成人午夜精品无码区久久 | 亚洲精品成人av在线| 国内精品伊人久久久久AV影院 | 国产精品你懂的在线播放| 99精品免费视品| 久久99精品久久久久久动态图 | 欧美高清在线精品一区| 国产精品丝袜黑色高跟鞋| 亚洲日韩精品一区二区三区| 精品国产毛片一区二区无码 | 国产精品美脚玉足脚交欧美| 亚洲日韩国产精品第一页一区| 久久久久一级精品亚洲国产成人综合AV区| 3级黄性日本午夜精品| 国产精品影音先锋| 97久久超碰成人精品网站| 老汉精品免费AV在线播放| 亚洲精品国产精品乱码不卡| 久久久久无码精品国产app| 精品欧美一区二区在线看片| 国产91在线精品| 国产成人精品久久亚洲| 99RE8这里有精品热视频| 亚洲国产精品久久久久婷婷软件| 精品999在线| 午夜影视日本亚洲欧洲精品一区| 精品国产美女福利到在线不卡| 国产成人精品视频播放|