:
background: rgba(255,255,255,0.2);
兼容ie8
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
#后面的8個數字被拆分為兩個部分 33 ffffff他們對應 AA(IEfilter) GGBBAA(GBA)。
rgba 對應 iefilter 值
0.1==> 19
0.2==>33
0.3==>4c
0.4==>66
0.5==>7f
0.6==>99
0.7==>b2
0.8==>c8
0.9==>e5
多網站前端設計師在設計網站的時候,都會碰到網站在快速瀏覽器下顯示正常,在ie下可能就會出現錯位的情況!所以我們在設計網站之前一定要先了解IE兼容性問題。
關于CSS對IE的兼容問題一直是DIV+CSS的一個大問題,因為不通瀏覽器識別代碼產生的效果是不同的,所以造成了很多瀏覽器對相同的CSS,產生不同的效果,這樣就產生了網站的錯位,個人理解是這樣的。
網站設計
先來了解下瀏覽器的內核:
瀏覽器內核又可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計算網頁的顯示方式,然后會輸出至顯示器或打印機。瀏覽器的內核的不同對于網頁的語法解釋會有不同,所以渲染的效果也不相同。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網絡內容的應用程序都需要內核。JS 引擎則是解析 Javascript 語言,執行 javascript 語言來實現網頁的動態效果。
最開始渲染引擎和 JS 引擎并沒有區分的很明確,后來 JS 引擎越來越獨立,內核就傾向于只指渲染引擎。有一個網頁標準計劃小組制作了一個 ACID 來測試引擎的兼容性和性能。內核的種類很多,如加上沒什么人使用的非商業的免費內核,可能會有 10 多種,但是常見的瀏覽器內核可以分這四種:Trident、Gecko、Blink、Webkit。
各個瀏覽器內核不同,就可能造成不兼容的情況出現。
常見的兼容性問題:
1、不同瀏覽器的標簽默認的外補丁( margin )和內補丁(padding)不同
解決方案: css 里增加通配符 * { margin: 0; padding: 0; }
2、IE6雙邊距問題;在 IE6中設置了float , 同時又設置margin , 就會出現邊距問題
解決方案:設置display:inline;
3、當標簽的高度設置小于10px,在IE6、IE7中會超出自己設置的高度
解決方案:超出高度的標簽設置overflow:hidden,或者設置line-height的值小于你的設置高度
4、圖片默認有間距
解決方案:使用float 為img 布局
5、IE9一下瀏覽器不能使用opacity
解決方案:
opacity: 0.5;filter: alpha(opacity=50);filter: progid:DXImageTransform.Microsoft.Alpha(style=0, opacity=50);
6、邊距重疊問題;當相鄰兩個元素都設置了margin 邊距時,margin 將取最大值,舍棄最小值;
解決方案:為了不讓邊重疊,可以給子元素增加一個父級元素,并設置父級元素為overflow:hidden;
7、cursor:hand 顯示手型在safari 上不支持
解決方案:統一使用 cursor:pointer
8、兩個塊級元素,父元素設置了overflow:auto;子元素設置了position:relative ;且高度大于父元素,在IE6、IE7會被隱藏而不是溢出;
解決方案:父級元素設置position:relative
關于瀏覽器兼容性的這種錯位,因為瀏覽器的種類越來越多,從IE5,6,7,8,9,10這些都是比較常用的瀏覽器,但是正因為各種瀏覽器的出現,為了更好的兼容各個版本的瀏覽器,我們就需要學習如何來處理IE的兼容問題。從而網絡上出現了很多所謂的HACK ,其實也就是針對各個瀏覽器的特點,來對各種瀏覽器的不同嗜好,產生的不同效果,實現的一種兼容各個版本瀏覽器的效果。
這個地方我們我們不是來講各種可見的HACK效果,這些大家,可以在百度上來一下,就能找到我們所要的結果。
因為IE從6開始為了適應各個版本,就自身有了一個兼容性,所以我們可以指定給網頁一個兼容特性;
比如 網頁在IE7下無錯位,但在IE6 和 IE8下有錯位,那么我們就可以指定當用戶使用IE6和IE8的時候直接指定給IE6 和 IE8采用IE7的兼容模式來實現網頁的不錯位。
但是這樣一來,網頁的兼容特性只是實現了,IE6,IE7,IE8的一個兼容,為了同時兼容FF,我們這個時候就需要使用HACK來達到兼容FF的效果。
這樣我們使用IE自身的特性和HACK之間的特性就達到了網頁的兼容效果,我認為這樣實現兼容效果是最簡單最方便的。這樣我們其實就是對一種IE和FF之間的HACK在起作用,相對的寫了很少的代碼,也很實用和方便。
兼容性的問題越來越重要了,特別是IE8的出現讓當時大半的網頁都出現錯位等現象,而解決的辦法,我們來看一個網上的例子:
“css兼容IE8
微軟在IE8提供三種解析頁面的模式:
IE8 Standard Modes :默認的最標準的模式,嚴格按照W3C相關規定
IE7 Standards Modes :IE7現在用的解析網頁的模式,開起機關是在<head>中加入 <meta http-equiv="X-UA-Compatible" content="IE=7">
Quirks Modes :IE5用的解析網頁的模式,開起機關是刪除HTML頂部的DOCTYPE聲明
注意:不同模式間的網頁在IE8中可以互相 frame ,因此因不會模式下的DOM和CSS渲染不一樣,所以會引發很多問題,務必注意如果你的頁面對IE7兼容沒有問題,又不想大量修改現有代碼,同時又能在IE8中正常使用,微軟聲稱,開發商僅需要在目前兼容IE7的網站上添加一行代碼即可解決問題,此代碼如下:
<meta http-equiv="x-ua-compatible" content="ie=7" />”
加了以上這個代碼,就可以比較完美的解決一般的兼容性問題了。
mg{border:none} 解決IE瀏覽器有邊框問題, 而W3C瀏覽器無邊框問題
選擇器的兼容性問題
1 兒子選擇器>
IE7開始兼容, IE6不兼容。
div>p{
color:red;
}
div的兒子p。和div的后代p的截然不同。
能夠選擇:
<div>
<p>我是div的兒子</p>
</div>
不能選擇:
<div>
<ul>
<li>
<p>我是div的重孫子</p>
</li>
</ul>
</div>
2 序選擇器
IE8開始兼容;IE6、7都不兼容
選擇第1個li:
<style type="text/css">
ul li:first-child{
color:red;
}
</style>
選擇最后一個1i:
ul li:last-child{
color:blue;
}
由于瀏覽器的更新需要過程,所以現在如果公司還要求兼容IE6、7, 那么就要自己寫類名:
<ul>
<li class="first">項目</li>
<li>項目</li>
<li>項目</li>
<li>項目</li>
<li>項目</li>
<li>項目</li>
<li>項目</li>
<li>項目</li>
<li>項目</li>
<li class="last">項目</li>
</ul>
用類選擇器來選擇第一個或者最后一個:
ul li.first{
color:red;
}
ul li.last{
color:blue;
}
3 下一個兄弟選擇器
IE7開始兼容, IE6不兼容。
+表示選擇下一個兄弟
<style type="text/css">
h3+p{
color:red;
}
</style>
選擇上的是h3元素后面緊挨著的第一個兄弟。
<h3>我是一個標題</h3>
<p>我是一個段落</p>
<p>我是一個段落</p>
<p>我是一個段落</p>
<h3>我是一個標題</h3>
<p>我是一個段落</p>
<p>我是一個段落</p>
<p>我是一個段落</p>
<h3>我是一個標題</h3>
<p>我是一個段落</p>
<p>我是一個段落</p>
<p>我是一個段落</p>
<h3>我是一個標題</h3>
選擇器:
說IE6層面兼容的: 標簽選擇器、id選擇器、類選擇器、后代、交集選擇器、并集選擇器、通配符。
p
#box
.spec
div p
div.spec
div,p
*
IE7能夠兼容的:兒子選擇器、下一個兄弟選擇器
div>p
h3+p
IE8能夠兼容的:序選擇器
ul li:first-child
ul li:last-child
border-style兼容性問題
比如, border:10px ridge red; 在chrome和firefox、IE中有細微差別:
如果公司里面的設計師, 處女座的, 追求極高的頁面還原度, 那么不能使用css來制作邊框。
就要用到圖片, 就要切圖了。所以, 比較穩定的就幾個:solid、dashed、dotted, 其他的邊框樣式盡量不要用。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。