input文字框寬度自適應
實際應用中,可能需要input文字框能夠根據輸入字元的所佔據的寬度自動調節尺寸。
直接計算輸入字元所佔據的寬度,就如同直接稱量大象體重一樣比較困難。
可以和當年曹衝一樣轉換思路,達到殊途同歸的效果。
下面分享一個比較巧妙的實現方式,需要的朋友可以做一下參考。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #dis, #txt { font-size:12px; } #dis { position:absolute; z-index:1000; left:-500px; } </style> <script> window.onload = function () { let otxt = document.getElementById("txt"); let ospan = document.getElementById("dis"); otxt.onkeyup = function () { ospan.innerHTML = this.value; if (ospan.offsetWidth > otxt.offsetWidth) { this.style.width = ospan.offsetWidth + "px"; } } } </script> </head> <body> <input type="text" id="txt"/><br/> <span id="dis"></span> </body> </html>
預設狀態下,文字框有一個最小寬度,當輸入的文字總寬度超過文字框預設寬的時候,能夠實現寬度自適應效果。
下面是自適應效果的實現原理與程式碼分解註釋。
一.實現原理:
預設input文字框的寬度並不能實現自適應,也很難去計算輸入文字具體的寬度。
轉換一下思路,將輸入文字框的內容同步到一個隱藏的span元素。
span是內聯元素,能夠根據內容的寬度自動伸展和收縮,並且很容易計算它的寬度。
然後將span元素的寬度設定為文字框的寬度,這樣就實現了文字框寬度自適應效果。
二.程式碼註釋:
[CSS] 純文字檢視 複製程式碼#dis { position:absolute; z-index:-1000; left:-500px; }
將span元素設定為絕對定位,並將left屬性值設定為-500px。
這樣此元素就不會出現在頁面可視範圍,且不會影響其他文件的佈局。
[JavaScript] 純文字檢視 複製程式碼let otxt = document.getElementById("txt"); let ospan = document.getElementById("dis");
通過document.getElementById方法分別獲取文字框和span元素物件。
[JavaScript] 純文字檢視 複製程式碼otxt.onkeyup = function () {}
為文字框註釋keyup事件處理函式,當按鍵彈起即會執行此函式。
[JavaScript] 純文字檢視 複製程式碼ospan.innerHTML = this.value;
當按鍵彈起之後,會將文字框的值寫入span,基本達到了同步效果。
[JavaScript] 純文字檢視 複製程式碼if (ospan.offsetWidth > otxt.offsetWidth) { this.style.width = ospan.offsetWidth + "px"; }
文字框有一個預設寬度(或者人為設定的最小寬度),判斷span元素當前的寬度是否大於這個預設寬度。
如果大於,那麼就將文字框的寬度設定為當前span元素的寬度,實現了寬度自適應效果。
三.相關閱讀:
(1).絕對定位可以參閱CSS position:absolute 絕對定位一章節。
(2).z-index可以參閱CSS z-index屬性一章節。
(3).innerHTML可以參閱JavaScript innerHTML一章節。
(4).offsetWidth可以參閱JavaScript offsetWidth一章節。
相關文章
- input文字框實現寬度自適應程式碼例項
- input文字框的實際寬度包括邊框的
- 固定寬度下,CSS 實現自適應文字CSS
- CSS 自適應內容寬度的輸入框CSS
- UMeditor寬度自適應
- 微信小程式 – 富文字圖片寬度自適應(正則)微信小程式
- 手機直播原始碼,讓div寬度自適應文字內容原始碼
- 三列寬度自適應佈局
- React根據寬度自適應高度React
- echarts圖示如何自適應寬度Echarts
- flex一欄寬度固定一欄寬度自適應佈局Flex
- 一對一直播系統原始碼,UICollectionViewCell自適應文字寬度原始碼UIView
- Android FixedTextView 字型大小自適應文字框AndroidTextView
- 文字框高度自適應例項程式碼
- 兩列居中寬度自適應佈局
- CSS實現圖片寬度自適應CSS
- xib 控制元件寬度自適應控制元件
- 一列寬度固定一列寬度自適應佈局
- CSS左右兩欄寬度自適應中間一欄寬度固定CSS
- 如何獲取寬度自適應的元素的width寬度值
- textarea文字框高度自適應程式碼例項
- css實現的左右兩列寬度固定中間寬度自適應CSS
- 一列居中寬度自適應佈局
- css左欄固定右欄寬度自適應CSS
- HTML流動佈局各種寬度自適應HTML
- css三列一列寬度自適應效果CSS
- Qt QTableWidget 最後一覽自適應寬度QT
- 前端頁面高度和寬度自適應怎麼做?前端
- flex三列布局中間寬度自適應佈局Flex
- css浮動元素寬度根據內容自適應CSS
- 左右兩列寬度固定,中間一列寬度自適應程式碼例項
- CSS input文字框樣式CSS
- CSS input 文字框樣式CSS
- input 文字框內容居中
- CSS匹配input text文字框CSS
- input只能輸入文字框
- css--常見左右盒子寬度高度自適應佈局CSS
- flutter根據給定寬度自適應縮放字型大小Flutter