相同。
我使用CSS:before伪选择器在下拉列表中的第一项上方创建一个块。我一直有麻烦让这个块与伪选择器创建的宽度与上面的
例如,当你将鼠标悬停在"About"上时,它下面出现的伪块的宽度应该与包含"About"的块的宽度相同。
这里是我到目前为止得到的一个小提琴:http://jsfiddle.net/jh67P/
这是我的HTML:
<nav>
<ul class="main">
<li><a href="#">About</a>
<ul class="secondary">
<li><a href="#">Learn About Us</a></li>
<li><a href="#">Nice things to know</a></li>
</ul>
</li>
<li><a href="#">Products</a>
<ul class="secondary">
<li><a href="#">Product One</a></li>
<li><a href="#">Product Two</a></li>
</ul>
</li>
<li><a href="#">Features</a>
<ul class="secondary">
<li><a href="#">Something Nice</a></li>
<li><a href="#">Another nice thing</a></li>
</ul>
</li>
</ul>
</nav>
CSS:
nav .main {
font-size: 1em;
margin: 0;
padding: 0;
list-style: none;
}
.main > li {
display: block;
position: relative;
float: left;
}
.main > li a {
display: block;
text-decoration: none;
color:#FFF;
border-top: 1px solid #ffffff;
padding: 5px 15px 5px 15px;
background: #1e7c9a;
margin-left: 1px;
white-space: nowrap;
}
.main > li a:hover {
background: #3b3b3b;
color:#FFF;
}
.secondary {
display:none;
list-style: none;
margin: 0;
padding: 0;
}
.main li:hover .secondary {
display: block;
position: absolute;
}
.main li:hover ul li {
float: none;
font-size: 1em;
}
.main > li:hover a { background: #3b3b3b; }
.main > li:hover li a:hover {
background: #1e7c9a;
}
.main li:hover ul:before {
content:'';
display:block;
width:100%;
height:10px;
border-bottom:10px solid #1e7c9a;
border-right: 10px solid transparent;
}
编辑:使用绝对定位我可以达到这个效果。这是更新后的CSS。
nav .main {
font-size: 1em;
margin: 0;
padding: 0;
list-style: none;
}
.main > li {
display: block;
position: relative;
float: left;
}
.main > li a {
display: block;
text-decoration: none;
color:#FFF;
border-top: 1px solid #ffffff;
padding: 5px 15px 5px 15px;
background: #1e7c9a;
margin-left: 1px;
white-space: nowrap;
}
.main > li a:hover {
background: #3b3b3b;
color:#FFF;
}
.secondary {
display:none;
list-style: none;
margin: 0;
padding: 0;
}
.main li:hover .secondary {
display: block;
position: absolute;
top:40px;
}
.main li:hover ul li {
float: none;
font-size: 1em;
}
.main > li:hover a { background: #3b3b3b; }
.main > li:hover li a:hover {
background: #1e7c9a;
}
.main > li:hover:after {
content:'';
display:block;
width:100%;
height:10px;
border-bottom:10px solid #1e7c9a;
border-right: 10px solid transparent;
position:absolute;
top:20px;
margin-left:1px;
}
如何改变:
.main li:hover ul:before {
:
.main > li:hover > a:after {
这是你想要的吗?
jsFiddle