从第一项单独出现的无序列表创建下拉菜单
Create drop down menu from unordered list where first item appears separate
我只能更改 CSS,不能更改 HTML。用 Javascript 或 Bootstrap 求解不是一种选择。鉴于此约束,是否可以从其中一个列表项与组的其余项分开的无序列表创建下拉式导航菜单?
我目前拥有的是一个如下所示的下拉菜单:
我希望仅使用 CSS 就可以做的是修改导航栏以分隔登录 link。它看起来像这样:
这是我正在处理的代码片段:
.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>
试试这个。
.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;
}
.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;
}
<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>
这可能是一个解决方案。
HERE 完整 Fiddle.
.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;
}
我只能更改 CSS,不能更改 HTML。用 Javascript 或 Bootstrap 求解不是一种选择。鉴于此约束,是否可以从其中一个列表项与组的其余项分开的无序列表创建下拉式导航菜单?
我目前拥有的是一个如下所示的下拉菜单:
我希望仅使用 CSS 就可以做的是修改导航栏以分隔登录 link。它看起来像这样:
这是我正在处理的代码片段:
.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>
试试这个。
.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;
}
.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;
}
<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>
这可能是一个解决方案。
HERE 完整 Fiddle.
.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;
}