什么是CSS hack

            由于不同的瀏覽器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,對CSS的解析認(rèn)識(shí)不一樣,因此會(huì)導(dǎo)致生成的頁面效果不一樣,得不到我們所需要的頁面效果。

            這個(gè)時(shí)候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能夠同時(shí)兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁面效果。

            這個(gè)針對不同的瀏覽器寫不同的CSS code的過程,就叫CSS hack,也叫寫CSS hack。

            CSS Hack的原理是什么
          由于不同的瀏覽器對CSS的支持及解析結(jié)果不一樣,還由于CSS中的優(yōu)先級的關(guān)系。我們就可以根據(jù)這個(gè)來針對不同的瀏覽器來寫不同的CSS。

            比如IE6能識(shí)別下劃線_和星號*,IE7能識(shí)別星號*,當(dāng)不能識(shí)別下劃線_,而firefox兩個(gè)都不能認(rèn)識(shí)。等等

             書寫順序,一般是將識(shí)別能力強(qiáng)的瀏覽器的CSS寫在后面。下面如何寫里面說得更詳細(xì)些。

            如何寫CSS Hack
          比如要分辨IE6和firefox兩種瀏覽器,可以這樣寫:

            <style>  
          div
          {  
                background
          :green; /* for firefox */  
                *background
          :red;  /* for IE6 */  
          }  
          </style>
              <div>我在IE6中看到是紅色的,在firefox中看到是綠色的。</div>  
             
          <style>
              div
          { 
                  background
          :green; /* for firefox */    
                  *background
          :red;  /* for IE6 */
             
          }
             
          </style>
              <div>我在IE6中看到是紅色的,在firefox中看到是綠色的。</div>

           

            解釋一下:

            上面的css在firefox中,它是認(rèn)識(shí)不了后面的那個(gè)帶星號*的東東是什么的,于是將它過濾掉,不予理睬,解析得到的結(jié)果是:div{background:green},于是理所當(dāng)然這個(gè)div的背景是綠色的。

            在IE6中呢,它兩個(gè)background都能識(shí)別出來,它解析得到的結(jié)果是:div{background:green;background:red;},于是根據(jù)優(yōu)先級別,處在后面的red的優(yōu)先級高,于是當(dāng)然這個(gè)div的背景顏色就是紅色的了。

            CSS hack:區(qū)分IE6,IE7,firefox區(qū)別不同瀏覽器,CSS hack寫法:

            區(qū)別IE6與FF:
                 background:orange;*background:blue;

            區(qū)別IE6與IE7:
                 background:green !important;background:blue;

            區(qū)別IE7與FF:
                 background:orange; *background:green;

            區(qū)別FF,IE7,IE6:
                 background:orange;*background:green !important;*background:blue;

            注:

              IE都能識(shí)別*;標(biāo)準(zhǔn)瀏覽器(如FF)不能識(shí)別*;
          IE6能識(shí)別*,但不能識(shí)別 !important,
          IE7能識(shí)別*,也能識(shí)別!important;
          FF不能識(shí)別*,但能識(shí)別!important;

             IE6 IE7 FF
          * √ √ ×
          !important × √ √

            另外再補(bǔ)充一個(gè),下劃線"_",
          IE6支持下劃線,IE7和firefox均不支持下劃線。

            于是大家還可以這樣來區(qū)分IE6,IE7,firefox
          : background:orange;*background:green;_background:blue;

            注:不管是什么方法,書寫的順序都是firefox的寫在前面,IE7的寫在中間,IE6的寫在最后面。

            附:CSS的各種瀏覽器兼容一欄表


          posted on 2009-02-04 09:22 leweslove 閱讀(238) 評論(0)  編輯  收藏 所屬分類: Other

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          Copyright@2008-2009 By Evan
          主站蜘蛛池模板: 清河县| 蓬溪县| 湄潭县| 临城县| 玉门市| 缙云县| 罗定市| 河北省| 上杭县| 三亚市| 嵊泗县| 林周县| 芷江| 榕江县| 临潭县| 尖扎县| 天全县| 郸城县| 黄冈市| 泉州市| 永和县| 双桥区| 宁化县| 耿马| 渝中区| 温州市| 灵寿县| 陆良县| 辽阳县| 九龙县| 青铜峡市| 昌乐县| 蒲江县| 西宁市| 绥化市| 孙吴县| 华坪县| 芷江| 铜川市| 左贡县| 上思县|