加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

关于微信小程序textarea层级过高问题解决

发布时间:2020-12-14 19:23:40 所属栏目:资源 来源:网络整理
导读:一、前言 相信做过微信小程序开发的人应该都碰到过这个问题,因为这个需求实在太常见了 由于textarea是属于原生组件,层级最高,不管在页面中我们设置z-index值多少都会被textarea组件遮挡住,很影响用户体验, 目前官方对该问题还没有修复,当然官方也给出

一、前言

相信做过微信小程序开发的人应该都碰到过这个问题,因为这个需求实在太常见了
由于textarea是属于原生组件,层级最高,不管在页面中我们设置z-index值多少都会被textarea组件遮挡住,很影响用户体验,

目前官方对该问题还没有修复,当然官方也给出了解决该问题的其他方案,使用cover-view和 cover-image替代,但个人感觉并不是很好,有一些限制

二、使用场景及解决方案

1、弹窗显示
2、底部fixed定位的按钮,页面滚动时,例如添加购物车,显示价格

针对以上两种业务场景解决方式不同

针对场景1弹窗显示的处理方式

在显示弹窗时通过if或者绑定class属性将textarea组件隐藏,弹窗关闭时显示,如下

      <div class="section" :"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
        "content"
        v-text=@click="bindContentFocus"
        v-show="isContentFocus"
      >
        <div "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) {
      true; //聚焦时隐藏内容文本标签
      false;
      false; //失去焦点
      console.log("Blur isFocus",255);">this.isFocus);
    }
  }

三、其他方式

官方给出了针对textarea的解决方式,使用cover-view和 cover-image替代,这两个组件也是原生组件,可以覆盖textarea组件

cover-image

<cover-view "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://blog.csdn.net/huobox/article/details/84859712
https://1c7.me/2018-10-30-wechat-mini-program-textarea-z-index-problem/

作者:fozero
文章出处:https://www.cnblogs.com/fozero
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读