field-sizing 不是有效的 CSS 属性,所有主流浏览器均不支持;真正跨浏览器自适应需分控件采用不同策略:input 无法自适应高度,textarea 须用 JS 动态设置高度,select 宽度适配兼容性差,移动端还存在 visualViewport、输入法、overflow 等陷阱。
不能用实现——它不是有效的 CSS 属性,所有主流浏览器都不支持,写了也完全没效果。
为什么你搜到的
示例都“不生效”
你看到的所谓
教程,基本来自三类混淆:
把早已废弃的私有前缀(如旧版 Safari 的
)当成了通用属性
把
、
或 UI 框架的组件 props(比如 React 中的
)误标为原生 CSS
引用了未进入规范草案的编辑器草稿(CSS Basic UI Module Level 4),该草案从未被任何浏览器引擎实现
你可以当场验证:
返回空字符串;
和
上查不到该属性;Chrome/Firefox/Safari 最新稳定版(截至 2026 年 5 月)均无视该声明。
真正能跨浏览器自适应尺寸的方案
对不同控件,必须用不同组合策略,没有“一行 CSS 解决”的捷径:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
:无法自适应高度(单行限制),宽度可借助 JS 监听
事件 +
动态调整,但开销大、光标易跳动,**不推荐**
:唯一可靠方式是 JS 动态设高:
,并配合
、
和
:浏览器控制渲染逻辑,无法根据选中项自动缩放宽度;可用
+
(仅 Chromium/Safari 支持较好)+
防止换行,但兼容性差
容易被忽略的移动端陷阱
即使 JS 方案写对了,在 iOS Safari 上仍大概率失效,原因包括:
键盘弹出时
尺寸突变,导致
计算失准
中文输入法候选栏未上屏时,
事件触发但内容未更新,
滞后
父容器设了
或
,会截断滚动计算范围
默认
,但 padding/border 未被
包含,需手动补偿
真实项目里,最稳妥的做法仍是放弃“完全自适应”,改用
+
+
,把控制权交还用户。
field-sizingfield-sizingfield-sizing: content-webkit-field-sizingresizeheight: fit-contentautoSizegetComputedStyle(document.querySelector('input')).fieldSizingCanIUseMDNinputgetBoundingClientRect().widthel.style.height = 'auto'; el.style.height = el.scrollHeight + 'px';min-heightmax-heightbox-sizing: border-boxmin-widthwidth: fit-contentwhite-space: nowrapvisualViewportscrollHeightinputscrollHeightoverflow: hiddentransformtextareabox-sizing: content-boxscrollHeightmin-heightmax-heightresize: vertical