我的导航栏有问题。制作一个的过程已经完成,但是当我将鼠标悬停在nav
上并且出现子导航时,它下面的所有文本都会向下移动。
我该如何解决这个问题?
下面是演示问题的代码片段,将鼠标悬停在TAKKEN
上以查看问题:
.horizontal {
list-style-type: none;
margin: 40 auto;
width: 640px;
padding: 0;
overflow: hidden;
}
.horizontal>li {
float: left;
}
.horizontal li ul {
display: none;
margin: 0;
padding: 0;
list-style: none;
position: relative;
width: 100%;
}
.horizontal li:hover ul {
display: block;
}
.horizontal li a {
display: block;
text-decoration: none;
text-align: center;
padding: 22px 10px;
font-family: arial;
font-size: 8pt;
font-weight: bold;
color: #FFFFFF;
text-transform: uppercase;
border-right: 1px solid #607987;
background-color: #006600;
letter-spacing: .08em;
}
.horizontal li a:hover {
background-color: darkorange;
color: #a2becf
}
.horizontal li:first-child a {
border-left: 0;
}
.horizontal li:last-child a {
border-right: 0;
}
<nav id="mainnav">
<ul class="horizontal">
<li><a href="#">Home</a></li>
<li><a href="">Planning</a></li>
<li><a href="">Takken</a>
<ul>
<li><a href="">Kapoenen</a></li>
<li><a href="">Kawellen</a></li>
<li><a href="">Kajoo's</a></li>
<li><a href="">Jojoo's</a></li>
<li><a href="">Givers</a></li>
<li><a href="">Jin</a></li>
<li><a href="">Akabe</a></li>
</ul>
</li>
<li><a href="" title="">Kleding</a></li>
<li><a href="" title="">Contact</a>
<ul>
<li><a href="">Leiding</a></li>
<li><a href="">Verhuur</a></li>
</ul>
</li>
<li><a href="" title="">Inschrijven</a></li>
</ul>
</nav>
Here is some text below the nav.
显示问题的图像
尝试为 li 元素指定固定宽度。
检查这个:
.horizontal {
list-style-type: none;
margin: 40 auto;
width: 640px;
padding: 0;
overflow: hidden;
}
.horizontal > li {
float: left;
width: 6rem;
}
.horizontal li ul{
display: none;
margin: 0;
padding: 0;
list-style: none;
position: relative;
width: 100%;
}
.horizontal li:hover ul {
display: inline-block;
}
.horizontal li a{
display: block;
text-decoration: none;
text-align: center;
padding: 22px 10px;
font-family: arial;
font-size: 8pt;
font-weight: bold;
color:#FFFFFF;
text-transform: uppercase;
border-right: 1px solid #607987;
background-color: #006600;
letter-spacing: .08em;
}
.horizontal li a:hover {
background-color: darkorange;
color:#a2becf
}
.horizontal li:first-child a { border-left:0; }
.horizontal li:last-child a { border-right:0; }
<nav id="mainnav">
<ul class="horizontal">
<li><a href="#">Home</a></li>
<li><a href="">Planning</a></li>
<li><a href="">Takken</a>
<ul>
<li><a href="">Kapoenen</a></li>
<li><a href="">Kawellen</a></li>
<li><a href="">Kajoo's</a></li>
<li><a href="">Jojoo's</a></li>
<li><a href="">Givers</a></li>
<li><a href="">Jin</a></li>
<li><a href="">Akabe</a></li>
</ul>
</li>
<li><a href="" title="">Kleding</a></li>
<li><a href="" title="">Contact</a>
<ul>
<li><a href="">Leiding</a></li>
<li><a href="">Verhuur</a></li>
</ul>
</li>
<li><a href="" title="">Inschrijven</a></li>
</ul>
</nav>
您的nav
似乎有 2 个与样式相关的问题。
- 当您将鼠标悬停在
TAKKEN
上时,元素会移动到一侧。
发生这种情况是因为文本KAPOENEN
和KAWELLEN
更长,因此比TAKKEN
更宽。最快的解决方法是为nav
中的每个项目定义特定的宽度。
- 一旦
- 其中一个子导航打开,
nav
下面的任何文本都会向下移动。
要解决此问题,您需要为nav
提供一个absolute
位置,并在 HTML 中在其正上方div
添加一个占位符。
运行下面的代码片段以查看这两点的演示。我已经使用注释标记了我在 CSS 中的所有更改。
/* New code */
#placeholder {
height: 100px;
}
nav {
position: absolute;
top: 5px;
}
/* End new code */
.horizontal {
list-style-type: none;
margin: 40 auto;
width: 640px;
padding: 0;
overflow: hidden;
}
.horizontal>li {
float: left;
}
.horizontal li ul {
display: none;
margin: 0;
padding: 0;
list-style: none;
position: relative;
width: 100%;
}
.horizontal li:hover ul {
display: block;
}
.horizontal li a {
display: block;
text-decoration: none;
text-align: center;
padding: 22px 10px;
font-family: arial;
font-size: 8pt;
font-weight: bold;
color: #FFFFFF;
text-transform: uppercase;
border-right: 1px solid #607987;
background-color: #006600;
letter-spacing: .08em;
/* New code */
width: 80px;
}
.horizontal li a:hover {
background-color: darkorange;
color: #a2becf
}
.horizontal li:first-child a {
border-left: 0;
}
.horizontal li:last-child a {
border-right: 0;
}
<div id="placeholder"></div>
<nav id="mainnav">
<ul class="horizontal">
<li><a href="#">Home</a></li>
<li><a href="">Planning</a></li>
<li><a href="">Takken</a>
<ul>
<li><a href="">Kapoenen</a></li>
<li><a href="">Kawellen</a></li>
<li><a href="">Kajoo's</a></li>
<li><a href="">Jojoo's</a></li>
<li><a href="">Givers</a></li>
<li><a href="">Jin</a></li>
<li><a href="">Akabe</a></li>
</ul>
</li>
<li><a href="" title="">Kleding</a></li>
<li><a href="" title="">Contact</a>
<ul>
<li><a href="">Leiding</a></li>
<li><a href="">Verhuur</a></li>
</ul>
</li>
<li><a href="" title="">Inschrijven</a></li>
</ul>
</nav>
Here is some text under the nav.