【问题标题】:Absolute positioned div with overflow auto causing child absolute div to be cut off具有溢出自动的绝对定位 div 导致子绝对 div 被切断
【发布时间】:2011-09-28 23:17:56
【问题描述】:

我有一个具有自动溢出功能的绝对定位 div。在这个 div 里面是另一个绝对定位的 div。我的问题是这个子 div 由于溢出而被切断。我希望它像未设置溢出一样逃脱容器 div。我试过设置 z-indexes 但它没有帮助。我能做什么?

HTML

<div class="parent">
    <div class="child"></div>
</div>

CSS

.parent {
   position:absolute;
   z-index:0 
   overflow:auto;

   width:400px;
   height:400px;

   border:1px solid #000;
}

.child {
    poisiton:absolute;
    z-index:1

    width:300px;
    height:450px;

    border:1px solid #f00;
}

【问题讨论】:

标签: css html css-position


【解决方案1】:

看看你是否可以依靠其他方法来清除你的浮动。将您的 CSS 更改为 overflow: visible 绝对是一个很好的解决方案。

您的另一个解决方案是将 div 放在其容器之外,这样它就不会被切断,并将它们都放在一个新容器中:

<div class="container">
    <div class="parent">
    </div>
    <div class="child">
    </div>
</div>

CSS:

.container { 
    /* apply positioning from .parent */
}
.parent {
    position: absolute;
    top: 0; 
    left: 0;
}
.child {
    /* apply positioning from .child */
}

【讨论】:

    【解决方案2】:

    如果您希望某些元素不会溢出父元素而某些元素不会溢出,则最好将当前子 div 放在当前父元素之外。让它成为一个绝对定位的对等体。

    【讨论】:

    • 我怎样才能让它从父 div 内的参考点出现?例如,如果它在父 div 内并且在某个文本旁边,它将在该文本旁边弹出,但是如果我将 div 移到父 div 之外 - 如果子元素,我将如何让它在相同文本旁边弹出已经不在旁边了?
    • 意味着您希望它与其余内容一起滚动并同时弹出?我认为你需要 JavaScript 来实现这种效果。
    • 如果您准备使用 jQuery,可以使用滚动事件。然后,您必须计算滚动位置并据此移动第二个 div。见api.jquery.com/scroll
    • 我找到了一个解决方案,将子div设置为固定位置而不是绝对位置,它似乎正在逃避父容器的溢出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2014-03-22
    • 2018-08-18
    相关资源
    最近更新 更多