【问题标题】:Drop down menu alignment IE下拉菜单对齐IE
【发布时间】:2014-12-01 18:25:48
【问题描述】:

很抱歉,如果这已经被问到,但我找不到解决我问题的答案。我创建了一个下拉菜单,它可以在除 IE 之外的所有浏览器中正常工作。我为菜单 li 项添加了宽度,以便它们填充页面的宽度。这使得子菜单在 IE 中无法正确浮动 - 而不是直接浮动在 ul 项目下方,它浮动在下方但向右。如果我删除菜单 li 的宽度,它可以正常工作,但我需要这个,否则菜单只会在左侧聚集。

提前谢谢你

这是我的 HTML:

<ul class="menu">
    <li><a href="/index.php">Home</a></li>
    <li><a href="/page1.php">Page 1</a>
        <ul>
            <li><a href="#">Sub Page</a></li>
            <li><a href="#">Sub Page</a></li>
            <li><a href="#">Sub Page</a></li>
        </ul>
    </li>
    <li><a href="/page2.php">Page 2</a></li>
    <li><a href="/page3.php">Page 3</a></li>
  </ul><!--menu-->

还有我的css:

/*----- Drop down menu styling -----*/

.menu { 
  margin:0; 
  padding:0; 
 }
.menu li { 
  list-style:none; 
  float:left; 
  font:0.9em Arial, Helvetica, sans-serif; 
  color: #fff; 
  text-align: center; 
  width: 240px; 
 }
.menu li a:link, .menu li a:visited { 
  display:block; 
  text-decoration:none; 
  background-color: #88cb78; 
  padding: 0.5em 2em; 
  margin:0; 
  border-right: 1px solid #fff; 
  color:#fff; 
 }
.menu li a:hover { 
  background-color:#a8db9b; 
 }

/*----- sub menu styling -----*/
.menu li ul {
  font:0.9em Arial, Helvetica, sans-serif; 
  position:absolute; 
  float: left; 
  visibility:hidden; 
  border-top:1px solid #fff; 
  margin:0; 
  padding:0; 
  background-color: #88cb78; 
 }
.menu li ul li { 
  display:inline; 
  float:none; 
 }
.menu li ul li a:link, .menu li ul li a:visited { 
  background-color: #88cb78; 
  width:auto; 
 }
.menu li ul li a:hover { 
  background-color:#a8db9b; 
 }

【问题讨论】:

  • 如果使用绝对位置,请使用定位值top:100%, left:0 而不是float:left
  • 感谢您的评论,但这只是让下拉菜单根本不显示。
  • 您可能仍然隐藏了可见性或尚未将父级设置为position:relative
  • 您好 Paulie,谢谢您现在可以使用...唯一的问题是,当页面加载时,下拉菜单默认显示,而不是悬停。如果我将鼠标悬停在另一个主菜单项上,它就会消失。但猜测这是我需要在文档准备好的 javascript 中更改的内容...?
  • 如果你用JS来控制菜单,那么可以。

标签: html css internet-explorer drop-down-menu menu


【解决方案1】:

试试这个例子。

.menu {
  margin: 0;
  padding: 0;
}
.menu li {
  list-style: none;
  float: left;
  font: 0.9em Arial, Helvetica, sans-serif;
  color: #fff;
  text-align: center;
  width: 240px;
  position: relative;
}
.menu li a:link,
.menu li a:visited {
  display: block;
  text-decoration: none;
  background-color: #88cb78;
  padding: 0.5em 2em;
  margin: 0;
  border-right: 1px solid #fff;
  color: #fff;
}
.menu li a:hover {
  background-color: #a8db9b;
}
/*----- sub menu styling -----*/

.menu li ul {
  font: 0.9em Arial, Helvetica, sans-serif;
  position: absolute;
  border-top: 1px solid #fff;
  padding: 0;
  background-color: #88cb78;
  width: 100%;
  display: none;
}
.menu li:hover ul {
  display: block;
}
.menu li ul li {
  display: inline;
  float: none;
}
.menu li ul li a:link,
.menu li ul li a:visited {
  background-color: #88cb78;
  width: auto;
}
.menu li ul li a:hover {
  background-color: #a8db9b;
}
<ul class="menu">
  <li><a href="/index.php">Home</a>
  </li>
  <li><a href="/page1.php">Page 1</a>
    <ul>
      <li><a href="#">Sub Page</a>
      </li>
      <li><a href="#">Sub Page</a>
      </li>
      <li><a href="#">Sub Page</a>
      </li>
    </ul>
  </li>
  <li><a href="/page2.php">Page 2</a>
  </li>
  <li><a href="/page3.php">Page 3</a>
  </li>
</ul>
<!--menu-->

【讨论】:

  • 谢谢你,几乎修复了它!菜单现在可以在 IE 中正常工作,但是当子菜单下拉时,会将页面的其余部分向下推。然后当我不悬停时它会向上移动......现在所有浏览器中都有......我尝试添加一个 z-index 但这没有用......
  • @jenna 我编辑了我上面的答案。我想现在它会对你有所帮助。
  • 感谢您的帮助,但已通过上面的 cmets 修复。
  • @Jenna 如果我的回答对您有帮助,您可以接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多