作業中のWebサイトにCSSドロップダウンメニューを実装しています。IEを除くすべてのブラウザで問題なく動作します。
IEを使用すると、ドロップダウンがページのまったく異なる領域に表示されるため、ホバーが消える前にリンクをクリックすることはできません。.css
以下のファイルと.html
(ここではnav構造をbasicに変更)ファイルのコードを含めました。このナビゲーションは、PHPインクルードを介してサイトのレイアウトに配置されるため、ナビゲーションバーが表示される領域は中央に配置され、メインページの上部から230ピクセルになります。
strictモードを使用するDOCTYPE
と、期待どおりに機能しますが、変更できない他の問題があるため、まったく使用しないでくださいDOCTYPE
(そうでない場合は、サイト全体を再コーディングする必要があります)
これには何らかの回避策が必要だと確信しています...IEでまったく同じように表示されなくても、使用可能である必要があります。
どんな助けでも大歓迎です!! 私はこの頭痛を分類するために何週間も費やしました...
CSSファイル:
#catnav {
padding: 0;
clear: both;
height: 32px;
width: 980px;
background: #000;
position: absolute;
top: 230px;
z-index: 100;
}
#nav {
list-style: none;
margin: 0;
padding: 0;
position: relative;
z-index: 100;
}
#nav ul {
margin: 0;
padding: 0;
}
#nav li {
float: left;
margin: 0;
padding: 0;
list-style: none;
position: relative;
}
#nav a {
display: block;
line-height: 32px;
margin: 0 0px;
padding: 0;
font-size: 12px;
color: #fff;
font-weight: bold;
}
#nav li a:hover {
color: #fff;
text-decoration: underline;
display: block;
}
#nav li ul {
list-style: none;
position: absolute;
width: 0px;
left: -999em;
}
#nav li:hover ul, #nav li.sfhover ul {
left: auto;
}
#nav li li {
float: left;
margin: 0;
padding: 0;
width: 120px;
}
#nav li li a {
width: 129px;
height: 24px;
line-height: 24px;
color: #000;
border-bottom: 1px solid #000;
background: #c5c5c5;
margin: 0;
padding: 5px 20px 5px 15px;
}
#nav li li a:hover {
border-top: 1px solid #131f27;
background: #8f7c58;
padding: 5px 20px 5px 15px;
}
#nav li:hover, #nav li.sfhover { /* prevents IE7 drop-down menu bug (focus on a page element prevents nested menus from disappearing) */
position: static;
}
HTMLファイル:
<script type="text/javascript"><!--//--><![CDATA[//><!--
sfHover = function() {
if (!document.getElementsByTagName) return false;
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
//--><!]]></script>
<link rel="stylesheet" href="css.css">
<div id="catnav">
<div id="nav">
<ul>
<li><a href="#" title="Title 1">Title Link 1</a></li>
</ul>
<li><a href="#" title="Title Link 2"></a>
<ul>
<li><a href="#" title="Title">Title Link2 </a></li>
</ul>
</li>
<li><a href="#" title="Title 3">Title Link 3</a>
<ul>
<li><a href="#" title="Sub Link 1">Sub Link 1</a></li>
</ul>
</li>
<li><a href="#" title="Title 4">Title 4</a>
<ul>
<li><a href="#" title="Title">Sub Link 1</a></li>
</ul>
</li>
<li><a href="#" title="Title 5">Title Link 5</a></li>
<li><a href="#" title="Title 6 ">Title Link 6</a></li>
<li><a href="#" title="Title 7">Title Link 7</a></li>
</ul>
</div>
</div>
IEが少なくともこれらのドロップダウンをタイトルの230px
下や右側ではなく、タイトルの下に表示するようにするにはどうすればよいですか?