html - 为什么我的文本区域比它的邻居高?

标签 html css

图片:

enter image description here

.left {
  border: 1px solid red;
}
textarea {
  border: 1px solid blue;
}
.parent {
  border: 1px solid green;
}
<div class='parent'>
    <span class='left'>
        <span>one</span>
        <span>two</span>
     </span>
     <textarea></textarea>
</div>

Codepen

最佳答案

Why is my textarea higher up than its neighbor?

不是。

让我解释一下。

首先,一些背景知识:

您的 spantextarea 元素(默认情况下)是 inline elements .

浏览器通常在内联元素下方为 descenders 提供一点空白。

理解后代......

Look at this line of text. Notice there are no letters that breach the baseline.

现在看下面的句子:

By just crossing the bridge he probably got away.

注意字母“y”、“j”、“p”和“g”。这些信件违反了 baseline在字体排版中称为“descenders”。

[ enter image description here

来源:Wikipedia.org

您看到的差距不是边距或填充,而只是浏览器提供的空间来容纳这些小写字母。简而言之,这叫做baseline alignment .

baseline

The line upon which most letters "sit" and below which descenders extend.

[enter image description here

Source: Wikipedia.org

那么,为什么有人会问,浏览器是否为 textareaimginput 和其他内联元素提供了这个空间,这些元素不需要下行空间吗?

因为浏览器会针对同一行中其中一个元素之前或之后可能有文本的可能性进行调整。

现在,您的图片和代码...

乍一看,textarea 明显高于 span 元素。但是如果你仔细看看......

enter image description here

...您会看到它们完全对齐。 spantextarea 都为 descenders 提供了空间。

enter image description here

您添加的边框会导致出现错位,因为 textarea 边框包围了一个清晰划定的框,同时排除了下行空间,但是 span 边框包裹文本和下行空间。如果您删除红色边框,则错位就不那么明显了。

就解决方案而言,这里有两种选择:

  1. vertical-align: bottom 添加到textarea 规则,或者
  2. display: block 添加到textarea 规则。

关于html - 为什么我的文本区域比它的邻居高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414736/

相关文章:

javascript - 滚动条因背景图片而消失

html - 在带有 picturefill 的图像标签上同时使用 src 和 srcset 是否有效?

html - 如何在表格内制作页眉和页脚STICKY(即分别固定在表格的顶部和底部)?

html - 如何在带列的 div 上获取背景颜色?

javascript - Jquery Sortable,在启用溢出的容器内使用链表

javascript - 如何停止在移动设备上加载 pdf?

css - 如何使用 Bootstrap 使表单控件居中

javascript - 以形状显示图像的最佳方式

jquery - 带有 jQ​​uery Slider Revolution(WP 插件版本)的 Webkit 中的字体渲染/平滑问题

html - 可以禁用 :visited?