【问题标题】:CSS - Drop down menu appearing outside ULCSS - 出现在 UL 之外的下拉菜单
【发布时间】:2015-02-28 18:02:28
【问题描述】:

我正在使用 CSS 创建一个下拉菜单。但是,当我选择菜单时,它会在列表将出现的空间中以及从 UL 中选择。不只是 UL,如果这有意义的话,我无法弄清楚它为什么这样做。请看示例代码:-

CSS:-

#navigation .menu ul {position:absolute; top:45px; left:0px; opacity:0; background:black; transition:opacity .25s ease; -webkit-transition:opacity .25s ease;}
#navigation .menu li:hover > ul {opacity:1; margin:0;}
#navigation .menu ul li {height:25px; width:200px; overflow:hidden; border-bottom:red 1px solid; border-left:none; margin:none; transition:opacity .25s ease; -webkit-transition:height .25s ease;}
#navigation .menu ul li:hover {overflow:hidden; margin:0;}
#navigation .menu ul li a {text-decoration:none; height:25px; width:200px;}
#navigation .menu ul li:last-child {border-bottom:none;}

HTML 代码:-

<div id="navigation"> <nav> <ul class="menu"> 

        <li> <a href="Option.html"> <h1> Homepage </h1> </a> </li>

        <li> <a href="Option2.html"> About </a> <ul class="ulbox">

                <li class="dm"> <a href="Option1.html"> <img src="images/Avengers.jpeg" width="25" /> The Site </a></li>
                <li class="dm"> <a href="Option2.html"> <img src="images/Doctor Strange.jpeg" width="25" /> Find Us </a></li>
                <li class="dm"> <a href="Option3.html"> <img src="images/Guardians.jpeg" width="25" /> The Company </a></li>
                <li class="dm"> <a href="Option4.html"> <img src="images/Inhumans.jpeg" width="25" /> Contrived Page </a></li>
                <li class="dm"> <a href="Option5.html"> <img src="images/Thor.jpeg" width="25" /> Drop Down Success </a></li>

</ul>  </li>
        <li> <a href="Option3.html"> Images </a> <ul>

                <li> <a href="Option1.html"> The Site </a></li>
                <li> <a href="Option2.html"> Find Us </a></li>
                <li> <a href="Option3.html"> The Company </a></li>
                <li> <a href="Option4.html"> Contrived Page </a></li>
                <li> <a href="Option5.html"> Drop Down Success </a></li>

 </ul> </li> 
            <li> <a href="Option4.html"> The next page </a> <ul>

                <li> <a href="Option1.html"> The Site </a></li>
                <li> <a href="Option2.html"> Find Us </a></li>
                <li> <a href="Option3.html"> The Company </a></li>
                <li> <a href="Option4.html"> Contrived Page </a></li>
                <li> <a href="Option5.html"> Drop Down Success </a></li>

 </ul> </li>
            <li> <a href="Option5.html"> Terms and Stuff  </a> <ul>

                <li> <a href="Option1.html"> The Site </a></li>
                <li> <a href="Option2.html"> Find Us </a></li>
                <li> <a href="Option3.html"> The Company </a></li>
                <li> <a href="Option4.html"> Contrived Page </a></li>
                <li> <a href="Option5.html"> Drop Down Success </a></li>

 </ul> </li> </ul> </nav> </div>

我看不出为什么菜单会从 UL 导航栏外显示。有人可以帮忙吗?

【问题讨论】:

  • 你的问题不清楚,请补充一些细节或制作jsfiddle
  • 不确定我是否收到您的问题。查看您在.menu 下将position:absolute 提供给ul 的代码,因此请确保它的父li 具有position:relative
  • 感谢 anpsmn 的回复。会试一试的。为了解释我的问题,基本上,虽然菜单会下拉,但它会在不悬停在主导航栏上时这样做。当鼠标离我创建的导航栏很远的时候就可以了

标签: css html drop-down-menu nav


【解决方案1】:

CSS 有几个问题。

  • 首先:position: absolute 会将元素从流中移除。所以不会算作存在的东西来计算兄弟元素和父元素的位置。
  • 第二:您期望的显示仍然使用sub Menu 流。为了让另一个parent Menu流下来。所以你不能使用position: absolute。通过删除它,您将恢复菜单的流程。 (position: relative; 不是必需的,我只是把它留在那里,因为懒得删除它)
  • 第三:现在你遇到了sub Menu 正在显示而不悬停。处理它有2种方法。但我的 jsfiddle 只使用一个。只需将display: none 添加到sub Menu。然后是display: block,当它的父级悬停时。 (1)
#navigation .menu ul {
  display: none;
  z-index: 1;
  position:relative; 
}
#navigation .menu li:hover > ul {opacity:1; margin:0; display: block}

(2)

注意:

(1): 如果你想让它在动画中看起来不错。将max-heigth: 0 属性用作transition。 (而不是使用display: none;

(2):z-indexposition:relative; 不是必需的。只是你需要删除position: absolute 然后它会工作

http://jsfiddle.net/7r7zLuar/3/

【讨论】:

  • 嗨。不幸的是,这并没有解决问题。还有其他想法吗?
  • #navigation {width:auto;高度:37px;填充:0 0 10px 0;背景:黑色;} #navigation ul {宽度:自动;填充:1px;边距:0px;} #navigation li {position:relative;向左飘浮;填充:10 像素 5 像素 1 像素 5 像素;列表样式类型:无; border-left: 1px red solid;} #navigation li a {text-decoration:none;红色; display:block;} #navigation li:first-child {font-family:Helvetica;左边框:无; padding:5px;} #navigation li:last-child {border-right:none;}
  • 下拉菜单出现在当我将鼠标悬停在主 UL 导航栏时它应该出现的区域
  • @RMitchell 您的代码中有很多错误之处。一切都很糟糕。到目前为止,我只是修复了一些导致错误的问题。你想要的也是设计。你要么需要画点什么,因为你的话太不清楚了。我会根据我猜你的意思制作另一个 jsfiddle。
  • 非常感谢您提供的信息,似乎已经解决了这个问题。有了实际的样式和措辞,我现在只是在练习和学习如何使用 HTML 和 CSS。不好看的原因。如果我可以问,核心问题是什么?
猜你喜欢
  • 2021-01-16
  • 2017-05-29
  • 2012-11-28
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多