1

我正在努力尝试在 ul hover 上显示第三级 - 我现在遇到的问题是您必须将鼠标悬停在父级上才能显示它们。

JsFiddle:http: //jsfiddle.net/natedriver/kFffR/3/

/*** ESSENTIAL STYLES ***/
.sf-menu, .sf-menu * {
margin: 0;
padding: 0;
list-style: none;
}
.sf-menu {
line-height: 1.0;
}
.sf-menu ul {
position: absolute;
top: -999em;
width: 600px;
height: 300px;

/* left offset of submenus need to match (see below) */
}
.sf-menu ul li {
width: 100%;
}
.sf-menu li:hover {
visibility: inherit;
/* fixes IE7 'sticky bug' */
}
.sf-menu li {
float: left;
position: relative;
}
.sf-menu a {
display: block;
position: relative;
}
.sf-menu li:hover ul, .sf-menu li.sfHover ul {
left: 0;
top: 2.5em;
/* match top ul list item height */
z-index: 99;
}
ul.sf-menu li:hover li ul, ul.sf-menu li.sfHover li ul {
top: -999em;

}
/*commenting this out, I don't want to see any ul 3 level items and deeper*/
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
left: 0em;
top: 0;
width: 100%
}


/* commenting this out, it would apply to uls 4 levels deeper, but this is already     
inherited above
ul.sf-menu li li:hover li ul,
ul.sf-menu li li.sfHover li ul {
top: -999em;
}

ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
left: 20em; /* match ul width
top: 0;
}
*/

/*** DEMO SKIN ***/
.sf-menu {
float: left;
margin-bottom: 1em;
}
.sf-menu a {
border: 0;
border-left: 1px solid #fff;
padding: .75em 1em;
text-decoration: none;
}
.sf-menu a, .sf-menu a:visited {
/* visited pseudo selector so IE6 applies text colour*/
color: #fff;
}
.sf-menu li {
background: #000;
}
.sf-menu li:hover {
background: #7b7b7b;
}
.sf-menu > li {
width: 10em;
}
/* this is necessary for implementing the right 1/2 of nav menu & it's submenu, otherwise 
don't know how much negative left positioning to apply */

/* 2nd level items */
.sf-menu li li * {
padding: .5em .5em .5em 0em;
margin: 0;
background: #7b7b7b;
}
.sf-menu li li {
margin: 0 .2em;
}
.sf-menu li ul {
padding: .5em 1em;
background: #7b7b7b;
border: 0;
border-left: 1px solid #fff;
border-bottom: 3px solid #000;
}
.sf-menu li li {
width: 45%;
}
/* places list items into "columns" */
.sf-menu li li a {
border: 0;
}
/* rids of right border specified for level 1 */
.sf-menu li li a:hover {
text-decoration: underline;
 }
.sf-menu li li:nth-child(odd) {
clear: left;
}
/* this is important so that long items in 2nd level don't make floats weird looking, 
doesn't   seem to work in IE */

/* for the right half of navigation; basically takes submenu and pushes it leftward,    
 rather than rightward */

/* sucky thing is that need to specify id's */
#level-e ul, #level-e:hover ul, #level-e.sfhover ul, #level-f ul, #level-f:hover ul,   
#level-f.sfhover ul, #level-g ul, #level-g:hover ul, #level-g.sfhover ul, #level-h ul, 
#level-h:hover ul, #level-h.sfhover ul {
left: -12em;
border: 0;
border-right: 1px solid #fff;
border-bottom: 3px solid #000;
}
/*** arrows **/
.sf-menu a.sf-with-ul {
padding-right: 2.25em;
min-width: 1px;
/* trigger IE7 hasLayout so spans position accurately */
}
.sf-sub-indicator {
position: absolute;
display: block;
right: .75em;
top: 1.05em;
/* IE6 only */
width: 10px;
height: 10px;
text-indent: -999em;
overflow: hidden;
background: url('../images/arrows-ffffff.png') no-repeat -10px -100px;
/* 8-bit indexed alpha png. IE6 gets solid image only */
}
a > .sf-sub-indicator {
/* give all except IE6 the correct values */
top: .8em;
background-position: 0 -100px;
/* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
a:focus > .sf-sub-indicator, a:hover > .sf-sub-indicator, a:active > .sf-sub-indicator,     
li:hover > a > .sf-sub-indicator, li.sfHover > a > .sf-sub-indicator {
background-position: -10px -100px;
/* arrow hovers for modern browsers*/
}
/* point right for anchors in subs */
.sf-menu ul .sf-sub-indicator {
 background: none;
}
.sf-menu ul a > .sf-sub-indicator {
background: none;
}
/* apply hovers to modern browsers */
.sf-menu ul a:focus > .sf-sub-indicator, .sf-menu ul a:hover > .sf-sub-indicator, .sf-menu 
ul a:active > .sf-sub-indicator, .sf-menu ul li:hover > a > .sf-sub-indicator, .sf-menu ul   
li.sfHover > a > .sf-sub-indicator {
background-position: -10px 0;
/* arrow hovers for modern browsers*/
}
/*** shadows for all but IE6 ***/
.sf-shadow ul {
background: url('../images/shadow.png') no-repeat bottom right;
padding: 0 8px 9px 0;
-moz-border-radius-bottomleft: 17px;
-moz-border-radius-topright: 17px;
-webkit-border-top-right-radius: 17px;
-webkit-border-bottom-left-radius: 17px;
 }
 .sf-shadow ul.sf-shadow-off {
 background: transparent;
 }

我希望菜单的行为方式是始终显示第 3 级,而不必将鼠标悬停在第 2 级菜单上。例如,请访问 whitehouse.gov 并查看他们的菜单结构。

4

0 回答 0