自動擴展文本區域在 Facebook 等網站上很受歡迎。文本區域框的高度會根據用戶輸入的文本數量而擴展和收縮。這有幾個優點:
查看擴展文本區域演示……
本分三部分的教程描述瞭如何使用 HTML 和可重用的 jQuery 插件構建自動擴展文本區域。在第三部分結束時,您將了解其工作原理,並擁有可在您自己的項目中使用的代碼。
像所有優秀的開發者一樣,我們應該徹底了解系統需求:
我們將解決方案實現為一個 jQuery 插件。 jQuery 主要用於處理 DOM 嗅探和事件委託等更平凡的方面;您可以輕鬆地使用另一個框架重寫代碼。
但是,我們如何知道何時應該調整文本區域大小以及使用什麼高度呢?
首先,我們可以為任何文本區域分配一個“keyup”事件處理程序。這將在按下鍵並修改文本後立即調用一個函數。
然後,我們可以檢查 DOM scrollHeight 屬性。這將返回內部滾動部分的高度,即用戶輸入的文本的高度。如果我們將文本區域的高度設置為當前 scrollHeight 值,則滾動條將變得無關緊要。不幸的是,scrollHeight 不是 W3C 建議,並且我們需要克服一些跨瀏覽器不一致性:
我們還需要考慮滾動條。默認情況下,大多數瀏覽器僅在需要時才顯示文本區域滾動條。但是,如果我們將 overflow 設置為“auto”,則在添加新行時滾動條將出現,然後在更改文本區域高度時消失。將 overflow 設置為“hidden”將解決閃爍的滾動條問題,但這絕不能應用於非擴展文本區域或已擴展到其指定最大高度以外的文本區域。
最後,瀏覽器窗口調整大小可能是一個問題。流體網頁設計可以實現具有基於百分比的寬度的文本區域:調整窗口大小將調整框大小。雖然我們可以檢測窗口調整大小,但該事件在 IE 中表現不佳,並且會快速調用處理程序。我們可以解決這個問題,但是調整多個文本區域的大小可能會導致頁面設計跳動並混淆用戶。因此,在調整大小後,我們只會在用戶將焦點切換到該框後才調整文本區域的高度。
有很多內容需要吸收,而且還有更多內容!給自己衝杯咖啡,準備好迎接第二部分吧……
以上是如何構建自動擴展Textarea jQuery插件,第1部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!