0

これは私が取り組んでいるサイトです:http ://argumentinamerica.comこれが 私が取り組んでいるメニューのフィルドルです:http://jsfiddle.net/Qtfrq/

HTML:

<div id="menu">
<ul id="menu">
<li><a href="#"><span></span>Home</a></li>
<li class='has-sub'><a href="#"><span></span>Units</a>
    <ul>
        <li class='has-sub'><a href="#">Unit 1</a></li>
            <ul class="thirdtier">
                <li><a href="#">Read About It</a></li>
                <li><a href="#">Write About It</a></li>
                <li><a href="#">Hear About It</a></li>
                <li><a href="#">Speak About It</a></li>
                <li><a href="#">Read About It</a></li>
                <li><a href="#">Write About It</a></li>
            </ul>
        <li class='has-sub'><a href="#">Unit 2</a></li>
        <li class='has-sub'><a href="#">Unit 3</a></li>
        <li class='has-sub'><a href="#">Unit 4</a></li>
        <li class='has-sub'><a href="#">Unit 5</a></li>
    </ul>
<li><a href="#"><span></span>Teacher Center</a></li>
<li><a href="#"><span></span>About</a></li>
<li><a href="#"><span></span>Give 1</a></li>
</ul>
</div>

CSS:

#menu {
    margin: 0; padding: 2px 0px 2px 0px;
    list-style-type: none;
    height: 2.4em;
}
#menu ul, #menu li, #menu span, #menu a {
    margin: 0;
    padding: 0;
    position: relative;
}
#menu li {
    float: left;
    width: 20%;
}
#menu a {
    display: block;
    margin: 1px;
    height: 2.4em;
    font-size: 10px;
    line-height: 2.4em;
    text-decoration: none;
    text-transform: uppercase;
    text-align: center;
    background: #ffcc66;
    color: #996600;
}
#menu span {
    position: absolute; top: 8px; left: 8px;
    width: 8px; height: 8px;
    background: #ff9933;
}
#menu a:hover {
    background: #cc3300;
    color: #ffcc66;
}
#menu ul{
    list-style-type: none;
}
#menu .has-sub {
    z-index: 1;
}
#menu .has-sub:hover > ul {
    display: list-item;
}
#menu .has-sub ul {
    display: none;
    position: absolute;
    left:0;
}
#menu .has-sub ul li {
    *margin-bottom: -1px;
    position: relative;
    width: 100%;
    height: 2.6em;
    line-height: 2.4em;
}
#menu .has-sub ul li a {
    background: #ff9944;
    font-size: .65em;
    color: ffcc66;
}
#menu .has-sub ul li a:hover,
 #menu .has-sub ul li:hover > a {
    background: #ff6633;
    color: 993300;
}
#menu .has-sub {
     z-index: 1;
}
#menu .has-sub:hover > ul {
    display: list-item;
}
#menu .has-sub .has-sub:hover + ul {
    display: list-item;
}
.thirdtier li {
    left: 100%;
}

多くの試行錯誤の末、2番目の層にカーソルを合わせたときに3番目の層を表示する方法を見つけましたが、3番目の層のリストで何かを選択しようとすると、表示されなくなります。要素にホバースタイルを適用して、子要素にカーソルを合わせたときに「ホバー」されたままになるようにする必要があることはわかっています。そのようにしたと思いましたが、機能していません。この問題について助けが欲しいです。

4

2 に答える 2

0

よくある間違いは、ネストされたULをその親LI内に配置しないことです(ちなみに、これは無効なHTMLになります)。これらのULは、ホバー状態のLIの一部ではないため、可視性を維持しません。

この場合、LIタグをまったく閉じていないため、2番目のレベルが機能します。したがって、ブラウザは次の兄弟LIを調べて、閉じる場所を推測します。

CSSを作り直す必要があるかもしれませんが、次のようになります。

<ul id="menu">
    <li><a href="#"><span></span>Home</a></li>
    <li class='has-sub'><a href="#"><span></span>Units</a>
        <ul>
            <li class='has-sub'><a href="#">Unit 1</a>
                <ul class="thirdtier">
                    <li><a href="#">Read About It</a></li>
                    <li><a href="#">Write About It</a></li>
                    <li><a href="#">Hear About It</a></li>
                    <li><a href="#">Speak About It</a></li>
                    <li><a href="#">Read About It</a></li>
                    <li><a href="#">Write About It</a></li>
                </ul>
            </li>
            <li class='has-sub'><a href="#">Unit 2</a></li>
            <li class='has-sub'><a href="#">Unit 3</a></li>
            <li class='has-sub'><a href="#">Unit 4</a></li>
            <li class='has-sub'><a href="#">Unit 5</a></li>
        </ul>
    </li>
    <li><a href="#"><span></span>Teacher Center</a></li>
    <li><a href="#"><span></span>About</a></li>
    <li><a href="#"><span></span>Give 1</a></li>
</ul>
于 2013-02-13T16:14:11.057 に答える
0

これを試してください:http://jsfiddle.net/Qtfrq/2/

基本的に、HTM1とCSSにいくつかの小さな変更を加えます。

<div id="menu">
<ul id="menu">
    <li><a href="#"><span></span>Home</a></li>
    <li class='has-sub'><a href="#"><span></span>Units</a>
        <ul>
            <li class='has-sub'><a href="#">Unit 1</a>
                <ul class="thirdtier">
                    <li><a href="#">Read About It</a></li>
                    <li><a href="#">Write About It</a></li>
                    <li><a href="#">Hear About It</a></li>
                    <li><a href="#">Speak About It</a></li>
                    <li><a href="#">Read About It</a></li>
                    <li><a href="#">Write About It</a></li>
                </ul>
            </li>
            <li class='has-sub'><a href="#">Unit 2</a></li>
            <li class='has-sub'><a href="#">Unit 3</a></li>
            <li class='has-sub'><a href="#">Unit 4</a></li>
            <li class='has-sub'><a href="#">Unit 5</a></li>
        </ul>
    </li>
    <li><a href="#"><span></span>Teacher Center</a></li>
    <li><a href="#"><span></span>About</a></li>
    <li><a href="#"><span></span>Give 1</a></li>
</ul>
</div>


#menu {
margin: 0; padding: 2px 0px 2px 0px;
list-style-type: none;
height: 2.4em;
}
#menu ul, #menu li, #menu span, #menu a {
    margin: 0;
    padding: 0;
    position: relative;
}
#menu li {
float: left;
width: 20%;
}
#menu a {
display: block;
margin: 1px;
height: 2.4em;
font-size: 10px;
line-height: 2.4em;
text-decoration: none;
text-transform: uppercase;
text-align: center;
background: #ffcc66;
color: #996600;
}
#menu span {
position: absolute; top: 8px; left: 8px;
width: 8px; height: 8px;
background: #ff9933;
}
#menu a:hover {
background: #cc3300;
color: #ffcc66;
}

#menu ul{
list-style-type: none;
}
#menu .has-sub {
    z-index: 1;
}
#menu .has-sub:hover > ul {
    display: list-item;
}
#menu .has-sub ul {
    display: none;
    position: absolute;
    left:0;
}
#menu .has-sub ul li {
    *margin-bottom: -1px;
    position: relative;
    width: 100%;
    height: 2.6em;
    line-height: 2.4em;
}

#menu .has-sub ul li a {
    background: #ff9944;
    font-size: .65em;
    color: ffcc66;
}

#menu .has-sub ul li a:hover,
#menu .has-sub ul li:hover > a {
    background: #ff6633;
    color: 993300;
}
#menu .has-sub {
    z-index: 1;
}
#menu .has-sub:hover > ul {
    display: list-item;
}

#menu .has-sub > .has-sub:hover + ul {
    display: list-item;
}

.thirdtier {
    top: 0;

}

.thirdtier li {
  left: 100%;
}
于 2013-02-13T16:38:02.990 に答える