2013-05-11 308 views
2

我正在尝试创建一个聊天窗口,它允许聊天消息(下面的#messages_window)将调整大小以适应聊天区域的标题和输入区域之间的空白区域。当它调整大小时,它仍然需要滚动。动态高度DIV滚动

下面是HTML我有:

<div id="chat_window"> 
    <div id="header"> 

    </div> 
    <div id="messages_window"> 

    </div> 
    <div id="input_area"> 
     <input type="text" id="chat_input"/> 
     <br/> 
     <input type="button" style="float:right;" onclick="Javascript:sendMessage();" value="Send"/> 
    </div> 
</div> 

这里是CSS:

#chat_window 
{ 
    position: relative; 
    width: 300px; 
    height: 100%; 
    border: 1px solid black; 
} 

#chat_window #header 
{ 
    width: 100%; 
    height: 30px; 
    background-color: #69acf1; 
    color: #ffffff; 
    border-bottom: 1px solid black; 
} 

#chat_window #messages_window 
{ 
    width: 100%; 
    /*overflow: hidden;*/ 
} 

#input_area 
{ 
    position: absolute; 
    bottom: 0; 
    width: 100%; 
    height: 60px; 
} 
#input_area #chat_input 
{ 
    width: 100%; 
} 
+0

请阅读:[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and -salutations-be-removed-from-posts) – Antony 2013-05-11 06:08:44

+0

从这么多的电子邮件发送的SOrry,习惯的力量。谢谢。 – 2013-05-11 06:10:16

回答

3

你可以尝试定位#headermessage_windowabsolute,并使用topbottom属性,如你对输入区域做了什么:

#chat_window { 
    position: relative; 
    height:100%; 
    width: 300px; 
    border: 1px solid black; 
} 

#chat_window #header { 
    width: 100%; 
    height: 30px; 
    background-color: #69acf1; 
    color: #ffffff; 
    border-bottom: 1px solid black; 
} 

#chat_window #messages_window { 
    position:absolute; 
    width: 100%; 
    top:30px; 
    bottom:60px; 
    overflow-y: auto; 
} 

#input_area { 
    position: absolute; 
    bottom: 0; 
    width: 100%; 
    height: 60px; 
} 
#input_area #chat_input { 
    width: 98%; 
} 

jsfiddle

底部和的#messages_window需要顶部被调整到#headerinput_area的heignt。当内容太长时,滚动条会自动添加(overflow-y: auto;)。

+0

不客气=) – 2013-05-11 08:35:41

+0

马丁,我敢肯定,这不会让人意外,但这在IE9中无法正常工作。 #input_area浮动到DIV的顶部。有任何想法吗? – 2013-05-11 10:02:24

+1

哦,我现在已经绝对定位了#header,#messages_window和#input_area突破了#chat_window的范围。最后一个应该是相对位置,以保持其他人在正确的位置,并且定义一个高度。我更新了我的答案中的代码,并添加了jsfiddle http://jsfiddle.net/7NGG7/希望它现在可以工作了......我现在没有IE,现在就试用它。 – 2013-05-11 10:14:51