微信小程序textarea层级过高(盖住其他元素)问题的解决办法


Posted in Javascript onMarch 04, 2019

前言:这篇文章讲什么

微信小程序中 textarea 组件的层级过高如何解决

前言:这篇文章对谁有用

微信小程序开发者

前言:本文有什么用?

提供解决问题的思路,供你参考

(因为时间关系,我没法把代码整理的好好的然后贴出来让你复制黏贴。或者是做成一个组件然后开源)

前言:本文时效性

截止至2018年10月30号,微信的 textarea 还是以原生组件形式实现,因此层级最高。无法通过 z-index 进行调整。在微信小程序官方把 textarea 改成了可以控制层级之前。本文中的内容会一直有效。

1. 问题描述

根据官方文档,textarea 是原生组件 (https://developers.weixin.qq.com/miniprogram/dev/component/textarea.html),所谓原生组件就是 “脱离在 WebView 渲染流程外”

文档中的原话是:

原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。

造成的问题:

在一个可以滚动的页面中。textarea 中的文字会覆盖在 position: fixed 的元素上方

经典业务场景1:

页面底部有一个固定的操作栏,比如"加入购物车"。"立即购买", 显示价格等

经典业务场景2:

页面中有弹窗

问题截图

我们先往页面上放2个 textarea

微信小程序textarea层级过高(盖住其他元素)问题的解决办法

微信小程序textarea层级过高(盖住其他元素)问题的解决办法

此时看起来暂时一切正常。

我们把底下的 textarea 输入一些文字,

微信小程序textarea层级过高(盖住其他元素)问题的解决办法

然后把页面向上滚动。可以看到文字盖住了底部的操作栏

微信小程序textarea层级过高(盖住其他元素)问题的解决办法

哪怕我们不输入任何文字,placeholder 也会直接盖住操作栏

微信小程序textarea层级过高(盖住其他元素)问题的解决办法

注意:请在真机中测试。微信开发者工具中看不到这样的问题。

针对业务场景1(滚动)如何解决?

仅在输入时使用 textarea, 不输入时使用 text 来显示文字。内容为空时 placeholder 用 view 来实现。
所以一共3个元素

<view>负责显示placeholder</view>
  <textarea>负责输入文字</textarea>
  <view> <text>负责显示文字(用 text 确保换行正常)</text> </view>

当输入为空时,显示 placeholder,

当输入不为空时,取决于当前有没有 focus 来判断是显示 textarea 还是 负责显示文字的 view

针对业务场景2(弹窗)如何解决?

有弹窗的时候,就用 wx:if 把 textarea 藏起来

本文完

感想:这个破事消耗了我几乎一个下午。同时又对我的技术没有任何提升,只是完成业务需求而已。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JQuery实现的在新窗口打开链接的方法小结
Apr 22 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
在JavaScript中判断整型的N种方法示例介绍
Jun 18 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
基于LayUI实现前端分页功能的方法
Jul 22 Javascript
JS实现去除数组中重复json的方法示例
Dec 21 Javascript
简单的三步vuex入门
May 20 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
Mar 29 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 #Javascript
使用ESLint禁止项目导入特定模块的方法步骤
Mar 04 #Javascript
微信小程序textarea层级过高的解决方法
Mar 04 #Javascript
浅析vue中的MVVM实现原理
Mar 04 #Javascript
JavaScript实现的九种排序算法
Mar 04 #Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 #Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
Mar 04 #Javascript
You might like
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
Python  连接字符串(join %)
2008/09/06 Python
Python构造函数及解构函数介绍
2015/02/26 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python实现图片文件批量重命名
2020/03/23 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
python判断正负数方式
2020/06/03 Python
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
一道Delphi上机题
2012/06/04 面试题
青年文明号创建承诺
2014/03/31 职场文书
人力资源管理求职信
2014/08/07 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
2014年减负工作总结
2014/12/10 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
面试通知邮件
2015/04/20 职场文书
检察院起诉书
2015/05/20 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python