微信小程序textarea层级过高的解决方法


Posted in Javascript onMarch 04, 2019

一、前言

相信做过微信小程序开发的人应该都碰到过这个问题,因为这个需求实在太常见了

由于textarea是属于原生组件,层级最高,不管在页面中我们设置z-index值多少都会被textarea组件遮挡住,很影响用户体验,

目前官方对该问题还没有修复,当然官方也给出了解决该问题的其他方案,使用cover-view和 cover-image替代,但个人感觉并不是很好,有一些限制

二、使用场景及解决方案

1、弹窗显示

2、底部fixed定位的按钮,页面滚动时,例如添加购物车,显示价格

针对以上两种业务场景解决方式不同

针对场景1弹窗显示的处理方式

在显示弹窗时通过if或者绑定class属性将textarea组件隐藏,弹窗关闭时显示,如下

<div class="section" :class="isShowInput?'':'hidden'">
 <textarea class="content" placeholder="输入内容" v-model="userInfo"></textarea>
 </div>

针对场景2(滚动)如何解决

我们在输入时使用textarea组件,不输入的时候text来显示文字和placeholder,这样我们需要单独设置几个标签

<textarea>输入内容</textarea>
<scroll-view>用于显示文本内容</scroll-view>
<div class="placeholder" v-if="!content">说说对这个活动看法吧</div>

通过v-show来显示或隐藏该组件,使用scroll-view标签为文本内容设置可滚动,这里设置了isFocus聚焦,通过按钮的形式去触发textaare的Focus

完整代码如下:

<textarea
 v-model="content"
 @blur="bindContentBlur"
 v-show="isInputContentFocus"
 placeholder="说说对这个活动看法吧"
 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">说说对这个活动看法吧</div>
 </scroll-view>

data() {
 return {
 isContentFocus: true,
 isInputContentFocus: false,
 isFocus: false
 };
 },

 methods: {
 bindContentFocus(e) {
 this.isFocus = true; //触发焦点
 this.isContentFocus = false; //聚焦时隐藏内容文本标签
 this.isInputContentFocus = true;
 console.log("Focus isFocus", this.isFocus);
 },
 bindContentBlur(e) {
 this.isContentFocus = true; //聚焦时隐藏内容文本标签
 this.isInputContentFocus = false;
 this.isFocus = false; //失去焦点
 console.log("Blur isFocus", this.isFocus);
 }
 }

三、其他方式

官方给出了针对textarea的解决方式,使用cover-view和 cover-image替代,这两个组件也是原生组件,可以覆盖textarea组件

cover-image

<cover-view class="btn-save">
 <button
 class="btn btn-love btn-apply"
 @click="apply"
 :disabled="apply_status"
 v-text="apply_status?'我已报名':'我要报名'"
 ></button>
 </cover-view>

不过这里有个限制就是<cover-view/> 内只能嵌套 <cover-view/> <cover-image/> <button/> <navigator/>组件,view 标签的子节点树在真机上都会被忽略。

像上面场景2的需求,添加购物车,显示价格,很明显这种方式并不适用,当然如果底部我们只有一个button的话是可以使用这种方式去解决的

参考阅读

  • https://3water.com/article/157304.htm
  • https://3water.com/article/157306.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 图片上传预览-兼容标准
Jun 01 Javascript
javascript中的document.open()方法使用介绍
Oct 09 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
jQuery鼠标悬停内容动画切换效果
Apr 27 jQuery
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
node错误处理与日志记录的实现
Dec 24 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
js实现盒子滚动动画效果
Aug 09 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 Javascript
浅析vue中的MVVM实现原理
Mar 04 #Javascript
JavaScript实现的九种排序算法
Mar 04 #Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 #Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
Mar 04 #Javascript
Vuex mutitons和actions初使用详解
Mar 04 #Javascript
JS重学系列之聊聊new操作符
Mar 04 #Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 #jQuery
You might like
PHP使用者状态管理功能的应用
2006/10/09 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
iview同时验证多个表单问题总结
2018/09/29 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
详解python的argpare和click模块小结
2019/03/31 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
J2EE模式面试题
2016/10/11 面试题
商务英语专业自荐信
2013/10/14 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
大学计划书范文800字
2014/08/14 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python