textarea如何實現高度自適應?

文章來源:http://blog.csdn.net/tianyitianyi1/article/details/49923069javascript

 

 

轉自:http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.htmlhtml

 

今天須要些一個回覆評論的頁面,設計師給的初始界面就是一個只有一行的框。而後當時就想這個交互該怎麼實現比較好,而後想起了新浪微博的作法:點擊評論,默認顯示一行,當輸入的文字超過一行或者輸入Enter時,輸入框的高度會隨着改變,直到輸入完畢。頓時以爲這個細節作得挺不錯的,能夠效仿下。下面分享2種實現textarea高度自適應的作法,一種是用div來模擬textarea來實現的,用CSS控制樣式,不用JS;另外一種是利用JS控制的(由於存在瀏覽器兼容問題,因此寫起來比較麻煩);html5

方法一:div模擬textarea文本域輕鬆實現高度自適應

demo演示地址:http://www.xuanfengge.com/demo/201308/textarea/demo1.htmljava

由於textarea不支持自適應高度,就是定好高度或者是行數以後,超出部分就會顯示滾動條,看起來不美觀。瀏覽器

而用DIV來模擬時,首先遇到的問題是:div怎麼實現輸入功能?app

可能咱們仍是第一次見到這個屬性contenteditable,如一個普通的block元素上加個contenteditable="true"就實現編輯,出現光標了。如ui

contenteditable屬性雖是HTML5裏面的內容,可是IE彷佛老早就支持此標籤屬性了。因此,兼容性方面仍是不用太擔憂的。spa

CSS代碼.net

 HTML代碼firefox

CSS代碼中,由於IE6不支持min/max,因此作了hack,其餘的也好理解。

 

方法二:文本框textarea根據輸入內容自適應高度

demo演示地址:http://www.xuanfengge.com/demo/201308/textarea/demo2.html

這個寫法是用原生JS寫的,考慮了不少兼容性問題,徹底和新浪微博的回覆效果同樣的功能。有興趣的童鞋能夠仔細分析下代碼。

CSS代碼

JavaScript代碼

HTML代碼(寫在body裏面的)

 

 其餘方法

相關文章
相關標籤/搜索