【问题标题】:CSS dropdown menu takes entire page width?CSS下拉菜单占用整个页面宽度?
【发布时间】:2017-11-27 04:41:05
【问题描述】:

我正在处理的页面顶部有一个简单的导航菜单。当您将鼠标悬停在导航菜单上时,我希望导航菜单上的其中一个链接在其下方弹出一个下拉菜单。

我的下拉菜单显示得很好。唯一的问题是下拉菜单项是整个页面的宽度,而不是导航菜单项的宽度。我不确定是什么原因造成的...

这里是导航菜单和下拉菜单的 html 和 css:

.dropdown {
  float: left;
  background-color: #FFF0F5; 
}

.dropDiv {
  position: relative;
  display: inline-block;
  width: 100%;
}

.dropdownContent {
  display: none;
  background-color: #FFF0F5;
  z-index: 1;
  width: 300px;
  overflow-x: hidden;
}

.dropdownContent a {
  display: block;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  width: 300px;
}

.dropdownContent a:hover {
  background-color: #fff8dc;
}

.dropDiv:hover .dropdownContent {
  display: block;
  z-index: 1;
  height: 200px;
  width: 300px;
  overflow-x: hidden;
}

.dropDiv:hover .dropdown {
  background-color: #fff8dc;
}
<nav>
  <ul>
      <li><a href="eiffel.shtml">Eiffel Tower</a></li>
      <li><a href="fashion.shtml">Fashion</a></li>
      <li><a href="food.shtml">Food</a></li>
      <li><a href="museums.shtml">Museums</a></li>
      <div class="dropDiv">
        <li class="dropdown"><a href="history.shtml">History</a></li>
        <div class="dropdownContent">
            <a href=leaders.shtml>Leaders of Paris</a>
            <a href=future.shtml>Future of Paris</a>
        </div>
      </div>
      <li><a href="language.shtml">Language</a></li>
      <li><a href="works.shtml">Works Cited</a></li>
  </ul>
</nav>   

如您所见,这有点乱,因为我一直在添加很多东西,试图想出一些东西来解决这个宽度问题。非常感谢任何帮助!

【问题讨论】:

  • 你在使用bootstrap之类的框架吗?
  • @Znaneswar 不,只是我创建的 html 和 css。

标签: html css drop-down-menu


【解决方案1】:

您的代码对我来说很好用。看起来您的代码中的其他一些 CSS 正在使其全宽。你试过用“!important”或“max-width”修复它吗?

【讨论】:

  • 奇怪的是,为此添加 max-width 会使历史导航元素完全消失...
【解决方案2】:

您应该在li 标签中创建dropDiv 并使其成为获取父宽度的绝对位置

nav ul {
  padding:0;
  margin:0;
}
nav ul li {
  list-style: none;
  float: left;
  position: relative;
  margin: 0 5px;
}
nav ul li a{
  color: #000;
  text-decoration: none;
}
.dropdown {
  float: left;
  background-color: #FFF0F5; 
}


nav ul li:hover .dropDiv {
  display: block;
  z-index: 1;
  height: 200px;
  width: 300px;
  overflow-x: hidden;
}

.dropDiv:hover .dropdown {
  background-color: #fff8dc;
}
.dropDiv {
  position: absolute;
  width: 100%;
  display: none;
  background-color: #FFF0F5;
  z-index: 1;
  width: 300px;
  overflow-x: hidden;
}

.dropDiv a {
  display: block;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none; 
}

.dropDiv a:hover {
  background-color: #fff8dc;
}
<nav>
  <ul>
      <li><a href="eiffel.shtml">Eiffel Tower</a></li>
      <li><a href="fashion.shtml">Fashion</a></li>
      <li><a href="food.shtml">Food</a></li>
      <li><a href="museums.shtml">Museums</a></li>
      <li class="dropdown"><a href="history.shtml">History</a>
        <div class="dropDiv">        
          <a href=leaders.shtml>Leaders of Paris</a>
          <a href=future.shtml>Future of Paris</a>
        </div>
      </li>
      <li><a href="language.shtml">Language</a></li>
      <li><a href="works.shtml">Works Cited</a></li>
  </ul>
</nav>

【讨论】:

  • 这对我不起作用...现在,当我将鼠标悬停在导航菜单项上时,下拉菜单根本不会出现
【解决方案3】:

您好,只需根据需要定义导航栏的宽度,我已经定义了 700 像素。并添加一些 css 。检查此代码

.dropdown {
    float: left;
    background-color: #FFF0F5; 
}

.dropDiv {
        position: relative;
    display: inline-block;
    list-style: none;
    padding: 9px;
    float: left;
    max-width: 100%;
	}

.dropdownContent {
    display: none;
    background-color: #FFF0F5;
    z-index: 1;
    width: 300px;
    overflow-x: hidden;
}

.dropdownContent a {
    display: block;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    
}

.dropdownContent a:hover {background-color: #fff8dc;}

.dropDiv:hover .dropdownContent {
    display: block;
    z-index: 1;
    overflow-x: hidden;    
    top: 30px;
    left: 10px;
    position: absolute;
}

.dropDiv:hover .dropdown {
    background-color: #fff8dc;
}
nav {width:700px;float: left;}
nav > ul > li {    float: left;
    padding: 9px;list-style: none}
	ul{float:left;}
<nav>
    <ul>
        <li><a href="eiffel.shtml">Eiffel Tower</a></li>
        <li><a href="fashion.shtml">Fashion</a></li>
        <li><a href="food.shtml">Food</a></li>
        <li><a href="museums.shtml">Museums</a></li>
        <div class="dropDiv">
            <li class="dropdown"><a href="history.shtml">History</a></li>
                <div class="dropdownContent">
                    <a href=leaders.shtml>Leaders of Paris</a>
                    <a href=future.shtml>Future of Paris</a>
                </div>
        </div>
		</li>
        <li><a href="language.shtml">Language</a></li>
        <li><a href="works.shtml">Works Cited</a></li>
    </ul>
</nav>

我想这就是你想要的。

【讨论】:

  • 这是一个项目,所以我们不允许使用引导程序,因为它必须是我们自己的代码。在没有引导位的情况下运行您的代码只会将历史记录选项卡变成一个不接触导航栏其余部分的正方形。下拉选项看起来是正确的长度,但只出现一个,它出现在历史选项卡的顶部,切断它的底部......
  • 即使您不将引导程序添加到项目中也可以使用。
  • 我已经更新了没有引导程序的代码,现在尝试恢复,如果有任何问题。
猜你喜欢
  • 2020-06-17
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2016-06-14
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多