我只能更改CSS,而不能更改HTML。使用Javascript或Bootstrap解决不是一种选择。鉴于此约束,是否可以从无序列表创建下拉样式导航菜单,其中一个列表项与该组的其余部分分开?
我目前拥有的是一个如下所示的下拉菜单:
我希望能够仅使用CSS来修改导航栏以分隔登录链接。它看起来像这样:
以下是我正在处理的代码段:
.menu-bar {
background: black;
padding: 10px;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown button {
background: #FF6223;
color: #FFFFFF;
border: none;
margin: 0;
padding: 0.4em 0.8em;
font-size: 1em;
}
.dropdown .dropdown-menu {
position: absolute;
top: 100%;
display: none;
margin: 0;
list-style: none;
width: 100%;
padding: 0;
}
.dropdown:hover .dropdown-menu {
display: block;
}
.dropdown a {
display: block;
padding: 0.2em 0.8em;
text-decoration: none;
background: #CCCCCC;
color: #333333;
}
.dropdown a:hover {
background: #BBBBBB;
}

<div class="menu-bar">
<div class="dropdown">
<button>Navigate</button>
<ul class="dropdown-menu">
<li><a href="#login">Login</a></li>
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
</div>
&#13;
答案 0 :(得分:1)
试试这个。
.menu-bar {
background: black;
padding: 10px;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown button {
background: #FF6223;
color: #FFFFFF;
border: none;
margin: 0;
padding: 0.4em 0.8em;
font-size: 1em;
}
.dropdown .dropdown-menu {
position: absolute;
top: 100%;
display: block;
margin: 0;
list-style: none;
width: 100%;
padding: 0;
}
.dropdown:hover .dropdown-menu li:not(:first-child) a {
position: static;
}
.dropdown a {
display: block;
padding: 0.2em 0.8em;
text-decoration: none;
background: #CCCCCC;
color: #333333;
position: absolute;
top: -9999px;
}
.dropdown a:hover {
background: #BBBBBB;
}
.dropdown .dropdown-menu li:first-child {
bottom: 100%;
left: 100%;
position: absolute;
padding-left: 5px;
}
.dropdown .dropdown-menu li:first-child a {
position: static;
background: #fff;
padding: 0.4em 0.8em;
font-size: 1em;
}
答案 1 :(得分:1)
这可能是一个解决方案。
HERE完整的小提琴。
.dropdown .dropdown-menu {
position: absolute;
top: 100%;
/*display:none;*/
margin: 0;
list-style: none;
width: 100%;
padding: 0;
}
.dropdown .dropdown-menu li{
display:none;
}
.dropdown:hover .dropdown-menu li{
display:block;
}
.dropdown:hover .dropdown-menu li:first-child:hover ~ li{
display:none;
}
.dropdown a {
display: block;
padding: 0.2em 0.8em;
text-decoration: none;
background: #CCCCCC;
color: #333333;
}
.dropdown a:hover {
background: #BBBBBB;
}
.dropdown ul.dropdown-menu li:first-child{
display:block !important;
position: absolute;
left: 120px;
top: -27px;
z-index: 2;
background: white;
}
答案 2 :(得分:-1)
.menu-bar {
background: black;
padding: 10px;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown button, .loginBtn {
background: #FF6223;
color: #FFFFFF;
border: none;
margin: 0;
padding: 0.4em 0.8em;
font-size: 1em;
}
.dropdown .dropdown-menu {
position: absolute;
top: 100%;
display: none;
margin: 0;
list-style: none;
width: 100%;
padding: 0;
}
.dropdown:hover .dropdown-menu {
display: block;
}
.dropdown a {
display: block;
padding: 0.2em 0.8em;
text-decoration: none;
background: #CCCCCC;
color: #333333;
}
.dropdown a:hover {
background: #BBBBBB;
}
&#13;
<div class="menu-bar">
<div class="dropdown">
<button>Navigate</button>
<ul class="dropdown-menu">
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<div class="dropdown">
<a class="loginBtn" href="#login">Login</a>
</div>
</div>
&#13;