posts - 17, comments - 4, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          [轉(zhuǎn)]需要了解的CSS優(yōu)先級特性

          Posted on 2007-09-15 16:10 愚人 閱讀(372) 評論(0)  編輯  收藏 所屬分類: Xhtml/css

          原文:CSS Specificity: Things You Should Know

          如果頁面制作的時候遇到定義的CSS不起作用,你可能遇到了CSS優(yōu)先級的問題。CSS優(yōu)先級在CSS里算是比較難懂的部分,不同權(quán)重的CSS選擇器有可能就是你出錯的原因,所以作為頁面開發(fā)人員必須了解CSS優(yōu)先級特性。

          CSS優(yōu)先級特性概述:

          1. 通過優(yōu)先級計算,讓瀏覽器先解析哪條CSS規(guī)則。
          2. 優(yōu)先級特性經(jīng)常是你定義的CSS規(guī)則不起作用的原因,雖然你認為起了作用,然而卻不是。
          3. 每個選擇器都有它的優(yōu)先級層次。
          4. 如果兩個規(guī)則同時作用于一個元素,優(yōu)先級高的獲勝。
          5.優(yōu)先級特性可以分為四類:inline styles, IDs, classes+attributes and elements.
          6.英文好的可以看下這兩篇文章, CSS Specificity WarsCSS Specificity for Poker Players
          7.如果選擇器有兩個等級相同的值,后面的值會覆蓋前面的值。
          8.如果選擇器有等級不同的值,以等級高的算,比如!important。
          9.擁有更多優(yōu)先特性選擇器的規(guī)則更具有優(yōu)先特性。
          10.后面的規(guī)則肯定會覆蓋前面相同的規(guī)則。
          11.內(nèi)嵌的CSS規(guī)則優(yōu)先級特性最高。
          12.CSS文件里,ID的優(yōu)先級特性最高。
          13.想要增加優(yōu)先級,可以使用ID。
          14.class比element級別高。
          15.選擇器分為四個級別,計算方式 0,0,0,0。
          16.推薦一個CSS優(yōu)先級計算器,CSS Specificity Calculator.。

          什么是優(yōu)先級特性

          優(yōu)先級計算是為了決定瀏覽器解析哪條規(guī)則。“優(yōu)先級特性的權(quán)重關系CSS的顯示。”Understanding Specificity (明白優(yōu)先級特性)。

          選擇器的優(yōu)先級特性決定了同一個元素多條規(guī)則下哪條規(guī)則實施。Selector Specificity (選擇器優(yōu)先級)。

          每個選擇器都有優(yōu)先級,兩個選擇器作用與同一個元素,優(yōu)先級高的獲勝。

          CSS優(yōu)先級級別:

          1. Inline styles  內(nèi)嵌頁面的CSS樣式,比如<h1 style=”color:#000″></h1>

          2.IDs  比如#myid

          3.Classes, attributes and pseudo-classes 比如 .classes, [attributes]:hover, :focus

          4.Elements and pseudo-elements 比如 div,p,h1,包括:before和:after

          怎樣測量優(yōu)先級?

          內(nèi)嵌的為1000,ID為100,Classes, attributes and pseudo-classes為10,Elements and pseudo-elements 為1。

          body #content .data img:hover 這里的特性值為 0,1,2,2

          下面這張星球大戰(zhàn)的圖片也許能幫助你記憶:

          CSS Specificity Wars

          來測試下吧

          1 * { } 0
          3 li:first-line { } 2 (one element, one pseudo-element)
          5 ul ol+li { } 3 (three elements)
          7 ul ol li.red { } 13 (one class, three elements)
          9 style=”” 1000 (one inline styling)
          11 div p { } 2 (two HTML selectors)
          13 div p.sith { } 12 (two HTML selectors and a class selector)
          15 body #darkside .sith p { } 112 (HTML selector, id selector, class selector, HTML selector; 1+100+10+1)

          實際經(jīng)驗:

          1. 使用LVHA定義鏈接,即link-visited-hover-active,參考[Link Specificity]
          2. 如果不是為了兼容瀏覽器,最好不要使用 !important
          3. 使用ID讓特性更具體,比如a.high寫成 ul#blog li a.high

          CSS工具與資 英文好的去看下

          CSS Specificity for Poker Players
          CSS specificity calculator
          Understanding Specificity Tutorial
          Cascade Inheritance: Specificity
          CSS 2.1 Selectors Explained
          CSS Specificity Bugs in IE
          CSS Structure and Rules
          Specificity

          主站蜘蛛池模板: 吐鲁番市| 怀化市| 塘沽区| 大洼县| 遵义县| 陵川县| 霍山县| 治县。| 墨江| 千阳县| 加查县| 丹棱县| 汤阴县| 兰西县| 铁岭市| 高台县| 兴山县| 凌源市| 晋城| 泸西县| 偃师市| 精河县| 浦县| 布尔津县| 桂平市| 佛坪县| 忻州市| 上思县| 丹凤县| 平陆县| 沛县| 永福县| 揭西县| 信宜市| 汉中市| 乐至县| 丰顺县| 姜堰市| 巢湖市| 汽车| 丹凤县|