带有滚动的 Div 和带有绝对位置的内容

Posted

技术标签:

【中文标题】带有滚动的 Div 和带有绝对位置的内容【英文标题】:Div with scroll and content with absolute positions 【发布时间】:2010-10-03 10:22:41 【问题描述】:

我有一个带有样式的“div”:overflow-y: scroll; overflow-x: auto; 我尝试使用绝对或相对位置在此“div”内动态添加图像。在用户尝试滚动“div”内容之前,一切似乎都很好:图像相对于浏览器窗口保持在固定位置。这个问题似乎只在 IE(7) 中,在 Firefox 中一切都很好。 有什么解决方案吗?

编辑(回答下面提出的问题):我正在定位元素,因为我需要它显示在另一个元素的前面。

【问题讨论】:

您能否发布您正在使用的 html 和 CSS 示例? 我在 Chrome 23 中遇到了同样的问题.. 【参考方案1】:

我不知道这是 IE 中的错误还是“功能”,但我之前遇到过同样的事情。幸运的是,有一个简单的解决方法。只需将“position:relative”添加到具有可滚动内容的<div>

【讨论】:

我花了很多时间试图解决它!谢谢。它也帮助了我! 天哪,我花了好长时间才找到这个! 不保持标题固定?【参考方案2】:

将所有内容包装在页面上相对定位的包含 div 中:

<div style="display:block; position:relative; width:200px; height:200px; margin:0; padding:0;">
    <br />
    <img src="_foo_.gif" style="position:absolute; top:0; left:0; z-index:100;" />
    <br />
    <div style="overflow-x:auto; overflow-y:scroll; width:200px; height:200px; z-index:10; display:block; position:relative;">
        <br />[scrolling content]<br />
    </div>
    <br />
</div>

【讨论】:

【参考方案3】:

您是否有特殊原因需要为图像设置位置?它在 IE7 中运行良好,无需设置位置。

<div style="overflow-x:auto; overflow-y:scroll; width:200px; height:200px;"><img src=xxx.gif"   /></div>

【讨论】:

【参考方案4】:

试试float:leftfloat:rightmargin

我在 chrome 中遇到了与 position:absoluteoverflow-y: auto; 中相同的问题。 div 在滚动时固定在那里。

一个简单的解决方案是使用浮点数。

我的旧代码是-

position:absolute; right:10px;

我用以下内容替换它并且它有效-

float:right; margin-right:10px;

【讨论】:

【参考方案5】:

你知道吗,将绝对定位的元素包装在相对定位的容器元素中可能更容易,我认为应该能够滚动......

【讨论】:

【参考方案6】:

我学到了很多东西:对于 IE6/IE7,它可能需要将图像作为包含 DIV 中的最后一个 DOM 元素,以使其出现在滚动的 DIV 上。

【讨论】:

【参考方案7】:

如果您希望它能够滚动,则需要使用相对定位。诀窍是在第二个元素上使用负定位。

假设您有两个元素 A 和 B,并且您想将 B 放在 A 的前面。它看起来像这样:

<div id="A" style="position:relative; width:300px; height=240px;">Element A</div>

<div id="B" style="position:relative; width:300px; height=240px; top:-240px;">Element B</div>

根据内容,您可能需要添加其他样式,例如“display:block;”等等。w3schools.com 是一个很好的资源

有关使用 CSS 进行 DIV 定位的优秀教程,请访问:

http://www.barelyfitz.com/screencast/html-training/css/positioning/

干杯

【讨论】:

【参考方案8】:

声明position: absolute; 表示元素将相对于视口的左上角显示。改用relative 意味着您用于lefttop 的值将添加到img 本来应该存在的位置。

【讨论】:

固定位置相对于视口,绝对位置相对于父元素。 更准确地说,绝对位置是相对于最近定位的父对象(例如 position: relative)。

以上是关于带有滚动的 Div 和带有绝对位置的内容的主要内容,如果未能解决你的问题,请参考以下文章

为啥带有文本溢出和滚动条的 flex 子项不会在 Firefox 中展开?

CSS垂直和水平居中的Div [重复]

基于 CSS DIV 的表格,带有标题和有限高度,必要时显示滚动条 - 百分比高度

怎么让DIV固定在页面的某个位置而不随着滚动条随意滚动?

iOS VoiceOver 滚动、内部 div、3 指向上/向下滑动

在另一个 DOM 元素上调度鼠标滚轮事件