H3和列表下拉菜单CSS3

问题描述:

得到了一个HTML列表与CSS下拉菜单的工作,当你通过像在我的例子“产品展示”一< LI>元素徘徊。但是我想要的效果与通过< h3>像我的示例中的“联系人”一样悬停时效果相同。可能吗?H3和列表下拉菜单CSS3

这里的HTML:

<h3>Contact</h3> 
<ul> 

    <li><a href="#">Home</a></li> 
    <li><a href="#">About</a></li> 
    <li> 
     <a href="#">Products &#9662;</a> 
     <ul> 
      <li><a href="#">Laptops</a></li> 
      <li><a href="#">Monitors</a></li> 
      <li><a href="#">Printers</a></li> 
     </ul> 
    </li> 
    <li><a href="#">Contact</a></li> 
</ul> 

而且CSS代码:

ul li ul { 
    display: none; 
} 

ul li:hover ul{ 
    display: block; /* display the dropdown */ 
} 

非常感谢你提前。

+0

你可以强调你想要的H3做什么?如果你想联系悬停和具有列表项显示块,你要么将不得不使用JavaScript/jQuery的或你将不得不窝在列表项H3 – Enjayy 2015-03-30 23:16:19

悬停时,你只能控制CSS鼠标悬停在其上的元素,或悬停在其上的元素(其子项之一)中的元素的CSS。 所以,当你将鼠标悬停在h3因为他们1)是不是同一个对象,你不能让ul改变风格和2)不具有父子关系(他们是兄弟姐妹)。

要将鼠标悬停在h3上时显示菜单,可以将它们都包装在另一个对象(div)中并将其用于悬停事件。为了区分两种悬停方式,您可以将类名添加到ul

See this JSfiddle,或者下面的代码:

<div class="container"> 
    <h3>Contact</h3> 
    <ul class="menu"> 
     <li><a href="#">Home</a></li> 
     <li><a href="#">About</a></li> 
     <li> 
      <a href="#">Products &#9662;</a> 
      <ul class="submenu"> 
       <li><a href="#">Laptops</a></li> 
       <li><a href="#">Monitors</a></li> 
       <li><a href="#">Printers</a></li> 
      </ul> 
     </li> 
     <li><a href="#">Contact</a></li> 
    </ul> 
</div> 
.container ul{ 
    display: none; 
} 
.container:hover ul.menu{ 
    display: block; 
} 
ul li ul.submenu { 
    display: none; 
} 

ul li:hover ul{ 
    display: block; /* display the dropdown */ 
} 
+0

谢谢大家!这正是我想要的:) – user3321425 2015-03-30 23:29:32

总之 - 你应该巢ulh3

<h3> 
    Contact 
    <ul> 
     <li><a href="#">Home</a></li> 
     <li><a href="#">About</a></li> 
     <li> 
      <a href="#">Products &#9662;</a> 
      <ul> 
       <li><a href="#">Laptops</a></li> 
       <li><a href="#">Monitors</a></li> 
       <li><a href="#">Printers</a></li> 
      </ul> 
     </li> 
     <li><a href="#">Contact</a></li> 
    </ul> 
</h3> 

而且在你的CSS:

ul li ul { 
    display: none; 
} 

ul li:hover ul{ 
    display: block; /* display the dropdown */ 
} 
h3 > ul { 
    display: none; 
} 
h3:hover > ul { 
    display: block; 
} 

这里的演示:https://jsfiddle.net/mscehjLf/1/

+0

内根据W3C,只有[段落式内容(HTTP:/ /www.w3.org/TR/html-markup/terminology.html#phrasing-content)允许一个[H3标签]内(http://www.w3.org/TR/html-markup/h3.html) 。 'ul'是[流动元件(http://www.w3.org/TR/html-markup/common-models.html#common.elem.phrasing),并且不应当被使用。看到我的答案替代。 – Jasper 2015-03-30 23:29:51

+0

@Jasper 100%同意。这就是为什么我标记它'总之';) – oleynikd 2015-03-30 23:34:50