【发布时间】:2026-01-14 17:50:02
【问题描述】:
我已经用谷歌搜索了很多,但我在 SO 上或这里都找不到答案。我需要弄清楚如何防止填充背景颜色溢出到其子元素中。 子元素不能移出它的位置。
我已经尝试过溢出:隐藏、z-index 以及几乎所有内容。
只看到 jsfiddle 绝对是最简单的: https://jsfiddle.net/so23hbf0/3/
HTML:
<div class="navbar">
<a href="#home">Home</a>
<a href="#news">News</a>
<div class="dropdown">
<a href="#" class="dropbtn">Books & Media</a>
<div class="dropdown-content">
<div class="header">
<h2>Mega Menu</h2>
</div>
</div>
</div>
CSS:
.navbar {
overflow: hidden;
background-color: yellow;
}
.navbar a {
padding: 2rem 1.6rem;
overflow: hidden;
}
.dropdown {
overflow: hidden;
display: inline;
}
.navbar a:hover {
background-color: black;
}
.dropdown-content {
background-color: gray;
}
请注意,当您悬停链接时,黑色背景会溢出到灰色的“超级菜单”区域。但它不会溢出顶部。我想防止它向下溢出。
【问题讨论】:
-
这感觉像是一个非常糟糕的结构,您的嵌套似乎不正确,内联元素中有块级元素。我建议使用嵌套 li 包含任何菜单基本结构的链接。
-
@AlexanderDeSousa 它是嵌套的,因此悬停将触发 display:block 而不是 display:none。为了简单起见,我把那部分省略了。
-
为什么不能只调整内边距?
-
@Turnip 嗯,这都是关于原则的。我以后可能想改变高度,不想做两次。
-
明白了,虽然你会用那个结构来打自己的脚,但你会花费很多时间来调试源于那个结构的东西,我真的强烈建议你尝试下面的结构作为开始点:codepen.io/antoniputra/pen/BzyWmb