简体   繁体   中英

How can I prevent last flex item from overflowing parent

I'm trying to figure out how to make the last flex item in my list not expand past the bottom of the container. It has a contenteditable div in it that I need to expand up when someone enters more than one line of text.

The main flex items are 3 divs in a column, the title bar is 100% width, the content container is 100% width with grow and shrink and the footer is flex and should cause the inner container to shrink.

Currently when you enter more than one line of text in div.detail-chat-input it does expand upwards, but it also pushes the buttons down.

Like this:

页脚按钮溢出容器

 * { box-sizing: border-box; } .panel-popover-window { background-color: grey; border-bottom: 1px solid black; display: flex; flex-direction: column; } .panel-popover-title-bar { border: 1px solid black; width: 100%; height: 50px; line-height: 50px; padding: 0 20px; position: relative; } .panel-popover-content { display: flex; flex-direction: row; flex-grow: 1; flex-shrink: 1; padding: 5px; min-height: 0; overflow-y: scroll; } .panel-popover-column-2 { display: flex; flex-direction: column; flex: 0 0 50%; } .panel-popover-panel { border: 1px solid #e0e0e0; margin: 5px; background-color: #fff; } .panel-popover-panel-title { display: block; border-bottom: 1px solid black; width: 100%; height: 50px; padding: 0 10px; position: relative; } .panel-popover-footer { min-height: 60px; padding: 0 10px; } .panel-popover-footer-content { position: relative; } .panel-popover-footer-button-bar { width: 100%; height: 60px; } .panel-popover-close-button { border: 1px solid black; width: 83px; height: 37px; float: right; margin-top: 15px; } .detail-chat-input { min-height: 48px; border: 1px solid black; border-radius: 5px; background-color: #fff; padding: 10px; width: 100%; font-size: 15px; line-height: 30px; } .detail-activity-scrollable { overflow-y: scroll; height: calc(100% - 50px); } .detail-message-container { min-height: 800px; } .panel-popover-panel.activity { max-height: 685px; overflow-y: hidden; position: relative; } 
 <html> <head> </head> <body> <div class="panel-popover-window detail-popover" style="width: 1200px; height: 875px;"> <div class="panel-popover-title-bar"> <span class="panel-popover-title-bar-text">Popover Title</span> <div class="panel-popover-title-bar-close"></div> </div> <div class="panel-popover-content"> <div class="panel-popover-column panel-popover-column-2"> <div class="panel-popover-panel submission-info"> <div class="panel-popover-panel-title">Title 1</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> </div> <div class="panel-popover-panel statistics"> <div class="panel-popover-panel-title">Title 2</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> </div> </div> <div class="panel-popover-column panel-popover-column-2"> <div class="panel-popover-panel activity"> <div class="panel-popover-panel-title">Title 3</div> <div class="detail-activity-scrollable"> <div class="detail-message-container"> <div class="ad-approval-panel-line">Data</div> </div> </div> </div> </div> </div> <div class="panel-popover-footer"> <div class="panel-popover-footer-content"> <textarea class="detail-chat-input" placeholder="Send Message" data-emojiable="converted" style="display: none;" data-id="8ff80f0d-85e3-4ac4-acbf-c950fffbc1a4" data-type="original-input"></textarea> <div class="emoji-wysiwyg-editor detail-chat-input parent-has-scroll" placeholder="Send Message" contenteditable="true"></div> <div class="panel-popover-footer-button-bar"> <button class="detail-admin-control detail-approve" disabled="">Button 1</button> <button class="detail-admin-control detail-disapprove">Button 2</button> <div class="panel-popover-close-button">Close</div> </div> </div> </div> </div> </body> </html> 

Give a height: 100%; to the .panel-popover-window container.

 * { box-sizing: border-box; } .panel-popover-window { background-color: grey; border-bottom: 1px solid black; display: flex; flex-direction: column; width: 1200px; height: 100%; } .panel-popover-title-bar { border: 1px solid black; width: 100%; height: 50px; line-height: 50px; padding: 0 20px; position: relative; } .panel-popover-content { display: flex; flex-direction: row; flex-grow: 1; flex-shrink: 1; padding: 5px; min-height: 0; overflow-y: scroll; } .panel-popover-column-2 { display: flex; flex-direction: column; flex: 0 0 50%; } .panel-popover-panel { border: 1px solid #e0e0e0; margin: 5px; background-color: #fff; } .panel-popover-panel-title { display: block; border-bottom: 1px solid black; width: 100%; height: 50px; padding: 0 10px; position: relative; } .panel-popover-footer { min-height: 60px; padding: 0 10px; } .panel-popover-footer-content { position: relative; } .panel-popover-footer-button-bar { width: 100%; height: 60px; } .panel-popover-close-button { border: 1px solid black; width: 83px; height: 37px; float: right; margin-top: 15px; } .detail-chat-input { min-height: 48px; border: 1px solid black; border-radius: 5px; background-color: #fff; padding: 10px; width: 100%; font-size: 15px; line-height: 30px; } .detail-activity-scrollable { overflow-y: scroll; height: calc(100% - 50px); } .detail-message-container { min-height: 800px; } .panel-popover-panel.activity { max-height: 685px; overflow-y: hidden; position: relative; } 
 <html> <head> </head> <body> <div class="panel-popover-window detail-popover"> <div class="panel-popover-title-bar"> <span class="panel-popover-title-bar-text">Popover Title</span> <div class="panel-popover-title-bar-close"></div> </div> <div class="panel-popover-content"> <div class="panel-popover-column panel-popover-column-2"> <div class="panel-popover-panel submission-info"> <div class="panel-popover-panel-title">Title 1</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> </div> <div class="panel-popover-panel statistics"> <div class="panel-popover-panel-title">Title 2</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> <div class="ad-approval-panel-line">Data</div> </div> </div> <div class="panel-popover-column panel-popover-column-2"> <div class="panel-popover-panel activity"> <div class="panel-popover-panel-title">Title 3</div> <div class="detail-activity-scrollable"> <div class="detail-message-container"> <div class="ad-approval-panel-line">Data</div> </div> </div> </div> </div> </div> <div class="panel-popover-footer"> <div class="panel-popover-footer-content"> <textarea class="detail-chat-input" placeholder="Send Message" data-emojiable="converted" style="display: none;" data-id="8ff80f0d-85e3-4ac4-acbf-c950fffbc1a4" data-type="original-input"></textarea> <div class="emoji-wysiwyg-editor detail-chat-input parent-has-scroll" placeholder="Send Message" contenteditable="true"></div> <div class="panel-popover-footer-button-bar"> <button class="detail-admin-control detail-approve" disabled="">Button 1</button> <button class="detail-admin-control detail-disapprove">Button 2</button> <div class="panel-popover-close-button">Close</div> </div> </div> </div> </div> </body> </html> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM