css 当flexbox中没有页脚时会出现额外的滚动条[重复]

qco9c6ql  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(134)

此问题已在此处有答案

Extra space under textarea, differs along browsers(3个答案)
2天前关闭。
此帖子已于2天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决

示例代码

body {
  height: 100vh;
  margin: 0;
  display: flex;
  flex-direction: column;
}

header,
footer {
  background: green;
}

main {
  flex: 1;
  display: flex;
}

div {
  flex: 1;
}

textarea {
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  resize: none;
}

div#one textarea {
  background: lightBlue;
}

div#two textarea {
  background: tan;
}
<header>Header</header>
<main>
  <div id="one"><textarea>Textarea 1</textarea></div>
  <div id="two"><textarea>Textarea 2</textarea></div>
</main>
<footer>Footer</footer>

问题

删除header元素,没有滚动条;删除footer,出现一个额外的滚动条。

提问

为什么只有在删除footer时才会发生?

注意:我知道如何去掉滚动条。

aor9mmx1

aor9mmx11#

出现滚动条是因为textarea默认是一个inline-block元素,并且在底部缩进。有两种方法可以解决此问题:

  • 将parent设置为零 font-sizeline-height(适用于您的情况,但不推荐);
  • 正确的做法是将display:block设置为文本区域本身。
body {
  height: 100vh;
  margin: 0;
  display: flex;
  flex-direction: column;
}

header,
footer {
  background: green;
}

main {
  flex: 1;
  display: flex;
}

div {
  flex: 1;
  /* font-size: 0;   */
  /* line-height: 0; */
}

textarea {
  display: block;
  
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  resize: none;
}

div#one textarea {
  background: lightBlue;
}

div#two textarea {
  background: tan;
}
<header>Header</header>
<main>
  <div id="one"><textarea>Textarea 1</textarea></div>
  <div id="two"><textarea>Textarea 2</textarea></div>
</main>
<!--footer>Footer</footer-->

相关问题