微信小程序textarea层级过高的解决方法
一、前言
相信做过微信小程序开发的人应该都碰到过这个问题,因为这个需求实在太常见了
由于textarea是属于原生组件,层级最高,不管在页面中我们设置z-index值多少都会被textarea组件遮挡住,很影响用户体验,
目前官方对该问题还没有修复,当然官方也给出了解决该问题的其他方案,使用cover-view和cover-image替代,但个人感觉并不是很好,有一些限制
二、使用场景及解决方案
1、弹窗显示
2、底部fixed定位的按钮,页面滚动时,例如添加购物车,显示价格
针对以上两种业务场景解决方式不同
针对场景1弹窗显示的处理方式
在显示弹窗时通过if或者绑定class属性将textarea组件隐藏,弹窗关闭时显示,如下
针对场景2(滚动)如何解决
我们在输入时使用textarea组件,不输入的时候text来显示文字和placeholder,这样我们需要单独设置几个标签
用于显示文本内容
说说对这个活动看法吧
通过v-show来显示或隐藏该组件,使用scroll-view标签为文本内容设置可滚动,这里设置了isFocus聚焦,通过按钮的形式去触发textaare的Focus
完整代码如下:
说说对这个活动看法吧
data(){
return{
isContentFocus:true,
isInputContentFocus:false,
isFocus:false
};
},
methods:{
bindContentFocus(e){
this.isFocus=true;//触发焦点
this.isContentFocus=false;//聚焦时隐藏内容文本标签
this.isInputContentFocus=true;
console.log("FocusisFocus",this.isFocus);
},
bindContentBlur(e){
this.isContentFocus=true;//聚焦时隐藏内容文本标签
this.isInputContentFocus=false;
this.isFocus=false;//失去焦点
console.log("BlurisFocus",this.isFocus);
}
}
三、其他方式
官方给出了针对textarea的解决方式,使用cover-view和cover-image替代,这两个组件也是原生组件,可以覆盖textarea组件
cover-image
不过这里有个限制就是内只能嵌套组件,view标签的子节点树在真机上都会被忽略。
像上面场景2的需求,添加购物车,显示价格,很明显这种方式并不适用,当然如果底部我们只有一个button的话是可以使用这种方式去解决的
参考阅读
- https://www.nhooo.com/article/157304.htm
- https://www.nhooo.com/article/157306.htm
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。