自动扩展文本区域在 Facebook 等网站上很受欢迎。文本区域框的高度会根据用户输入的文本数量而扩展和收缩。这有几个优点:
查看扩展文本区域演示……
本分三部分的教程描述了如何使用 HTML 和可重用的 jQuery 插件构建自动扩展文本区域。在第三部分结束时,您将了解其工作原理,并拥有可在您自己的项目中使用的代码。
像所有优秀的开发者一样,我们应该彻底了解系统需求:
我们将解决方案实现为一个 jQuery 插件。jQuery 主要用于处理 DOM 嗅探和事件委托等更平凡的方面;您可以轻松地使用另一个框架重写代码。
但是,我们如何知道何时应该调整文本区域大小以及使用什么高度呢?
首先,我们可以为任何文本区域分配一个“keyup”事件处理程序。这将在按下键并修改文本后立即调用一个函数。
然后,我们可以检查 DOM scrollHeight 属性。这将返回内部滚动部分的高度,即用户输入的文本的高度。如果我们将文本区域的高度设置为当前 scrollHeight 值,则滚动条将变得无关紧要。不幸的是,scrollHeight 不是 W3C 建议,并且我们需要克服一些跨浏览器不一致性:
我们还需要考虑滚动条。默认情况下,大多数浏览器仅在需要时才显示文本区域滚动条。但是,如果我们将 overflow 设置为“auto”,则在添加新行时滚动条将出现,然后在更改文本区域高度时消失。将 overflow 设置为“hidden”将解决闪烁的滚动条问题,但这绝不能应用于非扩展文本区域或已扩展到其指定最大高度以外的文本区域。
最后,浏览器窗口调整大小可能是一个问题。流体网页设计可以实现具有基于百分比的宽度的文本区域:调整窗口大小将调整框大小。虽然我们可以检测窗口调整大小,但该事件在 IE 中表现不佳,并且会快速调用处理程序。我们可以解决这个问题,但是调整多个文本区域的大小可能会导致页面设计跳动并混淆用户。因此,在调整大小后,我们只会在用户将焦点切换到该框后才调整文本区域的高度。
有很多内容需要吸收,而且还有更多内容!给自己冲杯咖啡,准备好迎接第二部分吧……
以上是如何构建自动扩展Textarea jQuery插件,第1部分的详细内容。更多信息请关注PHP中文网其他相关文章!