ionic3-輸入框動態(tài)縮放

在做聊天窗口的時候遇到一個問題,就是輸入框輸入多行文字之后沒有自動變高,現(xiàn)在很多流行的社交軟件如微信、QQ中都至少輸入4行之后才將多余的部分隱藏,所以問題來了,怎樣在輸入的時候輸入框動態(tài)變高,當高度到達四行之后就保持不變,消息發(fā)送之后又變回原來的高度。

1.html中給texteara添加input事件:

<ion-textarea  cols="30" rows="1"  [(ngModel)]='talkvalue'  (input)="updateEditor()"></ion-textarea> 

2.在ts中注入ElementRef模塊,并引入:

import { ElementRef } from '@angular/core';
export class ChatPage {
  constructor(public element :ElementRef){
  }
}

3.在函數(shù)內(nèi)獲取到dom元素,使用元素的scrollHeight屬性獲取元素的動態(tài)高度,并賦值給height:

updateEditor(){
  let el = this.element.nativeElement.querySelector("textarea");
  el.style.overflow = "hidden";
  el.style.height = "auto";
  if (el['scrollHeight'] <= 84) { //給輸入框設定一個最大的高度
        el['style'].height = el['scrollHeight'] + "px";
  }else {
       el['style'].height = "80px";
  }
}

4.在發(fā)送完消息后將輸入框變回原來的高度:

send(){
  ...
  this.talkvalue= '';
  let el = this.element.nativeElement.querySelector("textarea");
  el.style.height = "25px";
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容