默认情况下,<input>
和 <textarea></textarea>
元素不会根据其内容大小自动调整尺寸。事实上,并没有简单易用的 HTML 或 CSS 方法能够实现此功能。这有点奇怪,因为这似乎是一个合理的用例。但当然,总有办法,我的朋友。总有办法。
我最近在思考这个问题,起因是 Remy Sharp 在其博客中讨论了内联 <input>
元素的这个问题。
非输入元素自然扩展
对我来说,奇怪的是没有办法强制 <input>
元素模仿这种行为,但事实就是这样。
我们可以使用 contenteditable
属性将任何元素设为可编辑的、类似输入的元素:
<span contenteditable="true" role="textbox">99</span>
该 <span></span>
元素会自然地扩展到其内容所需宽度。如果它是一个 <div> 或任何其他块级元素,它也会根据需要垂直扩展。
<h3 id="但是-非输入元素是否具有可访问性">但是,非输入元素是否具有可访问性?</h3>
<p>我不太确定。请注意,我在元素上设置了 <code>role="textbox"
。这只是根据一些文档做出的最佳猜测。
即使这有帮助……
- 回车键提交表单的情况如何?
- 表单数据经常被序列化并发送,而执行此操作的代码可能不会查找
<span></span>
元素,这种情况如何? - 它在屏幕阅读器中的读取方式是否真的与
<input>
元素相同? -
<input>
元素还有哪些¹ 我没有想到的自然行为?
虽然我很喜欢通过使用非输入元素从浏览器免费获得自动调整大小的想法,但我同时也担心(我)未知的可用性和可访问性风险。
调整实际输入元素的大小
因此,假设我们坚持使用 <input>
和 <textarea></textarea>
。即使它不是特别自然,我们能否使它们可调整大小?
我想到的一个想法是用一个相对内联的父元素包装输入元素,并将其绝对定位在父元素内部。然后,使用 JavaScript,我们可以将输入值与包装器内的隐藏 <span></span>
元素同步,根据需要将宽度扩展。
对于 <textarea></textarea>
元素,一种经典技术是计算换行符的数量,用它来设置高度,然后乘以行高。这对于预格式化的文本(如代码)非常有效,但对于长篇幅的段落式内容则完全无效。
以下是所有这些想法的组合。
其他想法
Shaw 有一个非常巧妙的 JavaScript 单行代码。JavaScript 在元素上设置一个 data-*
属性,该属性等于输入的值。输入元素设置在一个 CSS 网格中,该网格是一个伪元素,它使用该 data-*
属性作为其内容。该内容是根据输入值将网格拉伸到适当大小的内容。
你的想法
我绝对知道你们这些网络极客已经用六种方法解决了这个问题。让我们在评论中看看它们。
- Eric Bailey 给了我一些即兴的想法:(1)没有可访问的名称。(2)它可能不适用于语音控制。(3)它将在高对比度模式下被忽略。
以上是自动增长的输入和textareas的详细内容。更多信息请关注PHP中文网其他相关文章!

具有CSS的自定义光标很棒,但是我们可以将JavaScript提升到一个新的水平。使用JavaScript,我们可以在光标状态之间过渡,将动态文本放置在光标中,应用复杂的动画并应用过滤器。

互动CSS动画和元素相互启动的元素在2025年似乎更合理。虽然不需要在CSS中实施乒乓球,但CSS的灵活性和力量的增加,可以怀疑Lee&Aver Lee&Aver Lee有一天将是一场

有关利用CSS背景滤波器属性来样式用户界面的提示和技巧。您将学习如何在多个元素之间进行背景过滤器,并将它们与其他CSS图形效果集成在一起以创建精心设计的设计。

好吧,事实证明,SVG的内置动画功能从未按计划进行弃用。当然,CSS和JavaScript具有承载负载的能力,但是很高兴知道Smil并没有像以前那样死在水中

是的,让#039;跳上文字包装:Safari Technology Preview In Pretty Landing!但是请注意,它与在铬浏览器中的工作方式不同。

此CSS-tricks更新了,重点介绍了年鉴,最近的播客出现,新的CSS计数器指南以及增加了几位新作者,这些新作者贡献了有价值的内容。

在大多数情况下,人们展示了@Apply的@Apply功能,其中包括Tailwind的单个property实用程序之一(会改变单个CSS声明)。当以这种方式展示时,@Apply听起来似乎很有希望。如此明显


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1
好用且免费的代码编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),