无法调整文本区域高度的大小
Unable to resize the textarea height
我在项目中使用textarea
时注意到一个奇怪的错误。
起初我认为我的代码中存在问题,但后来我能够复制该错误,在 JsFiddle 中提取 essenial。
问题是:
如果我之前没有用户进行任何交互就通过代码更改textarea
的高度,则高度会卡在该大小。
例如,如果您单击"更改大小"按钮(在上面的jsfiddle中),然后尝试使用元素夹点(在右下角)将大小调整回初始大小,则无法。 这就像新高度是textarea
的新"最小允许尺寸"一样。
我
做错了什么?我错过了什么?
提前谢谢你。
在 Chrome 中,高度会覆盖最小高度。
在旧版本的chrome中,没有限制。
因此,如果您使用身高,最小身高将是您的身高。所以你需要 仅设置最小高度和最大高度。高度覆盖最小高度 铬。
textarea{
max-height: auto;
min-height: 50px;
resize: both;
}
好的,这个解决方案对我有用(chrome 版本 47.0.2526.111 m):https://jsfiddle.net/ezsz8xr5/9/
我发现了这个感兴趣的链接:https://code.google.com/p/chromium/issues/detail?id=94583
似乎这是一个已知问题。
我知道这个问题已经问过一段时间了,但是没有好的答案,我找到了解决方案。
我发现,为文本区域放置 % 高度不会根据其父级更改它。
如果您将规则放在 resize: vertical
,手动更改高度,您会注意到浏览器会将 style.height 以像素为单位。
所以我试着放height: 150px
,它奏效了。
所以这里有两个解决方案:
- 首先,以像素为单位放置文本区域的高度,而不是百分比。
parent {
width: 150px;
}
parent textarea {
height: 100%; /* not working ! */
}
/* Instead, do : */
/* css variable */
:host {
--height: 150px;
}
parent {
height: var(--height);
}
parent textarea {
height: var(--height);
}
对于 SCSS 方式:
parent {
$height: 150px;
height: $height;
textarea {
height: $height;
}
}
- 其次,将文本区域父项的显示声明为 flex,并且没有任何其他规则,它将自动调整文本区域的大小。如果没有,请执行以下操作:
parent {
display: flex;
/* if flex doesn't work by itself, add this + textarea rule : */
flex-flow: column nowrap;
}
parent textarea {
flex: 1; /* tells the textarea to fit all the free space it finds */
}
这似乎是一个浏览器问题,是的,可悲的是,在 2022 年仍未修复。如果它是故意的,那么它甚至没有被记录下来。
希望这将在未来对某人有所帮助。
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 使用jquery调整文本区域的高度
- 如何确定素数面的InputText区域的高度
- 始终具有窗口高度的文本区域
- 如何增加highchart.js图表上x轴标签区域的高度
- text区域高度请求滚动高度流问题
- 在 JavaScript 中重置文本区域高度
- 查找文本区域的可见高度
- 动态文本区域高度
- 钛应用器动态文本区域高度增加
- 当 #content 区域长于窗口高度(本机或 Vue.js)时收听
- 文本区域只读自动高度(用所选日期填充)
- 通过自动调整内容高度来防止文本区域 ENTER 行为
- 获取用作边框区域的 ExtJS 面板的高度
- 文本区域的高度在值增加时增加,但在值减小时不会降低
- 当键入超过最大宽度时,动态扩展文本区域的高度
- 零高度文本区域不是零像素高
- 获取页面高度的未滚动区域
- 无法调整文本区域高度的大小
- 移动可查看区域的高度(地址栏和导航栏之间)