支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能(思路詳解)
先來看看微信小程序輸入框展示效果:
輸入超過 8 行的時(shí)候會出現(xiàn)滾動(dòng),這樣做的好處就是輸入框不會直接頂?shù)巾撁孀铐敳俊?/p>
支付寶小程序?qū)崿F(xiàn)多行輸入框:使用textarea多行輸入框?qū)崿F(xiàn)
思路一:
textarea 標(biāo)簽設(shè)置max-height, 標(biāo)簽自帶屬性auto-height自動(dòng)增高
<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; }
實(shí)際效果最大高度未生效, 會一直增高,該方法不行
思路二
多行文本框套一個(gè)容器,容器設(shè)置最大高度并y軸滾動(dòng),
<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; }
可以實(shí)現(xiàn),但是ios會出現(xiàn)如下問題,超出的文本全選中會在頁面透漏出光標(biāo),光標(biāo)在滾動(dòng)層里也會透出
思路三
多行文本框設(shè)置絕對定位高度設(shè)置100%,增加一個(gè)兄弟元素設(shè)置max-height,監(jiān)聽輸入事件記錄輸入的value, 把value放到兄弟元素里,由兄弟元素?fù)伍_父元素,隨之文本框也自動(dòng)增高和減少
<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; }
解決了光標(biāo)超出滾動(dòng)層的問題,但是input只能監(jiān)聽輸入到輸入框的字,輸入法切換到中文,會先用拼音占輸入框的高度,期望高度也是可以增高的,但是由于監(jiān)聽不到輸入事件,這種處理方法會遮蓋拼音
最終解
找到了支付寶原生組件的樣式表https://open.alipay.com/portal/forum/post/120501011
通過命名可以猜測這個(gè)是文本輸入框內(nèi)容樣式class屬性值,通過修改樣式設(shè)置 max-height, 自動(dòng)增高開啟就完美實(shí)現(xiàn)多行輸入到一定高度不再增高,進(jìn)行滾動(dòng)
<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; } }
效果如下:
到此這篇關(guān)于支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能的文章就介紹到這了,更多相關(guān)支付寶實(shí)現(xiàn)微信多行輸入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)為指定對象添加多個(gè)事件處理程序的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)為指定對象添加多個(gè)事件處理程序的方法,可實(shí)現(xiàn)讓指定對象處理多個(gè)事件的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04微信小程序?qū)崿F(xiàn)消息框彈出動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)消息框彈出動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06實(shí)例詳解JavaScript靜態(tài)作用域和動(dòng)態(tài)作用域
作用域是指程序源代碼中定義變量的區(qū)域,作用域規(guī)定了如何查找變量,也就是確定當(dāng)前執(zhí)行代碼對變量的訪問權(quán)限,這篇文章主要給大家介紹了關(guān)于JavaScript靜態(tài)作用域和動(dòng)態(tài)作用域的相關(guān)資料,需要的朋友可以參考下2021-10-10微信小程序?qū)崿F(xiàn)滾動(dòng)加載更多的代碼
這篇文章通過實(shí)例代碼給大家介紹了微信小程序?qū)崿F(xiàn)滾動(dòng)加載更多,給大家提供了完整代碼,需要的朋友可以參考下2019-12-12layui前端框架之table表數(shù)據(jù)的刷新方法
今天小編就為大家分享一篇layui前端框架之table表數(shù)據(jù)的刷新方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08