来自这个文本区域的额外空间在哪里?

时间:2018-05-12 10:42:00

标签: html css textarea padding

我的textarea遇到了一个奇怪的问题,即使在移除了所有样式后,我仍然在textarea周围留下了剩余的空间。

在下面的示例中,我删除了textarea中除默认2px padding之外的所有样式。填充/焦点上的填充变为0px,但您仍然可以看到1px的剩余空间。

我试过了:

  • 为容器提供固定的高度和宽度
  • 提供容器padding: 0;
  • 给予textarea相同的固定高度和宽度
  • 将textarea' outline-offset更改为0

但无济于事..


问题

来自哪个额外像素/空间?


演示:



.container {
  height: 200px;
  width: 500px;
  background: steelblue;
}

textarea {
  resize: none;
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 2px; /* textarea default padding */
  border: 1px solid red;
  overflow: auto;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  border-radius: 0;
  background: rgba(255, 255, 255, 0.5);
}

textarea:focus,
textarea:active {
  outline: none;
  padding: 0;
}

<div class="container">
  <textarea></textarea>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

你的textarea宽度大于container:100%+ 2px的边框+ 2px左边距+ 2px右边边距

box-sizing: border-box;中使用了textarea

box-sizing 属性允许我们在元素的总宽度和高度中包含填充和边框。

&#13;
&#13;
.container {
  height: 200px;
  width: 500px;
  background: steelblue;
}

textarea {
  resize: none;
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 2px; /* textarea default padding */
  border: 1px solid red;
  overflow: auto;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  border-radius: 0;
  background: rgba(255, 255, 255, 0.5);
  box-sizing: border-box;
}

textarea:focus,
textarea:active {
  outline: none;
  padding: 0;
}
&#13;
<div class="container">
  <textarea></textarea>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需在box-sizing: border-box;

中添加textarea即可
textarea {
  resize: none;
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 2px; /* textarea default padding */
  border: 1px solid red;
  overflow: auto;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  border-radius: 0;
  background: rgba(255, 255, 255, 0.5);
  box-sizing: border-box; // Added
}