微信小程序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 相关文章推荐
对textarea框的代码调试,而且功能上使用非常方便,酷
Jun 30 Javascript
jquery select多选框的左右移动 具体实现代码
Jul 03 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
JavaScript交换两个变量值的七种解决方案
Dec 01 Javascript
浅析Ajax语法
Dec 05 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
JS中touchstart事件与click事件冲突的解决方法
Mar 12 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
怎样在vue项目下添加ESLint的方法
May 16 Javascript
vue 中 命名视图的用法实例详解
Aug 14 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 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读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
JavaScript 常用函数
2009/12/30 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
详解js的六大数据类型
2016/12/27 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python获取文件所在目录和文件名的方法
2017/01/12 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python实现五子棋游戏
2019/06/18 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
园林设计师自荐信
2013/11/18 职场文书
工商管理系学生的自我评价分享
2013/11/29 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
超市国庆节促销方案
2014/02/20 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
天河观后感
2015/06/11 职场文书
贫困证明书范文
2015/06/16 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android