html - 无法让 textarea 成为剩余 DIV 空间的 100% 高度

标签 html css textarea

我需要你的帮助。出于某种原因,我的文本区域似乎不想合作。我想要做的是按照下面描述的红色箭头将其高度扩展到 DIV 中剩余空间的 100%。但也许我做错了什么。也许一双全新的眼睛会有很大帮助。

enter image description here

这里是有问题的 HTML 和 CSS:

<!DOCTYPE html>

<html>

<head>

<style type="text/css">
.content {
    width: 500px;
    height: 500px;
    border: 1px solid blue;
}
textarea {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
}
</style>


</head>

<body>

<div class="content">

    <div>text here</div>

    <div><textarea></textarea></div>

    <div><input type="button" value="Click Me"/></div>


</div>


</body>

</html>

最佳答案

问题是您将 textarea 的高度设置为其父元素的 100%。但是它的父级有 height: auto,所以它的高度取决于它的内容。这是一个递归定义。

您可以通过为该父级设置一个明确的高度来解决它,例如100%。但是 .content 的内容的高度总和将超过 100%

如果您知道 .content 的其他内容的高度,您可以使用 calc()

但是如果你想要一个流畅的布局,你应该可以使用 CSS 表格。

.content { display: table }
.content > div { display: table-row }
.content > div:nth-child(2) { height: 100% }

此外,某些浏览器可能需要绝对定位,以便使 textarea 脱离流程,从而避免递归定义高度。

.content {
  width: 500px;
  height: 500px;
  border: 1px solid blue;
  display: table;
  table-layout: fix
}
.content > div {
  display: table-row;
  position: relative;
}
.content > div:nth-child(2) {
  height: 100%; /* As much as possible */
}
textarea {
  position: absolute;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
}
<div class="content">
  <div>text here</div>
  <div><textarea></textarea></div>
  <div><input type="button" value="Click Me" /></div>
</div>

但最好去掉 textarea 的包装并使用 flexbox:

.content { display: flex; flex-direction: column; }
textarea { flex-grow: 1; }

.content {
  width: 500px;
  height: 500px;
  border: 1px solid blue;
  display: flex;
  flex-direction: column;
}
textarea {
  flex-grow: 1;
}
<div class="content">
  <div>text here</div>
  <textarea></textarea>
  <div><input type="button" value="Click Me" /></div>
</div>

关于html - 无法让 textarea 成为剩余 DIV 空间的 100% 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144084/

相关文章:

html - 如何隐藏 HTML 表格行 <tr> 使其不占用空间?

html - 使用 CSS bootstrap "Jumbotron"图像重新缩放/调整大小

javascript - 基于浏览器的 IDE - 带有代码完成功能的文本区域可用吗?

html - 无法在不适合表格单元格的长文本上启用椭圆字符

javascript - 将两个音频缓冲区叠加到一个缓冲区源中

javascript - div 按钮上的 JQuery click() 不会触发

javascript - 单击后显示 div 的 Php 和 Javascript

css - Flex 高度在 Chrome 中不起作用

php - 将文本区域输出显示为带元素符号的列表

html - 如何使用 CSS 将文本区域居中?