html - 在 Chrome 中调整 `textarea` 的大小会添加一个内联 CSS 属性 `margin`,但 Firefox 没有添加它...为什么?
问题描述
我有以下示例代码:
div {
display: inline-block;
padding: 5px;
background: #f00;
}
textarea {
display: block;
}
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<div>
<p>hellohellohellohellohellohellohellohello</p>
<textarea></textarea>
</div>
它显示了一个红色区域 ( <div>
),其中包含段落“hellohellohello...” ( <p>
) 和一个可调整大小的文本区域 ( <textarea>
)。
Firefox(版本 72)中的行为:当我调整 textarea 的大小时,内联 CSS 属性width
并被height
添加到 textarea 元素中。必要时,包含<div>
将调整大小以整齐地包含段落和文本区域。
Chrome 中的行为(80 版):调整 textarea 的大小时,还会向 textarea 添加一个额外的内联 CSS 属性margin
,导致包含<div>
与 textarea 一起调整大小,保持初始边距固定。
有人知道为什么 Chrome 和 Firefox 之间的这些行为不同吗?
在我当前的应用程序中,我更喜欢 Firefox 行为。如何使 Chrome 使用与 Firefox 相同的行为?(最好不使用 JavaScript ......)
编辑:
我注意到当我从元素中删除display: block;
CSS 声明时行为是正确的。textarea
所以这里的实际问题是:
display: block;
为什么 textarea 元素的边距在 Chrome中使用其 CSS 样式时变得“固定” ,以及- 如何在保持
display: block;
CSS 样式的同时避免 Chrome 中的这种行为。
解决方案
这是 Mozilla 中一个有趣的行为。这需要分享给相关的 Mozilla 社区。对于临时解决方案,您可以使用 CSS 中的 !important 属性覆盖内联“边距”属性。试试下面的代码:
div {
display: inline-block;
padding: 5px;
background: #f00;
}
textarea {
display: block;
margin:0 !important;
}
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<div>
<p>hellohellohellohellohellohellohellohello</p>
<textarea></textarea>
</div>
; }
推荐阅读
- php - 登录系统中的电子邮件/用户名组合不正确
- javascript - 做出反应。将 prop 传递给 ref
- python - 找到像素区域质心的更快方法
- scala - 您可以将字节数组转换为字符串数组,然后再转换回字节数组吗?
- java - 如何转换日期”格式,包括 IST
- database - 为什么将主键与其他(非空)列组合在 PostgreSQL 中不会自动唯一?
- c++ - 代码完成在 C++2a 的 Clion 2019.1 中不起作用
- laravel - 使用没有 jquery 的引导模式提交表单并在日历中显示事件
- sql - ORA-00917: PLSQL 中缺少逗号
- drop-down-menu - Flutter - 如何从 DropdownButton 对齐所选项目?