微信小程序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 相关文章推荐
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
Jun 18 Javascript
JS弹出对话框返回值代码(asp.net后台)
Dec 28 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
JS上传前预览图片实例
Mar 25 Javascript
基于JQuery实现图片轮播效果(焦点图)
Feb 02 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
Vue.js中extend选项和delimiters选项的比较
Jul 17 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
Feb 02 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
Nov 10 Javascript
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
浅析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 header()函数语法及使用代码
2013/11/04 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
javascript 播放器 控制
2007/01/22 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
jquery加载单文件vue组件的方法
2017/06/20 jQuery
原生js实现简单的模态框示例
2017/09/08 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
iView框架问题整理小结
2018/10/16 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
Python元字符的用法实例解析
2018/01/17 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
资料员岗位职责
2013/11/17 职场文书
小学数学教研活动总结
2014/07/01 职场文书
2014年女职工工作总结
2014/11/27 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers