我如何 create/fix 移动响应式浏览的垂直导航选项卡?
How can I create/fix vertical navigation tabs for mobile responsive browsing?
我不知道如何用一个简单的标题问题来真正解释这一点,但我有一个示例页面可以向您展示我在 http://www.yenrac.net/test
的意思
如您所见,我在使用下拉菜单时遇到了问题。每当我将鼠标悬停在下拉列表 'accordion' 中的下一个类别时,如果他们的浏览器在 window 中,它就会跳回并使用桌面光标。另一件事是移动用户不能再次单击框 link 来关闭下拉菜单,这是我想解决的其他问题。有人可以看看这个并帮助我弄清楚我做错了什么吗?
这是我的HTML:http://pastebin.com/RkFs97wH
<nav>
<ul id="navigation">
<li><a id="current" href="index.html">Home</a></li>
<li><a href="#">FAQ</a></li>
<li><a class="dropdown" href="#">Dropdown</a>
<ul>
<li>
<a class="pullout" href="#">Pullout Tab</a>
<ul>
<li><a href="#">Tier 3 Tab</a></li>
</ul>
</li>
<li>
<a class="pullout" href="#">Pullout Tab 2</a>
<ul>
<li><a href="#">Tier 3 Tab</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Servers</a></li>
<li id="last"><a href="#">Contact Us</a></li>
</ul>
</nav>
这是我的CSS:http://pastebin.com/ttYh0Qz6
/* Set to very large range just for convenience of testing */
@media screen and (max-width: 10000px) {
#postdatemeta {
visibility: visible;
}
.postdate {
visibility: hidden;
}
nav ul {
list-style-type: none;
margin: 0 auto;;
padding: 0;
width: 98%;
}
nav li a {
display: block;
color: #fff;
padding: 1em 0;
margin: 0.3em auto;;
text-decoration: none;
text-align: center;
background: #000;
}
nav ul ul {
position: absolute;
visibility:hidden;
}
nav ul li:hover > ul {
visibility: visible;
position: relative;
}
nav ul ul li a {
background: #999;
}
.pullout:after {
content: "[=12=]0020[=12=]25BE";
}
非常感谢您能提供给我的任何帮助和反馈!
您正在向 a
元素添加 margin
,但父项 li
当前会忽略这些边距,因此当您将鼠标悬停在边距上时,它会识别出您在移动鼠标离开 li
,因此 :hover
状态消失,导致菜单折叠。
尝试添加以下内容:
nav li {
width: 100%;
display: inline-block;
}
这允许 li
元素包裹 a
元素,包括边距,因此当鼠标悬停在它们上方时,:hover
状态保持不变。
@media screen and (max-width: 10000px) {
nav ul {
list-style-type: none;
margin: 0 auto;
;
padding: 0;
width: 98%;
}
nav li {
width: 100%;
display: inline-block;
}
nav li a {
display: block;
color: #fff;
padding: 1em 0;
margin: 0.3em auto;
;
text-decoration: none;
text-align: center;
background: #000;
}
nav ul ul {
position: absolute;
visibility: hidden;
}
nav ul li:hover > ul {
visibility: visible;
position: relative;
}
nav ul ul li a {
background: #999;
}
.pullout:after {
content: "[=11=]0020[=11=]25BE";
}
}
<nav>
<ul id="navigation">
<li><a id="current" href="index.html">Home</a>
</li>
<li><a href="#">FAQ</a>
</li>
<li><a class="dropdown" href="#">Dropdown</a>
<ul>
<li>
<a class="pullout" href="#">Pullout Tab</a>
<ul>
<li><a href="#">Tier 3 Tab</a>
</li>
</ul>
</li>
<li>
<a class="pullout" href="#">Pullout Tab 2</a>
<ul>
<li><a href="#">Tier 3 Tab</a>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Servers</a>
</li>
<li id="last"><a href="#">Contact Us</a>
</li>
</ul>
</nav>
我不知道如何用一个简单的标题问题来真正解释这一点,但我有一个示例页面可以向您展示我在 http://www.yenrac.net/test
的意思如您所见,我在使用下拉菜单时遇到了问题。每当我将鼠标悬停在下拉列表 'accordion' 中的下一个类别时,如果他们的浏览器在 window 中,它就会跳回并使用桌面光标。另一件事是移动用户不能再次单击框 link 来关闭下拉菜单,这是我想解决的其他问题。有人可以看看这个并帮助我弄清楚我做错了什么吗?
这是我的HTML:http://pastebin.com/RkFs97wH
<nav>
<ul id="navigation">
<li><a id="current" href="index.html">Home</a></li>
<li><a href="#">FAQ</a></li>
<li><a class="dropdown" href="#">Dropdown</a>
<ul>
<li>
<a class="pullout" href="#">Pullout Tab</a>
<ul>
<li><a href="#">Tier 3 Tab</a></li>
</ul>
</li>
<li>
<a class="pullout" href="#">Pullout Tab 2</a>
<ul>
<li><a href="#">Tier 3 Tab</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Servers</a></li>
<li id="last"><a href="#">Contact Us</a></li>
</ul>
</nav>
这是我的CSS:http://pastebin.com/ttYh0Qz6
/* Set to very large range just for convenience of testing */
@media screen and (max-width: 10000px) {
#postdatemeta {
visibility: visible;
}
.postdate {
visibility: hidden;
}
nav ul {
list-style-type: none;
margin: 0 auto;;
padding: 0;
width: 98%;
}
nav li a {
display: block;
color: #fff;
padding: 1em 0;
margin: 0.3em auto;;
text-decoration: none;
text-align: center;
background: #000;
}
nav ul ul {
position: absolute;
visibility:hidden;
}
nav ul li:hover > ul {
visibility: visible;
position: relative;
}
nav ul ul li a {
background: #999;
}
.pullout:after {
content: "[=12=]0020[=12=]25BE";
}
非常感谢您能提供给我的任何帮助和反馈!
您正在向 a
元素添加 margin
,但父项 li
当前会忽略这些边距,因此当您将鼠标悬停在边距上时,它会识别出您在移动鼠标离开 li
,因此 :hover
状态消失,导致菜单折叠。
尝试添加以下内容:
nav li {
width: 100%;
display: inline-block;
}
这允许 li
元素包裹 a
元素,包括边距,因此当鼠标悬停在它们上方时,:hover
状态保持不变。
@media screen and (max-width: 10000px) {
nav ul {
list-style-type: none;
margin: 0 auto;
;
padding: 0;
width: 98%;
}
nav li {
width: 100%;
display: inline-block;
}
nav li a {
display: block;
color: #fff;
padding: 1em 0;
margin: 0.3em auto;
;
text-decoration: none;
text-align: center;
background: #000;
}
nav ul ul {
position: absolute;
visibility: hidden;
}
nav ul li:hover > ul {
visibility: visible;
position: relative;
}
nav ul ul li a {
background: #999;
}
.pullout:after {
content: "[=11=]0020[=11=]25BE";
}
}
<nav>
<ul id="navigation">
<li><a id="current" href="index.html">Home</a>
</li>
<li><a href="#">FAQ</a>
</li>
<li><a class="dropdown" href="#">Dropdown</a>
<ul>
<li>
<a class="pullout" href="#">Pullout Tab</a>
<ul>
<li><a href="#">Tier 3 Tab</a>
</li>
</ul>
</li>
<li>
<a class="pullout" href="#">Pullout Tab 2</a>
<ul>
<li><a href="#">Tier 3 Tab</a>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Servers</a>
</li>
<li id="last"><a href="#">Contact Us</a>
</li>
</ul>
</nav>