我很难理解为什么position: relative;
当容器元素的子元素绝对定位(即position: absolute;
)时我需要添加它。让我举例说明。
示例 HTML 代码:
<ul>
<li>...</li>
<li id="parent">
<a href="#">Menu</a>
<div id="child">...</div>
</li>
<li>...</li>
<li>...</li>
</ul>
考虑代码代表一个水平菜单。看起来有点像这样:
问题是当position
属性的#parent
值为默认值(即)时,即使子元素是绝对定位的,它的position: static;
宽度也会随着.#child
#child
position: absolute;
一切都到位,当我使用position: relative;
时,#parent
即它的宽度保持不变,无论#child
.
我在这里想念什么?为什么我需要使用position: relative;
(我认为)应该是默认行为的东西?
更新:我创建了一个小提琴来更好地解释我的观点。请看一看。
重现问题的步骤:
在小提琴的预览中,单击“频道”菜单,它应该会滑出其隐藏的菜单项。
现在,F12在您的浏览器(安装了 Firebug 的 Chrome、Safari 或 Firefox)中按下键,使用检查工具检查“频道”菜单。
这应该立即将您指向现在打开的开发工具或 Firebug 窗格的“元素”选项卡中的相关 HTML 代码。
<li class="float-left top-menu">
查找inside的第一个实例<ul id="top-navbar">
并将鼠标悬停在该行上。它应该向您显示如下内容:
为什么蓝色指示框(即菜单)应该是红色边框的大小时却那么大?明白我现在在说什么了吗?
现在,申请position: relative;
(li
即li.float-left.top-menu { position: relative; }
自己看看差异。)