簡體   English   中英

IE8與Chrome / Firefox / Opera之間具有Box Model差異的CSS菜單

[英]CSS Menu with Box Model differences between IE8 and Chrome/Firefox/Opera

我以為IE7和更高版本遵循的是與Chrome / Firefox / Opera相同的盒子模型,但是當我在IE8中運行以下代碼,然后在Chrome / Firefox / Opera中運行以下代碼時,我得到了不同的結果。

在IE8中, 的末端顯示了一些我想擺脫的嘴唇。 是否可以使用嚴格的CSS來解決我的問題,還是需要使用Javascript來檢測瀏覽器,然后更改CSS?

這是我正在使用的代碼的鏈接。 為了查看我的問題,您需要使用IE,然后使用Chrome,Firefox或Opera。

http://jsfiddle.net/LsXTk/1/

IE7有兩種模式:兼容模式和標准模式。 MS在IE方面所做的一系列出色舉措中的又一個。 (是的,我很諷刺):

http://blogs.msdn.com/b/chkoenig/archive/2008/08/28/ie8-standards-mode-and-ie7-compatibility-mode.aspx

通常讓人們感到困擾的是,默認情況下,如果頁面是在本地加載或從網絡上的服務器加載,則IE8會恢復到兼容(即損壞)模式。 我猜想邏輯是它必須是您的Intranet上的一個頁面,並且由於所有Intranet Web軟件中90%都是用IE6怪誕的方式編碼的,因此在任何標准瀏覽器中幾乎都無法解決,因此最好假設代碼已損壞並恢復為兼容模式。

至於檢測IE8,您可以通過IE的條件注釋在不使用JavaScript的情況下進行操作。 我通常要做的是將主體標簽包裝在條件語句中,並為每個變量賦予唯一的ID:

<!--[if !IE]> -->
    <body>
<!--<![endif]-->
<!--[if gt IE 8]> 
<body id="IE9">
<![endif]-->
<!--[if IE 8]>
    <body id="IE8">
<![endif]-->
<!--[if IE 7]>
    <body id="IE7">
<![endif]-->
<!--[if lt IE 7]>
    <body id="IE6">
<![endif]-->

然后在CSS中,您可以根據需要輕松提供單獨的CSS:

.myStyle {for good browsers}
#ie7 .myStyle {fix for IE7}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM