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

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

发布时间:2020-12-14 19:23:12 所属栏目:资源 来源:网络整理
导读:前言 先看效果 实现了拖拽,但是可拖拽区域下层的点击事件失效,本来做拖拽就是为了解决下层被遮挡然后无法点击 这下可好了,无法点击的区域更高了。还好从网上找到了解决办法 movable-view { pointer-events : auto; } movable-area { pointer-events : non

前言

先看效果

实现了拖拽,但是可拖拽区域下层的点击事件失效,本来做拖拽就是为了解决下层被遮挡然后无法点击

这下可好了,无法点击的区域更高了。还好从网上找到了解决办法

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,所以就老老实实传入

<movable-area style="height:{{areaH}}px;"  class="ex-class {{iphoneX?'x-class':''}}">
  <movable-view x="{{x}}" y={{y}}"  style={{height}}px;" direction="vertical">
    <view class="btns-bg " id="icons-container">
      <slot name="icons"></slot>
    </view>
  </movable-view>
</movable-area>
// 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,oldVal) {
        data.areaH - data.height
        })
      }
    }
  },/**
   * 组件的初始数据
   */

  data: {
    iphoneX: App.globalData.isIphoneX,x: 10,areaH: App.globalData.isIphoneX
      ? App.globalData.mobile.windowHeight - 240
      : App.globalData.mobile.windowHeight - 180 //可动区域
  },136);">/**
   * 组件的方法列表
   */
  methods: {}
})
.btns-bg {
    // position: fixed;
    // right: 10px;
    // bottom: 110px;
    // z-index: 1000;
    background: rgba(255,0.9);
    width: 45px;
    min-height: border-radius: display: flex;
    justify-content: center;
    flex-direction: column;
    align-items: center;
    padding: 10px 0;
    box-shadow: 0rpx 20rpx rgba(0.07);
    &.lower {
        bottom: 61px;
    }
}

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

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

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

总结

除了遇见的bug,其他的还是很简单的方便的

(编辑:李大同)

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

    推荐文章
      热点阅读