微信小程序textarea層級過高的解決方法
一、前言
相信做過微信小程序開發(fā)的人應(yīng)該都碰到過這個(gè)問題,因?yàn)檫@個(gè)需求實(shí)在太常見了
由于textarea是屬于原生組件,層級最高,不管在頁面中我們設(shè)置z-index值多少都會被textarea組件遮擋住,很影響用戶體驗(yàn),
目前官方對該問題還沒有修復(fù),當(dāng)然官方也給出了解決該問題的其他方案,使用cover-view和 cover-image替代,但個(gè)人感覺并不是很好,有一些限制
二、使用場景及解決方案
1、彈窗顯示
2、底部fixed定位的按鈕,頁面滾動時(shí),例如添加購物車,顯示價(jià)格
針對以上兩種業(yè)務(wù)場景解決方式不同
針對場景1彈窗顯示的處理方式
在顯示彈窗時(shí)通過if或者綁定class屬性將textarea組件隱藏,彈窗關(guān)閉時(shí)顯示,如下
<div class="section" :class="isShowInput?'':'hidden'"> <textarea class="content" placeholder="輸入內(nèi)容" v-model="userInfo"></textarea> </div>
針對場景2(滾動)如何解決
我們在輸入時(shí)使用textarea組件,不輸入的時(shí)候text來顯示文字和placeholder,這樣我們需要單獨(dú)設(shè)置幾個(gè)標(biāo)簽
<textarea>輸入內(nèi)容</textarea> <scroll-view>用于顯示文本內(nèi)容</scroll-view> <div class="placeholder" v-if="!content">說說對這個(gè)活動看法吧</div>
通過v-show來顯示或隱藏該組件,使用scroll-view標(biāo)簽為文本內(nèi)容設(shè)置可滾動,這里設(shè)置了isFocus聚焦,通過按鈕的形式去觸發(fā)textaare的Focus
完整代碼如下:
<textarea v-model="content" @blur="bindContentBlur" v-show="isInputContentFocus" placeholder="說說對這個(gè)活動看法吧" v-bind:focus="isFocus" ></textarea> <scroll-view scroll-y class="content" v-text="content" @click="bindContentFocus" v-show="isContentFocus" > <div class="placeholder" v-if="!content">說說對這個(gè)活動看法吧</div> </scroll-view> data() { return { isContentFocus: true, isInputContentFocus: false, isFocus: false }; }, methods: { bindContentFocus(e) { this.isFocus = true; //觸發(fā)焦點(diǎn) this.isContentFocus = false; //聚焦時(shí)隱藏內(nèi)容文本標(biāo)簽 this.isInputContentFocus = true; console.log("Focus isFocus", this.isFocus); }, bindContentBlur(e) { this.isContentFocus = true; //聚焦時(shí)隱藏內(nèi)容文本標(biāo)簽 this.isInputContentFocus = false; this.isFocus = false; //失去焦點(diǎn) console.log("Blur isFocus", this.isFocus); } }
三、其他方式
官方給出了針對textarea的解決方式,使用cover-view和 cover-image替代,這兩個(gè)組件也是原生組件,可以覆蓋textarea組件
<cover-view class="btn-save"> <button class="btn btn-love btn-apply" @click="apply" :disabled="apply_status" v-text="apply_status?'我已報(bào)名':'我要報(bào)名'" ></button> </cover-view>
不過這里有個(gè)限制就是<cover-view/> 內(nèi)只能嵌套 <cover-view/> <cover-image/> <button/> <navigator/>
組件,view 標(biāo)簽的子節(jié)點(diǎn)樹在真機(jī)上都會被忽略。
像上面場景2的需求,添加購物車,顯示價(jià)格,很明顯這種方式并不適用,當(dāng)然如果底部我們只有一個(gè)button的話是可以使用這種方式去解決的
參考閱讀
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
使用JavaScript在html文檔內(nèi)添加新的元素節(jié)點(diǎn)
這篇文章主要介紹了使用JavaScript在html文檔內(nèi)添加新的元素節(jié),主要打方式就是動態(tài)的改變原有html文檔結(jié)構(gòu),下文詳細(xì)介紹內(nèi)容需要的可以參考一下2022-02-02JS獲取url參數(shù),JS發(fā)送json格式的POST請求方法
下面小編就為大家分享一篇JS獲取url參數(shù),JS發(fā)送json格式的POST請求方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03js實(shí)現(xiàn)動態(tài)顯示時(shí)間效果
本文主要介紹了js實(shí)現(xiàn)動態(tài)顯示時(shí)間效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03JS面向?qū)ο?、prototype、call()、apply()
那天用到prototype.js于是打開看看,才看幾行就滿頭霧水,原因是對js的面向?qū)ο蟛皇呛苁煜?,于是百?google了一把,最后終于算小有收獲,寫此紀(jì)念一下^_^。2009-05-05