posts - 110,  comments - 152,  trackbacks - 0

           

          到底誰說了算?
                                    CSS樣式使用優先級判斷

          2007年5月27日寫的,現在轉到這里來。

          修正前,再次謝謝hax的指點。最正確的說法:http://www.w3.org/TR/CSS21/cascade.html#specificity 參見這里的相關內容,一下只是我個人偷懶的理解方式,只解決常規情況下的絕大部分問題。不是預期使用的樣式,如何判斷那個樣式會最終起作用呢?到底誰說了算,可以依據下面幾個原則:

          CSS樣式定義多了,常常出現顯示效果與預期不一致的情況。其中很大一部分原因在于起作用的樣式。

          1。多個選擇器可能會選擇同一個元素,有3個規則,從上到下重要性降低:
                !important的用戶樣式
                !important的作者樣式
                作者樣式
                用戶樣式
                瀏覽器定義的樣式
          2。CSS樣式的特殊性權重——誰有分量,誰說了算。
          CSS規范為不同類型的選擇器定義了特殊性權重,特殊性權重越高,樣式會被優先應用。
          權重設定如下:
          html選擇器,權重為1;
          類選擇器,權重為10;
          id選擇器,權重為100;
          這里還有一種情況:在html標簽中直接使用style屬性,這里的style屬性的權重為1000;
          即如下情況:
          #x34y {color:red}
          <.  p id=x34y >  優先選擇style=""設定的樣式。
          其他類型的,大家看看例子就明白了。
          例子:
          h1{color:blue}  權重為1
          p  em{color:yellow}  權重為2
          .warning{color:red}  權重為10
          p.note em.dark{color:grag}  權重為22
          #main{color:black}  權重為100     這里還有一種情況:
          權重一樣時如何處理?權重一樣時就另說了??纯聪旅娴木兔靼琢?。

          3。CSS樣式的層疊原則——誰離我近,誰說了算。
          當權重一樣時,會采用“層疊原則” 后定義的會被應用。
          如:p{color:yellow}
                  p{color:red}
          作用到這里   <. p >我的什么顏色呢?< /p>
          結果會是red的。

          4。CSS樣式的特殊標記——誰有特權,誰說了算。
          如果有人看不順眼,非得要自己說了算,那可以搞點特權,如下即可
          p {color:blue !important;}
          加上!important;可將自己權重設為最高。
          如果你要問兩個!important;設定的樣式,那個樣式說了算,我說你為什么不自己試試看看呢!

          好了,誰說了算的問題就到這里了。



          平凡而簡單的人一個,無權無勢也無牽無掛。一路廝殺,只進不退,死而后已,豈不爽哉!
          收起對“車”日行千里的羨慕;收起對“馬”左右逢緣的感嘆;目標記在心里面,向前進。一次一步,一步一腳印,跬步千里。
          這個角色很適合現在的。


          posted on 2007-12-17 23:44 過河卒 閱讀(295) 評論(0)  編輯  收藏 所屬分類: W3C/Css/Html
          文章來自: http://www.blogjava.com/ponzmd/ (彭?。^河卒) 轉貼請聲明!
          訪問統計:
          主站蜘蛛池模板: 汉阴县| 武平县| 北海市| 丽江市| 保康县| 威远县| 普宁市| 洮南市| 鸡东县| 综艺| 务川| 乐昌市| 镇平县| 磴口县| 黔东| 晋江市| 高邑县| 曲松县| 大余县| 景泰县| 清丰县| 凌源市| 寿宁县| 鄄城县| 桑日县| 诸暨市| 雅江县| 靖远县| 石景山区| 永新县| 聊城市| 揭东县| 营山县| 桂阳县| 新丰县| 瑞安市| 怀仁县| 会泽县| 应城市| 和平区| 洪雅县|