textarea如何實現高度自適應?


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

方法0:textarea高度自適應,隨着內容增加高度增加

$(function(){
        $.fn.autoHeight = function(){    
        function autoHeight(elem){
            elem.style.height = 'auto';
            elem.scrollTop = 0; //防抖動
            elem.style.height = elem.scrollHeight + 'px';
        }
        this.each(function(){
            autoHeight(this);
            $(this).on('keyup', function(){
                autoHeight(this);
            });
        });     
    }                
    $('textarea[autoHeight]').autoHeight();    
})

頁面中的textarea直接加屬性就行

<textarea  autoHeight="true" readonly="readonly" > </textarea>

pc   移動端都經過測試,沒問題 放心用吧!出自:https://www.cnblogs.com/purple04551/p/8075366.html

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

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

因為textarea不支持自適應高度,就是定好高度或者是行數之后,超出部分就會顯示滾動條,看起來不美觀。

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

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

contenteditable屬性雖是HTML5里面的內容,但是IE似乎老早就支持此標簽屬性了。所以,兼容性方面還是不用太擔心的。

CSS代碼

 HTML代碼

CSS代碼中,因為IE6不支持min/max,所以做了hack,其他的也好理解。

 

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

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

這個寫法是用原生JS寫的,考慮了很多兼容性問題,完全和新浪微博的回復效果一樣的功能。有興趣的童鞋可以仔細分析下代碼。

CSS代碼

JavaScript代碼

HTML代碼(寫在body里面的)

 

文章來源:https://www.cnblogs.com/dffy/p/6386318.html

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

 其他方法


免責聲明!

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



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