国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

css的優先級和!important與ie6的BUG

2024-07-11 08:22:21
字體:
來源:轉載
供稿:網友

一 css的優先級

今天有人跟我說css hack中用!important來區分ie6,因為ie6不支持!important,是的在很早以前我也是用過這種方法寫hack,但是后來就基本不用了。本來我對他誰的ie6不支持!important也沒什么異議,可是正好在前幾天正好用個這個!important屬性解決了一個樣式優先級的問題,而且是支持ie6的,這是為什么呢?到底ie6支不支持!important呢?

首先我們來看看!important這個屬性的作用:!important是用來提升樣式優先級的,我們知道樣式是有優先級的。

我們先看看css的優先級的幾個基本的規則:

  1. id選擇器(形如#id{}) > 類選擇器(形如.class{}) > 標簽選擇器(形如body{}或者*{}),也就是id選擇器,類選擇器,標簽選擇器中,id選擇器的優先級最高,標簽選擇器最低;
  2. 選擇器越具體優先級就越高,也就是
    .classa .classb .classc{font-size: 25px;}
    .classb .classc{font-size:18px}
    .classc { font-size: 12px; }
    這里.classa .classb .classc的優先級最高,.classc的優先級最低;
  3. 在同一個級別的情況下,最后指定的規則優先級就越高,也就是我們通常說的就近原則;html中標簽的style的屬性都高于css文件中的選擇器樣式;
  4. 標有”!important”的規則有最高優先級。

我們可以利用!important使該樣式優先級最高,例如:

css代碼:
#ida{font-size:20px}
.classa{ font-size: 12px; }

html代碼:
<div id=“ida” class=“classa”>我要20像素的字</div>

我們知道根據上面的規則可以看出#ida{font-size:20px}的樣式將被引用,那我們如果要12像素的字呢?

css代碼:
#ida{font-size:20px}
.classa{ font-size: 12px !important; }

html代碼:
<div id=“ida” class=“classa”>我要12像素的字</div>

這樣.classa{ font-size: 12px !important; }這個樣式就被引用了。

這種方法在優先級低的樣式被優先級高的樣式覆蓋,又想引用優先級低的樣式時候非常有用!

二  !important在ie6下的一個bug

還是看這一段代碼,

css代碼:
#ida{font-size:20px}
.classa{ font-size: 12px !important; }

html代碼:
<div id=“ida” class=“classa”>我要12像素的字</div>

大家可以在ie6下測試一下,文字是12像素的,也就是.classa{ font-size: 12px !important; }被引用了,這證明ie6是支持!important的。但是css hack中用!important來區分ie6,說ie6不支持!important又是怎么回事呢?

原來ie6下,在同一個選擇器樣式(即同一個大括號里面)下!important是無效的,例如:

css代碼:
.classa{ font-size: 68px !important; font-size: 12px }

html代碼:
<div class=“classa”>我要12像素的字</div>

這里在ie6下是12像素的字,而其他瀏覽器下是68px的字,當然我們把樣式改一下,!important放在后面,即.classa{ font-size: 12px;font-size: 68px !important; },那么ie6下和其他瀏覽器一樣也是68px的字。也就是在同一個選擇器樣式(即同一個大括號里面)下!important被ie6徹底的無視了。

==============以下2009年8月1日更新==============

昨天在紫鼠的博客上也看到了關于!important的文章,說ie8在同一個選擇器樣式(即同一個大括號里面)下對!important的解析也是和ie6一樣的,可是我測試的情況是ie8和ie6是不一樣的,并留了言,今天我們討論了這個問題,確實他寫的他寫的代碼ie8和ie6對!important的解析是一樣的。經過比較發現,他代碼上沒有dtd的聲明,就是html代碼上面的這一句:“<!doctype html public “-//w3c//dtd xhtml 1.0 transitional//en” “http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd”>”,神啊,在沒有dtd的聲明的情況下,在同一個選擇器樣式(即同一個大括號里面)下,ie6,ie7,ie8對!important的解析都是無效的。還有只要有聲明文檔類型的不管是html4,xhtml1.o,還有html5(“<!doctype html>”),除去ie6有上面說的bug外其他都是正常的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 韩城市| 隆昌县| 东兰县| 法库县| 峡江县| 姜堰市| 崇信县| 桃源县| 永胜县| 富锦市| 津市市| 宜丰县| 台安县| 阳城县| 军事| 瓮安县| 女性| 波密县| 吴忠市| 泸州市| 手机| 伊川县| 平果县| 孟州市| 郴州市| 宁武县| 马山县| 长乐市| 柳州市| 云浮市| 册亨县| 大新县| 临城县| 威海市| 南投县| 临武县| 南宫市| 广德县| 大关县| 广灵县| 大荔县|