在Internet Explorer中(我已經在所有v6 - v9中測試過),當您將鼠標懸停在文本上時,子菜單上的邊框首先不會顯示。第二次你懸停它會顯示。它在Firefox和Chrome中運行良好 - 即它始終顯示邊框。我已將示例頁面放在my site上。使用display時無法使用IE CSS邊框:無
IE(懸停):
FF /鉻(懸停):
沒有什麼花哨這裏,一些CSS,的onmouseover /的onmouseout JavaScript設置style.display = block/none。我已經按照answer到a similar question的一些想法。
我已經將其剝離到最低限度,試圖找到問題,但仍然沒有運氣。
子菜單ul元素的display:none設置在它上面。看起來,IE瀏覽器在繪製邊框之前不會畫出邊框,直到它具有display:block set,並且在使用Javascript顯示元素時不會繪製邊框。
<html>
<head>
<title></title>
<style type="text/css">
ul, li {padding:0; margin:0; border:0;}
ul#hover_menu_list,
ul#hover_menu_list ul {list-style-type:none;}
ul#hover_menu_list li {float:left;position:relative;display:inline;}
ul#hover_menu_list li ul {border:1px solid #000;display:none;position:absolute;left:0px;top:20px;width:170px;}
ul#hover_menu_list li ul li {display:block; clear:left; float:left;width:140px;}
</style>
</head>
<body>
<ul id="hover_menu_list" onmouseout="document.getElementById('menu1').style.display='none';" onmouseover="document.getElementById('menu1').style.display='block';">
<li>
Menu
<ul id="menu1">
<li>Submenu1</li>
<li>Submenu2</li>
</ul>
</li>
</ul>
</body>
</html>
更新:問題確實是文檔類型問題。添加一個過渡或嚴格的doctype解決了這個問題。鏈接頁面已經修復。
這似乎很好地工作在IE6-IE9在我的測試看到這裏的小提琴:http://jsfiddle.net/fordlover49/FpCEW/ 我會建議您檢查您的文檔類型,以確保它是W3C標準的文檔類型。 – PriorityMark 2011-12-28 16:11:38
它確實在jsfiddle中工作 - 但我懷疑他們正在做一些事情來解決它。如果你看一下IE中的示例頁面http://ianchanning.com/ie-border-bug/,你應該會看到這個bug。沒有設置DOCTYPE。 – icc97 2011-12-28 16:16:51
我不認爲jsfiddle會「修復」你的代碼。這是點... – 2011-12-28 16:18:34