我有一个div
,其中包含另一个孩子div
。在该子级div
中有一个h1
标签和一个textarea
标签。我希望h1
标签和textarea
适应父div
的高度,但好像textarea
被推离父div
。
我尝试对box-sizing: border-box;
使用textarea
来确保它停留在父div
内,尽管它适用于宽度,但不适用于高度。
我还能够通过使textarea
的高度为父87%
的{{1}}来提供临时修复程序,但是如果我在浏览器中缩小,最终{ {1}}在父div
上流血。我还尝试过将textarea
放入包含的div
中,这可以防止流血,但是我看不到m overflow:hidden
的底部。
理想情况下,我希望div
的高度不占用textarea
标记未占用的textarea
的其余部分。我还希望完全不要在包含的div
上流血h1
,这甚至在我执行textarea
时就发生了,但我还是想避免使用它,因为我想要溢出成为div
,以解决自动换行不足的问题。
如果您查看代码段,则会看到overflow:hidden
是如何从包含的auto
垂直溢出的。
编辑
我已经考虑过使用flexbox,但是我打算将div的左右边框都可拖动,但是我不确定是否可以使用flexbox,同时允许textarea
根据边框拖动轻松调整大小。我不确定这是否可行,但我愿意接受建议!
div
div
答案 0 :(得分:1)
您可以大大简化html和css并使用flexbox。
.sectionContainer // acts as a flexbox.
.sectionContainer>.box-title{
flex: 0 0 auto; // title can not grow or shrink and has the regular height
}
.sectionContainer>.innerBox{
flex: 1 1 auto; // textarea can grow or based on the leftover area
}
我对示例进行了动画处理,以显示更改.sectionContainer
的宽度或高度具有所需的效果。
.sectionContainer{
display: flex;
flex-direction: column;
border: 2px solid red;
height: 300px;
width: 100%;
animation: animateWidth 3s infinite;
position: relative;
}
.sectionContainer>.box-title{
flex: 0 0 auto;
text-align: center;
padding-top: 5px;
padding-bottom: 5px;
}
.sectionContainer>.innerBox{
flex: 1 1 auto;
width: 100%;
padding: 5px;
box-sizing:border-box;
}
@keyframes animateWidth {
0%{
width: 100%;
}
25%{
width: 50%;
}
50% {
width: 100%;
height: 300px;
}
75% {
height: 150px;
}
100% {
height: 300px;
}
}
<div class="sectionContainer">
<h2 class="box-title">JavaScript</h2>
<textarea class="innerBox"></textarea>
</div>
答案 1 :(得分:1)
使用flexbox,但不要将textarea设置为flex项目,以避免调整大小。考虑一下它周围的包装纸。
.sectionContainer{
display: flex;
flex-direction: column;
border: 2px solid red;
height: 300px;
}
.sectionContainer>.box-title{
text-align: center;
padding-top: 5px;
padding-bottom: 5px;
}
.sectionContainer>.innerBox{
flex-shrink:0;
flex-grow:1;
}
.sectionContainer>.innerBox textarea {
height:100%;
width:100%;
box-sizing:border-box;
}
<div class="sectionContainer">
<h2 class="box-title">JavaScript</h2>
<div class="innerBox"><textarea ></textarea></div>
</div>