资讯专栏INFORMATION COLUMN

小程序movable-area拖拽fixed点击失效

xi4oh4o / 1035人阅读

摘要:前言先看效果实现了拖拽,但是可拖拽区域下层的点击事件失效,本来做拖拽就是为了解决下层被遮挡然后无法点击这下可好了,无法点击的区域更高了。

前言

先看效果

实现了拖拽,但是可拖拽区域下层的点击事件失效,本来做拖拽就是为了解决下层被遮挡然后无法点击
这下可好了,无法点击的区域更高了。还好从网上找到了解决办法

movable-view {
    pointer-events: auto; 
}

movable-area {
    pointer-events: none;
}
实现悬浮icon可垂直拖拽

微信小程序自带movable-area和movable-view完美的实现了
areaH为可移动的高度,这里获取了手机设备的屏幕高度减去上下的留白,并且做了iPhoneX的适配
resetY是让icons返回到初始位置
下图蓝色区域

因为是公共组件movable-view height就通过properties传入了,本来打算通过小程序的boundingClientRect方法获取,但是因为渲染速度慢,可能height为0,所以就老老实实传入


  
    
      
    
  
// components/s-icon-btns/index.js
const App = getApp()
Component({
  /**
   * 组件的属性列表
   */
  externalClasses: ["ex-class"],
  options: {
    multipleSlots: true
  },
  properties: {
    // 容器高度
    height: {
      type: Number,
      value: 0,
      observer(newVal, oldVal) {
        // 设置y初始位置
        this.setData({
          y: this.data.areaH - newVal
        })
      }
    },
    resetY: {
      // 与!wiggle
      type: Boolean,
      value: false,
      observer(newVal, oldVal) {
        this.setData({
          y: this.data.areaH - this.data.height
        })
      }
    }
  },
  /**
   * 组件的初始数据
   */

  data: {
    iphoneX: App.globalData.isIphoneX,
    x: 10,
    areaH: App.globalData.isIphoneX
      ? App.globalData.mobile.windowHeight - 240
      : App.globalData.mobile.windowHeight - 180 //可动区域
  },

  /**
   * 组件的方法列表
   */
  methods: {}
})
.btns-bg {
    // position: fixed;
    // right: 10px;
    // bottom: 110px;
    // z-index: 1000;
    background: rgba(255, 255, 255, 0.9);
    width: 45px;
    min-height: 45px;
    border-radius: 45px;
    display: flex;
    justify-content: center;
    flex-direction: column;
    align-items: center;
    padding: 10px 0;
    box-shadow: 0rpx 0rpx 20rpx rgba(0, 0, 0, 0.07);
    &.lower {
        bottom: 61px;
    }
}

.x-class {
    margin-bottom: 68rpx;
}

movable-view {
    pointer-events: auto;
    width: 45px;
    padding: 10px;
    box-sizing: content-box;
}

movable-area {
    pointer-events: none;
    position: fixed;
    right: 0px;
    bottom: 70px;
    z-index: 1000;
    width: 65px;
    overflow: hidden;
}
总结

除了遇见的bug,其他的还是很简单的方便的
如果有什么问题
欢迎留言或者添加微信讨论

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109177.html

相关文章

  • 微信程序:截图组件welCropper,实现原理及其使用

    摘要:最近做项目的时候,需要做一个截图功能。因为所以,就自己动手写了一个截图组件。下面介绍一下实现原理和使用方法。用来绘制适应屏幕比例大小的图片,因为通常原图大小是超过屏幕长宽的。 showImg(http://upload-images.jianshu.io/upload_images/2158535-2c383e1129188a2a.png?imageMogr2/auto-orient/...

    jay_tian 评论0 收藏0
  • 全局拖拽上传文件(类似百度网盘)的实现及踩坑

    摘要:记录下,开发需求是实现一个类似百度网盘全局拖拽的功能兼容浏览器,以上。监听上的事件,显示拖拽的蒙层监听目标节点上的拖拽事件。 记录下,开发需求是实现一个类似百度网盘全局拖拽的功能,兼容浏览器,IE0以上。实现思路是,采用原声的拖拽事件。监听window上的dragenter事件,拖拽目标节点是fixed罩住页面的dropZone节点。 监听window上的dragenter事件,显示...

    shiguibiao 评论0 收藏0
  • 【CSS练习】IT修真院--练习4-移动端界面

    摘要:任务四一个最常见的移动端页面完成的事情完成简单布局,然后填充界面与效果图对比优化完成验收要求扩展性顶栏固定进行样式兼容性研究完成任务四深度思考跟随深度思考师兄建议进行修改输入栏左侧换用输入限制电话位,密码位根据结构的语义化修改尝试下再加一 任务四、 一个最常见的移动端页面 完成的事情 完成简单布局,然后填充界面 与效果图对比优化 完成验收要求:header扩展性 & 顶栏固定 进行p...

    kun_jian 评论0 收藏0
  • 我是如何通过debug成功甩锅浏览器的:解决fixed定位元素,在页面滚动后touch事件失效问题

    摘要:二分析排查一步骤一使用搜索引擎我是在无意中发现该问题的,当时观察到的现象是绑定在上的事件有时会被触发,有时会失效。这说明并不存在偶尔失效的问题。也就是说,我需要找到确切的令响应事件失效的原因。接下来的事很简单,继续搜索事件在页面滚动后失效。 如果你关注我应该知道,我最近对PC端页面进行移动适配。在这个过程中,为了节省用户300ms的时间,同时给予用户更及时的点击反馈(这意味着更好的用户...

    tulayang 评论0 收藏0
  • 我是如何通过debug成功甩锅浏览器的:解决fixed定位元素,在页面滚动后touch事件失效问题

    摘要:二分析排查一步骤一使用搜索引擎我是在无意中发现该问题的,当时观察到的现象是绑定在上的事件有时会被触发,有时会失效。这说明并不存在偶尔失效的问题。也就是说,我需要找到确切的令响应事件失效的原因。接下来的事很简单,继续搜索事件在页面滚动后失效。 如果你关注我应该知道,我最近对PC端页面进行移动适配。在这个过程中,为了节省用户300ms的时间,同时给予用户更及时的点击反馈(这意味着更好的用户...

    JowayYoung 评论0 收藏0

发表评论

0条评论

xi4oh4o

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<