关于iview中下拉框样式错乱问题,兼容移动端

在vue中使用iview的Select组件,当我在移动端苹果手机上使用时,拖动滑动页面,会导致Select组件位置错乱,体验非常差,这里记录下解决办法。

我们先看一下错乱图:
在这里插入图片描述上图可以明显看到,Select的定位已经完全偏离父级,在安卓手机上也有同样的错误。
iview可能并不适合做响应式网页,但是问题出来了,就得解决,上述问题在pc端并未展示出来。
我们可以查看源码看下Select布局

在这里插入图片描述
上图蓝色部分,可以看到Select组件增加了行内样式fixed, 当我们在手机端滑动时,组件会实时计算高度,并重新赋值top属性,由于此处头部导航是用的fixed定位,所以就相当于fixed里面包裹了fixed。
根据官方文档介绍,可以加 transfer=“true” 属性处理此问题,但在手机端并不可靠,尤其是苹果手机。

接下来我们通过js重新添加class解决此问题。

如下图,我们在select组件上添加点击事件:

在这里插入图片描述
在methods中使用:
在这里插入图片描述

selectClick() {
      //设备选择下拉框,当是苹果端是会出现位置错乱,此处做处理
      //非移动端不做处理
      if (!/(iPhone|Android)/i.test(navigator.userAgent)) return;
      this.$nextTick(() => {
        //苹果系统使用absolute
        let select = document.querySelector(".ivu-select-dropdown");
        if (!/Android (\d+\.\d+)/.test(window.navigator.userAgent)) {
          select.classList.add("pos-absolute");
        }
      });
    }

处理办法是当点击select组件是动态添加一个position:absolute;属性的类,类的名字叫 : pos-absolute

在这里插入图片描述在这里插入图片描述

以上代码即在移动端的实践。
同样 iview的Poptip组件也有同样的问题,关键在于当在手机上滑动时,组件会实时计算并赋值top属性的值。苹果手机尽量少用fixed定位,由于此项目存在年限较久暂时只能通过此方法临时解决。
笔者此处用的为iview2版本。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值