javascript - 悬停下拉溢出

标签 javascript html css menu drop-down-menu

所以我有这个下拉菜单,当您将鼠标悬停在链接上时,会弹出一个下拉菜单,并自动溢出。我的问题是,一旦我将鼠标放在底部链接上或尝试滚动它,悬停就会停止并且 block 消失,就像它达到了高度限制一样。它在 Chrome 和 Firefox 中执行此操作,但在 IE8 中工作得很好。关于我可以做些什么来解决这个问题的建议?这是我的代码:

CSS

*{margin:0px; padding:0px}
#container{background-color:pink;padding:30px;width:300px;}
#dropMenu{display: none;
     height: 75px;
     overflow: auto;
     width: 200px;}

HTML

<div class="container">
    <a href="#" onMouseOver="menuOpen()">Hover This</a>
    <div id="dropMenu">
        <a href="#">Menu Item1</a><br />
        <a href="#">Menu Item2</a><br />
        <a href="#">Menu Item3</a><br />
        <a href="#">Menu Item4</a><br />
        <a href="#">Menu Item5</a><br />
        <a href="#">Menu Item6</a><br />
    </div>
</div>

脚本

<script type="text/javascript">
    function menuOpen(){
        document.getElementById('dropMenu').style.display = 'block';
    }

    document.getElementById('dropMenu').onmouseout = function (e) {
        e = e || window.event;
        var target = e.srcElement||e.target;
        if (target.id == "dropMenu") {
            document.getElementById('dropMenu').style.display = 'none';
        }
    };
</script>

在我收到问题之前,假设我的 CSS 位于标题中正确的样式标签中,div 位于正文中,而脚本位于结束正文标签之前。

最佳答案

如果您不介意当您将鼠标悬停在粉红色容器上时菜单会下拉,而不仅仅是链接,您可以使用这个纯 CSS 解决方案:

*{margin:0px; padding:0px}

#container{background-color:pink;padding:30px;width:300px;}

#dropMenu{display: none;
  height: 75px;
  overflow: auto;
  width: 200px;}

#container:hover #dropMenu {
  display:block;
}

不需要 JavaScript。它更干净,效果更好。看看我在 jsFiddle 上的例子.

关于javascript - 悬停下拉溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069365/

相关文章:

javascript - 按后缀插入多个 TD 到表中间

javascript - 带有 React 或 Javascript 扩展的子类如何工作?

php - 在 php 文件中将 javascript 代码显示为字符串

python - 如何在python中使用BeautifulSoup在没有类名的范围内提取文本

html - 绝对定位的div

javascript - 何时使用 const 或 var 或 let 和 lambda 表达式内部

css - 在其他元素之前选择特定元素

html - flex 网格魔法 (CSS)

html - 第 n 个类型;如何在一个 ( ) 中定位多个 div

javascript - 将类绑定(bind)到 ember 中的 div