微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么“检查元素”在悬停时将输入元素的宽度显示为 100%,但其实际宽度较小?

如何解决为什么“检查元素”在悬停时将输入元素的宽度显示为 100%,但其实际宽度较小?

enter image description here

悬停在输入元素上的橙色带延伸到屏幕的整个宽度。但在开发工具中显示的元素的实际宽度仅为 169px。如果橙色条带不代表宽度,那它代表什么?

如果我将鼠标悬停在标签字段上,橙色宽度也会采用全宽,但现在在开发工具中显示的宽度为 820 像素。为什么会有这种差异?

请注意,我已将 display:block 分配给所有 inputlabel 字段。

解决方法

这是因为输入在 css 中有 display: block

块级元素总是从新行开始。块级元素总是占据可用的整个宽度(尽可能向左和向右伸展)。

Attribution

将 CSS 更改为 display: inline-block 不会导致这种情况。

.block {
  display: block;
}

.inline-block {
  display: inline-block;
}
<input type="text" class="block" placeholder="block"><span>more text</span>
<br>
<input type="text" class="inline-block" placeholder="inline-block"><span>more text</span>
<p>Use dev-tools to see the difference...

,

元素本身只有这么宽,但它的渲染块是全宽的(如橙色矩形所示)。渲染块占用的空间本质上是保留的。如果你在那个输入之后放另一个输入,它会掉到一个新行。

<form>
    <input type="text" value="blocked!" style="display: block;" />
    <input type="text" value="dropped!" /> 
    <input type="text" value="not dropped!" />
</form>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。