微信小程序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实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
jQuery Ajax 全解析
Feb 08 Javascript
JS脚本defer的作用示例介绍
Jan 02 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
Sep 21 Javascript
学习JavaScript事件流和事件处理程序
Jan 25 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
JS实现批量上传文件并显示进度功能
Jun 27 Javascript
Angularjs单选框相关的示例代码
Aug 17 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
Mar 07 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
vue组件实例解析
2017/01/10 Javascript
浅谈Vue.js
2017/03/02 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
webpack之引入图片的实现及问题
2018/10/08 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
法律进机关实施方案
2014/03/12 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
水电工岗位职责
2015/02/14 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
Python Django项目和应用的创建详解
2021/11/27 Python