将Div容器与显示Flex的底部对齐

时间:2017-09-08 08:42:19

标签: javascript jquery html css flexbox

我必须为聊天建立一个模块化窗口!我已经有了一个工具栏和一个可以填充的Flex conatiner。现在我遇到了问题,我想为聊天输入字段添加Div。我尝试了几乎所有东西来将这个东西对齐到底部,但没有任何作用。

以下是它的样子:

enter image description here

  

“消息输入”必须与底部对齐

这是我的实际HTML代码:

<div id="chat_dialog" class="modal" style="height: 600px; overflow-y: hidden">
  <div class="toolbar_standard">
    <div class="toolbar_standard_control_row">
      <img src="/static/images/ic_arrow_back_white.svg" class="toolbar-button" data-bind="click: closeChatDialog">
      <div style="font-size: 20px; color: white">Chat</div>
      <div style="font-size: 20px; color: white; padding-left: 40%" data-bind="html: chatPartnerName"></div>
      <div style="..."></div>
    </div>
  </div>
  <div style="display:flex; height: 100%;">
    <div data-bind="foreach: contacts" style="width: 300px; overflow-y: scroll;">
      <div class="overviewlist_row waves-effect" style="padding-left: 5px; padding-right: 5px" data-bind="click: $parent.onClick.bind($parent)">
        <div>
          <div>
            <p data-bind="html: name"></p>
          </div>
        </div>
      </div>
    </div>
    <div style="background-color: #e6e6e6; flex-grow: 1; overflow-y: scroll; padding-bottom: 10px">
      <div style="height: 80%; display: flex; flex-direction: column;">
        <div id="spinner" class="spinner">
          <div class="bounce1"></div>
          <div class="bounce2"></div>
          <div class="bounce3"></div>
        </div>
        <div data-bind="foreach: messages" style="padding-left: 15px; min-height: 306px">
          <p data-bind="html: message, css: messageClassName"></p>
        </div>
        <div style="height: auto">
          <div class="input-field col s6" style="background-color: white; height: auto;">
            <input id="message_to_send" type="text" class="validate" data-bind="value: message_to_send" style="width: 94%;">
            <a id="sendChat" class="clickable-icon" data-bind="click: sendMessage" style="padding-top: 0px"><img src="/static/images/ic_send_black.svg"></a>
            <label for="message_to_send">Nachricht</label>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

这就是它在浏览器中的样子:

  

在这里,您可以看到它是在“消息”的Div下浮动,并且它动态地移动“消息”Div的大小!

enter image description here

我如何以及在何处将对齐设置为底部?

3 个答案:

答案 0 :(得分:2)

第一点:不要使用内联CSS。

您可以通过定位将消息置于最底层。尝试更改您的代码,如下所示

position:relative添加到<div style="height: 80%; display: flex; flex-direction: column;">并将position:absolute; bottom:0;添加到<div style="height: auto">

编辑:如果它没有将您的消息发送到确切的底部,那么您可能会在此部分处理<div style="height: 80%; display: flex; flex-direction: column;">高度

答案 1 :(得分:1)

只需在textarea或textarea容器中添加position: absolute;bottom: 0px;

答案 2 :(得分:0)

position: fixed;bottom:0; 添加到您的消息输入容器,以解决宽度重叠问题,只需添加 width: inherit; 的属性,该属性将采用父元素的宽度值。 否则,您可以使用 JavaScript 代码动态地将父宽度分配给您的消息容器:

$(document).ready(()=> {
      var parentWidth = $('.parent-element').width();
      $('.message-container').width(parentWidth);
});