有一个包含<ul>
和<li>
的侧边栏菜单,其中一些<li>
内部还有另一个<ul>
和<li>
。当我将鼠标悬停在<li>
上时,它会显示另一个<ul>
。我现在所面对的是,当我将鼠标悬停在<li>
和<ul>
上时,它就会显示在其中。全部充满了背景色。但是,我只需要在第一个<li>
上显示它,而不是其他。下面的图片中包含示例。
第一个图像是我的尝试。第二张图片是我想要的。
这里是代码
/* Menu CSS */#cssmenu,
#cssmenu > ul {
background: url(images/highlight-bg.png) repeat;
padding-bottom: 3px;
font-family: Verdana, Geneva, Tahoma, sans-serif;
}
#cssmenu:before,
#cssmenu:after,
#cssmenu > ul:before,
#cssmenu > ul:after {
content: "";
display: table;
}
#cssmenu:after,
#cssmenu > ul:after {
clear: both;
}
#cssmenu {
width: auto;
zoom: 1;
width: 100%;
}
#cssmenu > ul {
margin: 0;
padding: 0;
position: relative;
background-color: rgba(0, 0, 0, 0.7);
}
#cssmenu > ul li {
margin: 0;
padding: 0;
list-style: none;
}
#cssmenu > ul > li {
float: left;
position: relative;
cursor: pointer;
}
#cssmenu > ul > li > a {
padding-top: 6px;
padding-bottom: 6px;
display: block;
color: white;
font-size: 13px;
text-decoration: none;
text-transform: uppercase;
line-height: 18px;
}
#cssmenu > ul > li:hover > a {
background: #d6d6d6; /* Old browsers */
background: -moz-linear-gradient(top, #d6d6d6 0%, #e56e1d 49%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, #d6d6d6 0%,#e56e1d 49%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, #d6d6d6 0%,#e56e1d 49%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d6d6d6', endColorstr='#e56e1d',GradientType=0 ); /* IE6-9 */
}
#cssmenu > ul > li > a > span {
line-height: 18px;
font-size: 12px;
border-right: rgb(255, 255, 255, 0.5) solid 1px;
padding-right: 38px;
padding-left: 38px;
}
/*
#cssmenu > ul > li.active > a,
#cssmenu > ul > li > a:active {
background-color: rgba(0, 0, 0, 0.7);
}
*/
/* Childs */
#cssmenu > ul ul {
opacity: 0;
visibility: hidden;
position: absolute;
margin: 0;
padding: 0;
z-index: -1;
}
#cssmenu > ul li:hover ul {
opacity: 1;
visibility: visible;
margin: 0;
color: #000;
z-index: 2;
left: 0;
}
#cssmenu > ul ul:before {
content: "";
position: absolute;
top: -10px;
width: 100%;
height: 20px;
background: transparent;
}
#cssmenu > ul ul li {
list-style: none;
padding: 0;
margin: 0;
width: 100%;
}
#cssmenu > ul ul li a {
padding: 6px 26px;
background-color: #e56e1d;
display: block;
color: white;
font-size: 13px;
text-decoration: none;
width: 194px;
border-left: 4px solid transparent;
}
#cssmenu > ul ul li a:hover {
background-color: #ee974f;
}
<ul id="sidebar">
<li><a href='#'><span>Lorem ipsum dolor sit </span></a></li>
<li><a href='#'><span>Amet, consectetur </span></a></li>
<li><a href='#'><span>Adipisici elit, sed </span></a></li>
<li><a href='#'><span>Eiusmod </span></a>
<li><a href='#'><span>Tempor incidunt </span></a>
<ul>
<li><a href='#'><span>Excepteur</span></a></li>
<li><a href='#'><span>Sint obcaecat</span></a></li>
<ul>
<li><a href='#'><span>Obcaecat</span></a></li>
<li><a href='#'><span>Cupiditat</span></a></li>
</ul>
<li><a href='#'><span>Cupiditat non </span></a></li>
<li><a href='#'><span>Proident.</span></a></li>
</ul>
</li>
<li><a href='#'><span>Ut labore et </span></a>
<li><a href='#'><span>Dolore magna aliqua</span></a>
</ul>
答案 0 :(得分:0)
您应该只更改要定位的链接的背景,而不是也包含子菜单的li标签。
.sidebar > li > a {
background-color: blue;
}
刚刚在CSS中注意到您将链接定位为目标,但是链接颜色开始时是悬停颜色...这是一个小提琴:
https://jsfiddle.net/kbmr4wy9/2/
您将要在选择器中编辑背景:
#cssmenu > ul ul li a {}
答案 1 :(得分:0)
临时雇员列表项在其中包括嵌套的ul
。这意味着,当您将背景应用于li
时,还将为嵌套列表提供背景。
为了将其更改为您期望的结果,以下是两个合理的解决方案:
<a href='#'><span>Tempor incidunt </span></a>
的宽度横跨整个导航,请将背景应用于此锚元素而不是li
。之所以有效,是因为anchor标记不会包裹嵌套的ul
。ul
设为灰色背景。这将覆盖蓝色渐变,并使其按您的设计预期显示。这两种解决方案均有效。如果我是你,我会倾向于(1),因为它稍微干净一些。但是,它确实需要您的锚标签为全角。但是,这可能会提高可用性,因为单击目标的宽度与导航的宽度相同。