如果页面有足够的空间来托管所有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
,它似乎不起作用。)
答案 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,然后我们将能够提供良好的解决方案。