天天看點

css ie6,ie7,ie8 相容性寫法,CSS hack寫法

margin-bottom:40px;      

margin-bottom:140px\9;   

color:red\0;             

*margin-bottom:450px;       +margin-bottom:450px;

_color:#ff0000;        

#1 { color: #333; }

* html #1 { color: #666; }

*+html #1 { color: #999; }

================================================================================

三、CSS hack寫法

    書寫順序為FireFox在最前,其次是IE8、IE7,最後是IE6。    

       color:red;//所有浏覽器

      color:blue\9;//所有IE

      +color:orange;//IE7

      _color:green;//IE6

    若浏覽器為FireFox,那麼color:red;若浏覽器為IE8,根據CSS優先性原則,color:blue;若為IE7,color:orange;若為IE6,則color:green。

    IE6識别 * 、_

    IE7識别 * 、+

    IE8識别 * 、\9,\0

    隻有IE8識别  \0/   

    ie9隻識别:\9

    FF什麼都不識别

  1. .test{
  2.         color:#09F\0;
  3.         color:#09F\0/;
  4. }
  5. :root .test { color:#963\9; }
  6. @media all and (min-width:0){
  7.     .test{color:red\9; }
  8. }

<html>

    <body>

        <div style="border: 1px solid red; width: 300px; padding: 10px;">

            在Firefox中,div的完整寬度是padding+width,是以width: 300px; padding: 10px;的實際寬度是320px;而在IE6中,div的完整寬度是width,是以

這個div和下面的div寬度一緻。

        </div>

        <div style="border: 1px solid red; width: 300px;">

            寬度為300px的div

        </div>

        <div style="border: 1px solid red; width: 280px !important; width: 300px; padding: 10px;">

            通過借助!important标記,可以設定Firefox中的width值為IE6中的width值減去padding值,這樣就實作了Firefox與IE6的padding效果尺寸相容。

        </div>

    </body>

</html>

==================================================================================

DOCTYPE标準firfox與ie6 padding的問題

首先我們說說firefox和IE對CSS的寬度顯示有什麼不同:

  其實CSS ’width’ 指的是标準CSS中所指的width的寬度,在firefox中的寬度就是這個寬度。它隻包含容器中内容的寬度。而Internet Explorer ’width’

則是指整個容器的寬度,包括内容,padding ,border。

Firefox中:容器占的寬度=内容寬度+padding寬度+border寬度

IE中:内容寬度=您定義的容器寬度(Internet Explorer ’width’)-padding寬度-border寬度

  是以,如果IE中定義 width:120px;padding:5px 的話,所顯示的寬度就是120px.

  即padding:5px是在width裡面。

  而Firefox中,上面這個定義,顯示寬度就是 125 px;

  是以,我們就必須這樣定義

  

width:115px !important;width:120px;padding:5px;

必須注意的是, !important; 一定要在前面。 

除了在不同的浏覽器上會有這個問題,還有可能是在編碼時引用了<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

這個頭,他在ie浏覽器下要支援w3标準,w3的padding和firfox标準相同,是以也會出現上面的情況

=====================================================================================

網站如何同時相容IE6、IE7、IE8

第一招:給常用CSS規定屬性值。

body,div,dl,dt,dd,ol,h1,h2,h3,h4,h5,h6,form,input,p,th,td{margin:0;padding:0;}

img{border:0px;}

ul {margin:0px;padding:0px;}/

ul li {list-style:none;}

上面的建站常用代碼就相是格式化CSS樣式,讓各浏覽器按照我們設定的屬性值渲染網頁

第二招:IE和FF下對象居中問題

IE下大家應該知道隻要設定body{text-align:center;}這樣就可以居中顯示。

但是這樣的方法在FF不行的。這裡就需要給修改成body:{text-align:center;margin:0px auto;}Margin的意思就是上下距離為0像素,左右為自動。是以FF就會居

中顯示。

第三招:垂直居中(僅隻用于一行)

比如說一個高30px的div,問題預設是會顯示在左上角,如果想垂直居中對其可以加個line-height:30px;樣式。如果你想讓他居下方則在修改line-height:30px;

數值越大越局下,為了防止撐破層,還需要再給一個樣式overflow:hidden;(超出的部分不顯示)

第四招:給每一個塊對象設定三個樣式

width:**px;height:**px;overflow:hidden;即便高、寬是屬性值是自動那麼也需要去設定這三個樣式。目的就是解決浏覽器預設值的問題。

第五招:針對IE6、IE7、FF的css樣式(這一招在特殊情況下經常用到)

原來建設網站經常使用!important來設定優先權,但有了IE7之後就不行了。下面給大家個可以解決IE6、IE7、FF各個CSS優先權的方法

#1 { color: #333; }

* html #1 { color: #666; }

*+html #1 { color: #999; }

上面的書寫順序一定不能去改變。

這樣子網頁在FF下顯示#333,IE6下顯示#666,IE7下顯示#999;

css