我試圖創建一個純css3下拉菜單,使用僞元素:before
和:after
創建一個樣式化的工具提示箭頭,該箭頭顯示在嵌套0的「下拉」,當你懸停在頂層li
。列表項與嵌套子菜單列表之間的空白會導致懸停狀態丟失
我的問題是,只要我的鼠標離開li
我菜單消失。它不會允許我移動鼠標並將鼠標懸停在嵌套的li
上,我認爲這是因爲我在嵌套的li
和頂層li
之間存在差距,這個差距用於樣式化的僞元件工具提示箭頭。
我有一個我在做這個jfiddle的例子,它會給你更好的主意。
http://jsfiddle.net/46andtool/dS6G7/1/
HTML
<nav>
<ul id="ddmenu">
<li><a href="index.html">Homepage</a></li>
<li><a href="#">About</a>
<ul>
<li><a href="#">Our Mission</a></li>
<li><a href="#">The Staff</a></li>
<li><a href="#">History</a></li>
</ul>
</li>
<li><a href="#">Services</a>
<ul>
<li><a href="#">Donations</a></li>
<li><a href="#">Volunteering</a></li>
<li><a href="#">Housing</a></li>
</ul>
</li>
<li><a href="#">International</a>
<ul>
<li><a href="#">China</a></li>
<li><a href="#">Japan</a></li>
<li><a href="#">Canada</a></li>
<li><a href="#">Australia</a></li>
<li><a href="#">South America</a></li>
</ul>
</li>
<li><a href="contact.php">Contact Us</a></li>
</ul>
</nav>
CSS
#ddmenu {
display: block;
width: 100%;
height: 80px;
margin: 0 auto;
padding: 0 2px;
padding-top: 0px;
background: #fff;
border-radius: 1px;
border: 1px solid rgba(0, 0, 0, 0.15);
border-left: 0px;
border-right: 0px;
box-shadow: 0 1px 1px rgba(20, 20, 20, 0.2);
cursor: pointer;
outline: none;
font-weight: bold;
color: #8aa8bd;
}
#ddmenu li { display: block; position: relative; float: left; font-size: 1.45em; text-shadow: 1px 1px 0 #fff; border-right: 1px solid #dae0e5; }
#ddmenu li a {
display: block;
float: left;
padding: 0 12px;
line-height: 78px;
font-weight: bold;
text-decoration: none;
color: #FF0000;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
}
#ddmenu li:hover > a { color: #565051; background: #C0C0C0;
}
#ddmenu li:hover ul {
display: block;
}
#ddmenu li a:hover ul {
display: block;
}
#ddmenu ul {
position: absolute;
top: 88px;
width: 130px;
background: #fff;
display: none;
margin: 0;
padding: 7px 0;
list-style: none;
border-radius: 3px;
border: 1px solid rgba(0, 0, 0, 0.2);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
}
#ddmenu ul:after:hover ul {
display: block;
}
#ddmenu ul:before:hover ul {
display: block;
}
/* tooltip arrow */
#ddmenu ul:after {
content: "";
width: 0;
height: 0;
position: absolute;
bottom: 100%;
left: 8px;
border-width: 1px 8px 8px 8px;
border-style: solid;
border-color: #fff transparent;
}
#ddmenu ul:before {
content: "";
width: 0;
height: 0;
position: absolute;
bottom: 100%;
left: 4px;
border-width: 0 10px 10px 10px;
border-style: solid;
border-color: rgba(0, 0, 0, 0.1) transparent;
}
#ddmenu ul li {
display: block;
width: 100%;
font-size: 0.9em;
text-shadow: 1px 1px 0 #fff;
}
#ddmenu ul li a {
display: block;
width: 100%;
padding: 6px 7px;
line-height: 1.4em;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
}
#ddmenu ul li a:hover {
background: #C0C0C0;
}
啊好吧謝謝你向我解釋這個,我認爲這可能是一個解決方案,因爲我的推理是嵌套li消失,因爲我需要給他們一個懸停僞類,並沒有意識到這已經照顧#ddmenu li:hover ul {display:block; }'和我真正的問題是那個小的pseudoelement差距:) – user3376521