微信小程序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面向对象之静态与非静态类
Feb 03 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
基于jquery步骤进度条源码分享
Nov 12 Javascript
纯前端JavaScript实现Excel IO案例分享
Aug 26 Javascript
jQuery 判断元素整理汇总
Feb 28 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
Vue中this.$nextTick的作用及用法
Feb 04 Javascript
分享15个Webpack实用的插件!!!
Mar 31 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
各种战术和打法的原创者
2020/03/04 星际争霸
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
php的ajax简单实例
2014/02/27 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
php与js的区别是什么
2013/08/05 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
js实现交通灯效果
2017/01/13 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
python监控文件或目录变化
2016/06/07 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
Python制作动态字符图的实例
2019/01/27 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
办公自动化专业大学生职业规划书
2014/03/06 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
离职信范文
2015/06/23 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记