隨著互聯網的發展,CSS作為網頁設計的重要組成部分,被越來越廣泛地應用于網頁中。但是,由于瀏覽器之間的差異,尤其是Internet Explorer(IE)瀏覽器與其他瀏覽器之間,CSS的兼容性問題就成了眾所周知的難點。
下面我們就來看一下IE瀏覽器常見的CSS兼容問題,以及解決方法:
/* IE下的盒模型問題 */ *{ margin:0; padding:0; box-sizing:border-box; }
IE瀏覽器使用的是傳統的盒模型,而標準的盒模型會把元素的邊框、內邊距和尺寸都算作元素所占據的空間。因此在IE中,需要使用star hack(*)將所有元素的margin和padding設置為0,再使用box-sizing:border-box,將盒模型設置成標準盒模型。
/* IE6下fixed定位失效 */ .fix{ position:absolute; _position:fixed; bottom:0; }
IE6下的fixed定位會失效,但可以使用_position:fixed來hack,使其在IE6下生效。
/* IE6/7下的PNG透明 background-image */ .transparent{ background:url(images/transparent.png) transparent; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent.png',sizingMethod='scale'); }
IE6/7不支持PNG半透明,需要使用filter屬性來解決。通常使用AlphaImageLoader來加載PNG圖片,sizingMethod屬性有兩個值,一個是scale(不保持原始比例),一個是image(保持原始比例)。
/* IE6/7/8下的雙倍邊距問題 */ .double-margin{ margin-top:10px; _margin-top:0;/* hack */ }
在IE6/7/8下,元素的相鄰的垂直margin會發生雙倍問題,加上_margin-top:0這個hack可以解決這個問題。
綜上所述,對于IE瀏覽器下的CSS兼容問題,需要使用一些hack技巧來解決。而對于現在的網頁設計來說,最好的方法是使用現成的CSS框架,如Bootstrap、Foundation等,來保證網頁在各種瀏覽器下的兼容性和一致性。