支付寶小程序實現(xiàn)類似微信多行輸入功能(思路詳解)
先來看看微信小程序輸入框展示效果:

輸入超過 8 行的時候會出現(xiàn)滾動,這樣做的好處就是輸入框不會直接頂?shù)巾撁孀铐敳俊?/p>
支付寶小程序實現(xiàn)多行輸入框:使用textarea多行輸入框實現(xiàn)
思路一:
textarea 標簽設置max-height, 標簽自帶屬性auto-height自動增高
<view class="test">
<view class="top">
</view>
<view class="footer">
<textarea placeholder="Input multiple lines" auto-height maxlength="{{-1}}" class="textarea" show-count="{{false}}" enableNative="{{false}}"></textarea>
</view>
</view>
// css
.textarea {
max-height: 150rpx !important;
overflow-y: scroll;
}實際效果最大高度未生效, 會一直增高,該方法不行

思路二
多行文本框套一個容器,容器設置最大高度并y軸滾動,
<view class="test">
<view class="top">
</view>
<view class="footer">
<view class="textarea-content">
<textarea placeholder="Input multiple lines" auto-height maxlength="{{-1}}" class="textarea" show-count="{{false}}" enableNative="{{false}}">
</textarea>
</view>
</view>
</view>
// css
.textarea-content {
max-height: 150rpx !important;
overflow-y: scroll;
}可以實現(xiàn),但是ios會出現(xiàn)如下問題,超出的文本全選中會在頁面透漏出光標,光標在滾動層里也會透出

思路三
多行文本框設置絕對定位高度設置100%,增加一個兄弟元素設置max-height,監(jiān)聽輸入事件記錄輸入的value, 把value放到兄弟元素里,由兄弟元素撐開父元素,隨之文本框也自動增高和減少
<view class="test">
<view class="top">
</view>
<view class="footer">
<view class="textarea-content">
<textarea placeholder="Input multiple lines" onInput="onInput" maxlength="{{-1}}" class="textarea" show-count="{{false}}" enableNative="{{false}}"></textarea>
<text class="textarea-brother">{{value}}</text>
</view>
</view>
</view>
// css
.textarea-content {
position: relative;
}
.textarea {
height: 100%;
position: absolute;
top: -150rpx;
height: 100%;
width: 100%;
}
.textarea-brother {
width: 100%;
min-height: 42px;
display: block;
max-height: 150rpx;
word-break: break-all;
word-wrap: break-word;
}解決了光標超出滾動層的問題,但是input只能監(jiān)聽輸入到輸入框的字,輸入法切換到中文,會先用拼音占輸入框的高度,期望高度也是可以增高的,但是由于監(jiān)聽不到輸入事件,這種處理方法會遮蓋拼音
最終解
找到了支付寶原生組件的樣式表https://open.alipay.com/portal/forum/post/120501011

通過命名可以猜測這個是文本輸入框內(nèi)容樣式class屬性值,通過修改樣式設置 max-height, 自動增高開啟就完美實現(xiàn)多行輸入到一定高度不再增高,進行滾動
<view class="test">
<view class="top">
</view>
<view class="footer">
<view class="textarea-content">
<textarea placeholder="Input multiple lines" onInput="onInput" maxlength="{{-1}}" auto-height class="textarea" show-count="{{false}}" enableNative="{{false}}"></textarea>
<!-- <text class="textarea-brother">{{value}}</text> -->
</view>
</view>
</view>
// css
.textarea {
.a-textarea-content {
max-height: 150rpx !important;
}
}效果如下:

到此這篇關于支付寶小程序實現(xiàn)類似微信多行輸入功能的文章就介紹到這了,更多相關支付寶實現(xiàn)微信多行輸入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript實現(xiàn)為指定對象添加多個事件處理程序的方法
這篇文章主要介紹了JavaScript實現(xiàn)為指定對象添加多個事件處理程序的方法,可實現(xiàn)讓指定對象處理多個事件的功能,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
實例詳解JavaScript靜態(tài)作用域和動態(tài)作用域
作用域是指程序源代碼中定義變量的區(qū)域,作用域規(guī)定了如何查找變量,也就是確定當前執(zhí)行代碼對變量的訪問權限,這篇文章主要給大家介紹了關于JavaScript靜態(tài)作用域和動態(tài)作用域的相關資料,需要的朋友可以參考下2021-10-10
layui前端框架之table表數(shù)據(jù)的刷新方法
今天小編就為大家分享一篇layui前端框架之table表數(shù)據(jù)的刷新方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

