微信小程序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 相关文章推荐
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
js获取iframe中的window对象的实现方法
May 20 Javascript
详解Angular.js指令中scope类型的几种特殊情况
Feb 21 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
用webpack4开发小程序的实现方法
Jun 04 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获取数组最后一个值的2种方法
2015/01/21 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
python超简单解决约瑟夫环问题
2015/05/12 Python
python实现用户答题功能
2018/01/17 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
如何在python中实现线性回归
2020/08/10 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
教研处工作方案
2014/05/26 职场文书
爱牙日活动总结
2014/08/29 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
护理培训心得体会
2016/01/22 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server
对讲机知识
2022/04/07 无线电