使用css在悬停时展开下拉菜单

Posted

技术标签:

【中文标题】使用css在悬停时展开下拉菜单【英文标题】:Expanding drop down menu on hover using css 【发布时间】:2017-10-22 20:10:20 【问题描述】:

我正在尝试为我的导航栏获取一个下拉菜单,以便当我将鼠标悬停在选项卡上时,它会打开一个包含更多选项的下拉菜单。这是我的代码的fiddle。最终的产品应该看起来像this,现在我只想修复悬停部分的下拉菜单。

这是我在 css 中使用的代码 sn-p 来尝试实现这一点:

.dropdown 
    display: none


.navbar-list li:hover .dropdown 
    display: relative;
    color: white;
    text-decoration: none;

【问题讨论】:

你尝试了错误的方法,检查我的答案 @LokeshGupta 我已经尝试过display:block;,它不起作用。 通过小提琴链接检查更新答案。 【参考方案1】:

您尝试了错误的方法,请更改您的 css 部分

.navbar-list li:hover .dropdown 
    display: block;
    color: white;
    text-decoration: none;



<ul class="navbar-list">
    <li class="navbar-tags"><a href="#">OUR DNA</a>
    <ul class="dropdown">
        <li><a href="">Risk</a></li>
</ul>
   </li>

update code

【讨论】:

【参考方案2】:

您的 html 结构错误,悬停时需要使用display: block,而不是display: relative

但是回复:HTML,ul 不能是 ul 的直接子代。您需要将下拉菜单嵌套在 li 中。这不仅是正确的标记,而且当您将鼠标悬停在具有嵌套菜单的 li 上时,它允许悬停持续存在。否则,您将需要使用li:hover + .dropdown 来显示下一个.dropdown 菜单,但是一旦您的鼠标离开li,您的:hover 就会停止。

此外,单个嵌套导航元素中的每个ul.dropdown 可能只是单个ul 中的li,但你所拥有的并不正确,所以我没有改变它。

.dropdown 
  display: none


.navbar-tags:hover > .dropdown 
  display: block;
  color: white;
  text-decoration: none;


.navbar-list a 
  color: black;
  text-decoration: none;


.navbar-tags 
  margin: 20px;


.navbar-tags, .dropdown  
  padding: 0;
  list-style-type: none;
<ul class="navbar-list">
  <li class="navbar-tags">
    <a href="#">OUR DNA</a>
    <ul class="dropdown">
      <li><a href="">Risk</a></li>
    </ul>
  </li>
  <li class="navbar-tags"><a href="#">PROGRAMS</a>
    <ul class="dropdown">
      <li><a href="">Adventure Sport</a></li>
    </ul>
    <ul class="dropdown">
      <li><a href="">Entertainment</a></li>
    </ul>
    <ul class="dropdown">
      <li><a href="">Collegiate</a></li>
    </ul>
    <ul class="dropdown">
      <li><a href="">Individual</a></li>
    </ul>
    <ul class="dropdown">
      <li><a href="">Commercial</a></li>
    </ul>
  </li>
  <li class="navbar-tags"><a href="#">RESEARCH</a>
    <ul class="dropdown">
      <li><a href="">Corporate Survey</a></li>
    </ul>
    <ul class="dropdown">
      <li><a href="">Individual Survey</a></li>
    </ul>
  </li>
  <li class="navbar-tags"><a href="#">STORIES</a></li>
</ul>

【讨论】:

投反对票的人能解释一下原因吗?我想知道我是否犯了错误。 感谢您的回答我只有最后一个问题,如何对齐选项卡左侧下拉的选项? @shortcut 不客气。删除默认填充。更新了我的答案。 谢谢,非常感谢您的帮助。【参考方案3】:

1 ) 你的 HTML 结构是错误的。

2) 使用display: block 而不是display: relative

像这样更改您的代码:

.dropdown 
    display: none


.navbar-list li:hover > .dropdown 
    display: block;
    color: white;
    text-decoration: none;


.navbar-list a 
    color: black;
    text-decoration: none;


.navbar-tags 
    padding: 0;
    list-style-type: none;
    margin: 20px;
<ul class="navbar-list">
            <li class="navbar-tags"><a href="#">OUR DNA</a>
            <ul class="dropdown">
                <li><a href="">Risk</a></li>
            </ul>
            </li>
            <li class="navbar-tags"><a href="#">PROGRAMS</a>
            <ul class="dropdown">
                <li><a href="">Professional</a></li>
            </ul>
            <ul class="dropdown">
                <li><a href="">Adventure Sport</a></li>
            </ul>
            <ul class="dropdown">
                <li><a href="">Entertainment</a></li>
            </ul>
            <ul class="dropdown">
                <li><a href="">Collegiate</a></li>
            </ul>
            <ul class="dropdown">
                <li><a href="">Individual</a></li>
            </ul>
            <ul class="dropdown">
                <li><a href="">Commercial</a></li>
            </ul>
            </li>
            <li class="navbar-tags"><a href="#">RESEARCH</a>
            <ul class="dropdown">
                <li><a href="">Corporate Survey</a></li>
            </ul>
            <ul class="dropdown">
                <li><a href="">Individual Survey</a></li>
            </ul>
            </li>
            <li class="navbar-tags"><a href="#">STORIES</a></li>
        </ul>

【讨论】:

以上是关于使用css在悬停时展开下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何使用硒悬停在komoot上并展开下拉菜单?

悬停后保持下拉菜单打开(CSS)

仅使用 CSS 在悬停时显示下拉菜单并在单击时关闭

CSS菜单在没有悬停时下拉

css下拉菜单悬停时延迟1秒

在 iOS 上单击和/或悬停时打开 CSS 下拉菜单