位置相对重叠浮动左

时间:2011-11-17 09:05:42

标签: css position css-float relative overlap

对于CMS的后端解决方案,我想让用户将任何CMS元素切换为float:故意离开。但是,我不得不发现,因为我的所有容器元素也使用相对定位,所以放置在浮动元素旁边的任何元素将与该元素重叠(仅作为块,而不是内容),从而使用户无法使用任何其他元素控件。

<div id="container1" class="elContainer" style="float: left;"></div>
<div id="container2" class="elContainer" style=""></div>

.elContainer {
   position: relative;
}

您可以尝试使用此jsFiddle设置来测试问题:http://jsfiddle.net/PNktA/ 如果从第一个外部容器中删除浮动,则可以单击“编辑”按钮。如果保留浮动,则无法单击它。

我试图找到一个可以在这里工作的解决方案,但我没有这样做。有谁知道我怎么解决这个问题?

如果解决方案仅适用于FF和Safari,那就没关系,因为我可以要求在后端使用这些浏览器。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果在第一个elContainer元素上设置比第二个更高的z-index,则可以成功单击编辑控件。

答案 1 :(得分:2)

Brighty 已经提供了解决方案,但也许我可以解释为什么“问题”实际发生。

据我所知,它与子弹点1有关,因为第2点:

  1. 定位的元素位于浮动的非定位兄弟之上。

  2. 在渲染树中出现以后的元素在上面的兄弟姐妹上面

  3. 在您的示例中,带有红色框的.elContainer实际上已定位。所以上面的规则1不适用,但我还是把它包括在内,因为知道它很有用。但是,带有红色框的.elContainer会在源/渲染树中的.elContainer .someTextBlock之前显示,因此文本块会在红色框顶部绘制。如果您在文本框中添加background-color,您会在视觉上注意到它是在红色框上方绘制的。见http://jsfiddle.net/PNktA/2/

    请参阅W3C spec, http://www.w3.org/TR/CSS21/zindex.html

    中的规则5和8