Reputation:
I need to make a box. I Want an implementation of a flexbox to make a chat box.
But somewhat it doesn't gives me what I need.
.box{
width:350px;
margin:10px auto;
height:250px;
border:1px solid #000;
display:flex;
flex-flow:column;
}
.header{
border:1px solid blue;
width:100%;
flex: 0 1 auto;
}
.body{
width:100%;
flex: 1 1 auto;
border:1px solid red;
display:flex;
flex-flow:column;
}
.scrollable{
flex: 1 1 auto;
height:100px;
overflow:auto;
}
.writebox{
flex: 1 1 auto;
position:relative;
}
.writebox textarea{
height:100%;
width:100%;
}
<div class="box">
<div class="header">SOME CONTENT . Its fixed always</div>
<div class="body">
<div class="scrollable">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam luctus sapien lacus, vestibulum eleifend metus placerat at. Proin nec velit id orci lobortis feugiat. Phasellus cursus felis et imperdiet congue. In tincidunt vel urna eget venenatis. Ut libero velit, auctor non ipsum quis, interdum bibendum metus. Donec ut tempor nulla, sagittis volutpat magna. Donec ut ex fermentum, cursus lectus fringilla, vehicula quam. Morbi leo massa, rutrum non tortor eu, tristique mollis erat. Donec suscipit libero sit amet eleifend interdum. Quisque ut malesuada quam. Morbi interdum libero sed enim sodales rutrum.
Integer non metus vel tellus elementum auctor eu at lacus. Cras dapibus metus id purus porta, vitae fermentum mi imperdiet. Integer eget augue neque. Aenean varius lorem lectus, vitae lacinia nisl scelerisque et. Proin sed nibh aliquet, luctus elit sed, suscipit ligula. Morbi porttitor ligula eu risus varius, id hendrerit massa pharetra. Nullam nisl elit, sagittis nec libero non, tristique fermentum mauris. Phasellus posuere sem eu eros aliquam laoreet. Integer dui tellus, laoreet mollis nibh a, pretium finibus magna. Praesent quis convallis eros. Quisque pulvinar in sapien non dignissim. Praesent eu est nisl. Mauris sit amet nibh non nulla convallis sodales. Vestibulum porttitor dui vel nisl ultricies, non sollicitudin tortor imperdiet. Pellentesque vel nunc a est hendrerit accumsan non quis neque. Nam sagittis interdum elementum.</div>
<div class="writebox"><textarea></textarea></div>
</div>
</div>
Here is what it looks like: https://i.sstatic.net/i2jOE.png
In my original code the textarea
has variable height upto a limit x (I'm using autogrow plugin I didn't include that in the snippet)
Upvotes: 4
Views: 202
Reputation: 9731
Use flex: 1
only on .scrollable
and make your .writable
a flex container, Like:
.scrollable {
flex: 1;
}
.writeable {
display: flex;
}
Have a look at the snippet below (I've integrated the auto grow plugin for textarea as well):
autosize($('textarea'));
.box{
width:350px;
margin:10px auto;
height:250px;
border:1px solid #000;
display:flex;
flex-flow:column;
}
.header{
border:1px solid blue;
width:100%;
flex: 0 1 auto;
}
.body{
width:100%;
flex: 1 1 auto;
border:1px solid red;
display:flex;
flex-flow:column;
}
.scrollable{
flex: 1;
height:100px;
overflow:auto;
}
.writebox{
position:relative;
display: flex;
}
.writebox textarea{
height:100%;
width:100%;
}
<div class="box">
<div class="header">SOME CONTENT . Its fixed always</div>
<div class="body">
<div class="scrollable">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam luctus sapien lacus, vestibulum eleifend metus placerat at. Proin nec velit id orci lobortis feugiat. Phasellus cursus felis et imperdiet congue. In tincidunt vel urna eget venenatis. Ut libero velit, auctor non ipsum quis, interdum bibendum metus. Donec ut tempor nulla, sagittis volutpat magna. Donec ut ex fermentum, cursus lectus fringilla, vehicula quam. Morbi leo massa, rutrum non tortor eu, tristique mollis erat. Donec suscipit libero sit amet eleifend interdum. Quisque ut malesuada quam. Morbi interdum libero sed enim sodales rutrum.
Integer non metus vel tellus elementum auctor eu at lacus. Cras dapibus metus id purus porta, vitae fermentum mi imperdiet. Integer eget augue neque. Aenean varius lorem lectus, vitae lacinia nisl scelerisque et. Proin sed nibh aliquet, luctus elit sed, suscipit ligula. Morbi porttitor ligula eu risus varius, id hendrerit massa pharetra. Nullam nisl elit, sagittis nec libero non, tristique fermentum mauris. Phasellus posuere sem eu eros aliquam laoreet. Integer dui tellus, laoreet mollis nibh a, pretium finibus magna. Praesent quis convallis eros. Quisque pulvinar in sapien non dignissim. Praesent eu est nisl. Mauris sit amet nibh non nulla convallis sodales. Vestibulum porttitor dui vel nisl ultricies, non sollicitudin tortor imperdiet. Pellentesque vel nunc a est hendrerit accumsan non quis neque. Nam sagittis interdum elementum.</div>
<div class="writebox"><textarea></textarea></div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://www.jacklmoore.com/js/autosize.min.js"></script>
Hope this helps!
Upvotes: 1