微信小程序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 实现Tab效果 思路是js思路
Mar 02 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
解决js中window.open弹出的是上次的缓存页面问题
Dec 29 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
JavaScript数组去重的6个方法
Jan 21 Javascript
js代码延迟一定时间后执行一个函数的实例
Feb 15 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
动态加载js的几种方法
2006/10/23 Javascript
JavaScript 的继承
2011/10/01 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中set常用操作汇总
2016/06/30 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python如何定义带参数的装饰器
2018/03/20 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
集团薪酬管理制度
2014/01/13 职场文书
业绩考核岗位职责
2014/02/01 职场文书
创新比赛获奖感言
2014/02/13 职场文书
高级编程求职信模板
2014/02/16 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
民主生活会主持词
2015/07/01 职场文书
入党后的感想
2015/08/10 职场文书
Rust中的Struct使用示例详解
2022/08/14 Javascript