div模擬textarea實現高度自增長


今天突然有位前端的朋友問我textarea怎么實現高度隨內容自增長,我一下子懵了,首先想到的是用js改變textarea的高度,但是百度了很多參考代碼效果都不是很理想。

因為之前實際項目中用的textarea都是定死高度后超出實現滾動條的,如果不是對用戶體驗太在意的話沒必要去搞什么高度自增長......

然而優秀的設計都是眼里融不進沙子的,沒有什么是不可能實現的,接下來就介紹下如何通過div來模擬一個textarea實現高度自增長(當然利用js也可以實現,但是個人感覺沒有必要)。

ok,那么我就來現學現教了,首先敲一個div出來:

<div id="textarea" contenteditable="true"></div>

大家一定發現了一個很少見的屬性 contenteditable ,what?這是什么?懂英文的小伙伴一看可能就懂了,應該是內容可編輯的意思咯,沒錯,通過設置這一屬性為true就可以對div里的內容像textarea一樣進行編輯了,是不是很贊!

然而相信90%的小伙伴會問:這屬性應該是HTML5的吧,IE它不兼容吧。。。

很遺憾,讓這些小伙伴失望了,你們只答對了一半,contenteditable確實是HTML5的屬性,但是這一次IE卻領先了一步,早在很早之前IE就支持了這一屬性,至少IE6是沒有問題的,所以兼容性方面大家可以放心了。

相信現在小伙伴們已經目瞪口呆了,這么實用!這么簡單!一定收藏了先!

慢着,咱們還沒說完呢,既然div已經取代了textarea,接下來我們還得模仿不是嗎?至少也得模仿的像一點才是嘛。

咱們可以通過設置min-height、max-height來對高度進行設定,通過設置padding、outline、font-size、overflow來處理美化細節,代碼如下:

1 #textarea {
2      width:300px;
3      border:1px solid #ccc;
4      min-height:150px;
5      max-height:300px;
6      overflow: auto;
7      font-size: 14px;
8      outline: none; 
9 }

完整的演示如下:

ok,我們的目的已經達成了,十分完美,利用這一方法,我們還可以實現很多textarea無法實現的功能,比如在textarea里設置局部字體的顏色、字體大小等等,可以說我們實現了一個能夠識別html代碼的textarea。效果如下:

好了,大功告成!

 

感謝閱讀,本文靈感來自:http://www.zhangxinxu.com  轉載請注明出處,歡迎大家評論。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM