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