如何避免两个div之间重叠定位div内部相对的绝对位置?

时间:2014-01-13 01:28:34

标签: css html absolute overlap

如果页面有足够的空间来托管所有div,则以下代码有效,但如果我至少调整页面大小,则两个div定位绝对重叠。我怎么能避免这种情况?

这是我的HTML:

<div id="div-chatroom">
    <div id="div-messages">messages here</div>
    <div id="div-sending">sending tools here</div>
</div>

这是我的CSS:

#div-chatroom {
    position: relative;
    height: calc(100% - 70px); /* IE9+ and future browsers */
    height: -moz-calc(100% - 70px); /* Firefox */
    height: -webkit-calc(100% - 70px); /* Chrome, Safari */
    padding: 0;
    text-align: center;
    margin: 0;
    border-right: 2px solid #333333;
    overflow: auto;
}

#div-messages {
    position: absolute;
    top: 10px;
    bottom: 110px;
    left: 10px;
    right: 10px;
    min-height: 200px;
    overflow: auto;
}

#div-sending {
    position: absolute;
    bottom: 10px;
    left: 10px;
    right: 10px;
    height: 100px;
}

更新#1
根据需要JSFiddle上的代码(但如果两个div有position: absolute,它似乎不起作用。)

2 个答案:

答案 0 :(得分:2)

好的,我通过改变方法获得了相同的结果。

CSS(JSFiddle):

#div-chatroom {
    position: relative;
    height: calc(100% - 70px); /* IE9+ and future browsers */
    height: -moz-calc(100% - 70px); /* Firefox */
    height: -webkit-calc(100% - 70px); /* Chrome, Safari */
    padding: 0;
    text-align: center;
    margin: 0;
    border-right: 2px solid #333333;
    background-color: #ffffff;
    overflow: auto;
}

#div-messages {
    position: relative;
    margin: 0;
    padding: 0;    
    min-height: 200px;
    height: calc(100% - 100px); /* IE9+ and future browsers */
    height: -moz-calc(100% - 100px); /* Firefox */
    height: -webkit-calc(100% - 100px); /* Chrome, Safari */
    background-color: green;
    overflow: auto;
}

#div-sending {
    position: relative;
    margin: 0;
    padding: 0;    
    height: 100px;
    background-color: red;
}

答案 1 :(得分:0)

职位的整个目的:绝对是元素不被依赖或页面上的任何其他元素(除了它的父母)你实际上无法实现这一点。如果你想相应地调整它们,你可以使用绝对以外的位置样式来做到这一点。将您的代码发布到jsfiddle,然后我们将能够提供良好的解决方案。