zoukankan      html  css  js  c++  java
  • 原生小程序 拖拽组件movable-view

    例子:

    1.wxml:

    <movable-area class='movable-box'>
      <movable-view class='movable-btn' x='{{x}}' y='{{y}}' direction='all' bindtouchstart='homeMoveStart' bindtouchmove='homeMoving' bindtouchend='homeMoveEnd'>
        <image class="home-images" hidden="{{!status}}" src="http://qiniu.ve-link.com/files/1/d/51/a466aa61ddc3b826e52e2bbbadf8fcf16e7651d1.png" bindtap="homeBack"></image>
      </movable-view>
    </movable-area>
     
    2.wxss
    .movable-box {
       100%;
      height: 100%;
    }

    .movable-box .movable-btn {
      position: fixed;
       70px;
      height: 70px;
      line-height: 70px;
      text-align: center;
      visibility: visible;
    }

    .movable-box .movable-btn .home-images {
       70px;
      height: 70px;
    }
     
    3.
    let {windowWidth,windowHeight} = wx.getSystemInfoSync();
    let localCoord = wx.getStorageSync('localPostion');
    Component({
      data: {
        status: true,
        x: (localCoord.x >= 0) ? localCoord.x : 0,
        y: localCoord.y ? localCoord.y : windowHeight - 150
    },
    methods: {
      homeMoveStart: function (e) {
        this.y = e.changedTouches[0].clientY - 35;
        this.x = e.changedTouches[0].clientX - 35;
      },
      homeMoving: function (e) {
        if ((e.changedTouches[0].clientY) < -100) {
          this.setData({
            x: this.x,
            status: false,
            y: this.y,
          })
        }
      },
      homeMoveEnd: function (e) {
        if ((e.changedTouches[0].clientY) < -100) {
          this.setData({
            x: this.x,
            status: true,
            y: this.y,
          })
          return;
        }
        let sysAveWidth = windowWidth / 2;
        let sysHeight = windowHeight;
        let currentP = {
          x: 0,
          y: (e.changedTouches[0].clientY - 35) > 0 ? Math.abs(e.changedTouches[0].clientY - 35) : 0,
        }
        if (e.changedTouches[0].clientX > sysAveWidth) {
          currentP.x = windowWidth - 70;
        }
        if ((sysHeight - e.changedTouches[0].clientY) <= 70) {
          currentP.y = windowHeight - 70;
        }
        this.setData({
          x: currentP.x,
          y: currentP.y,
          status: true
        })
        wx.setStorageSync('localPostion', currentP);
      },
      homeBack: function () {
        wx.reLaunch({
          url: '/pages/homepage/index',
        })
      }
    }
    })
    拖拽组件到这已完成!
    在指定页面引入进去后(不会引用组件,查看之前的文档:https://www.cnblogs.com/mcll/p/11669822.html
    1.wxml
    <movable class="btn-home"></movable>
    2.wxss
    .btn-home {
       100%;
      height: 100%;
      position: fixed;
      top: 0;
      z-index: 99;
      visibility: hidden;
    }
  • 相关阅读:
    Windows的本地时间(LocalTime)、系统时间(SystemTime)、格林威治时间(UTCTime)、文件时间(FileTime)之间的转换
    VS2008驱动开发环境配置
    delete和delete[]的区别
    手动加载NT式驱动(非工具)修改注册表实现
    结构体的内存空间分配原理
    NT式驱动的卸载
    NT式驱动的安装
    struct tm>time() localtime() gmtime()
    64位驱动数字签名
    SQL Server 数据库错误修改
  • 原文地址:https://www.cnblogs.com/mcll/p/11677531.html
Copyright © 2011-2022 走看看