微信小程序实现拖动悬浮图标效果

 更新时间:2024年04月17日 10:12:15   作者:不完美的完美  
这篇文章主要介绍了微信小程序实现拖动悬浮图标效果,小程序上是实现拖动图标,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
  • 小程序上是实现拖动图标
  • 效果

index.wxml

 <view>
      <view class="move-box"  catchtouchmove="buttonMove" bindtouchstart="buttonStart"  style="top:{{buttonTop}}px;left:{{buttonLeft}}px;"  >
          悬浮图标
      </view>
  </view>

index.ts

        let startPoint: any;
        Page({
            /**
            * 页面的初始数据
            */
            data: {
                //按钮位置参数
                buttonTop: 0,
                buttonLeft: 0,
                windowHeight: '',
                windowWidth: '',
            },
            /**
            * 生命周期函数--监听页面加载
            */
            onLoad() {
            },
            buttonInit() {
                // 获取图标控件适配参数
                var that = this;
                wx.getSystemInfo({
                  success: function (res: any) {
                    // 屏幕宽度、高度
                    // 高度,宽度 单位为px
                    that.setData({
                      windowHeight: res.windowHeight,
                      windowWidth: res.windowWidth,
                      buttonTop: res.windowHeight * 0.70, // 这里定义按钮的初始位置
                      buttonLeft: res.windowWidth * 0.70, // 这里定义按钮的初始位置
                    })
                  }
                })
              },
            //以下是按钮拖动事件
            buttonStart: function (e: any) {
                startPoint = e.touches[0]//获取拖动开始点
            },
            buttonMove: function (e: any) {
                const endPoint = e.touches[e.touches.length - 1]//获取拖动结束点
                //计算在X轴上拖动的距离和在Y轴上拖动的距离
                const translateX = endPoint.clientX - startPoint.clientX
                const translateY = endPoint.clientY - startPoint.clientY
                startPoint = endPoint//重置开始位置
                let buttonTop: any = this.data.buttonTop + translateY
                let buttonLeft: any = this.data.buttonLeft + translateX
                //判断是移动否超出屏幕
                const windowWidth: any = this.data.windowWidth;
                const windowHeight: any = this.data.windowHeight;
                if (buttonLeft + 60 >= windowWidth) {
                    buttonLeft = windowWidth - 60;
                }
                if (buttonLeft <= 0) {
                    buttonLeft = 0;
                }
                if (buttonTop <= 0) {
                    buttonTop = 0
                }
                if (buttonTop + 60 >= windowHeight) {
                    buttonTop = windowHeight - 60 - 40;
                }
                this.setData({
                    buttonTop: buttonTop,
                    buttonLeft: buttonLeft
                })
            },
            /**
            * 生命周期函数--监听页面初次渲染完成
            */
            onReady() {
            },
            /**
            * 生命周期函数--监听页面显示
            */
            onShow() {
                this.buttonInit();
            },
            /**
            * 生命周期函数--监听页面隐藏
            */
            onHide() {
            },
            /**
            * 生命周期函数--监听页面卸载
            */
            onUnload() {
            },
            /**
            * 页面相关事件处理函数--监听用户下拉动作
            */
            onPullDownRefresh() {
            },
            /**
            * 页面上拉触底事件的处理函数
            */
            onReachBottom() {
            },
            /**
            * 用户点击右上角分享
            */
            onShareAppMessage() {
            }
        })

index.wxss

    .move-box {
        position: fixed;
        width: 45px;
        height: 45px;
        background-color: aquamarine;
        border-radius: 50%;
        font-size:12px;
        text-align: center;
        padding: 5px;
        box-sizing: border-box;
        color:blueviolet;
        font-weight: 600;
    }

index.json

    {
        "navigationBarTitleText":"拖动悬浮图标",
        "usingComponents": {}
    }

到此这篇关于微信小程序实现拖动悬浮图标效果的文章就介绍到这了,更多相关小程序拖动悬浮图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 45个JavaScript编程注意事项、技巧大全

    45个JavaScript编程注意事项、技巧大全

    这篇文章主要介绍了45个JavaScript编程注意事项、技巧大全,在这篇文章里,我将分享一些JavaScript的技巧、秘诀和最佳实践,除了少数几个外,不管是浏览器的JavaScript引擎,还是服务器端JavaScript解释器,均适用,需要的朋友可以参考下
    2015-02-02
  • 浅谈bootstrap源码分析之scrollspy(滚动侦听)

    浅谈bootstrap源码分析之scrollspy(滚动侦听)

    下面小编就为大家带来一篇浅谈bootstrap源码分析之scrollspy(滚动侦听)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 原生js获取元素样式的简单方法

    原生js获取元素样式的简单方法

    下面小编就为大家带来一篇原生js获取元素样式的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 从盛大通行证上摘下来的身份证验证js代码

    从盛大通行证上摘下来的身份证验证js代码

    偶然发现盛大通行证上的身份证验证代码,特扒下来,方便大家的使用。
    2011-01-01
  • Flash图片上传组件 swfupload使用指南

    Flash图片上传组件 swfupload使用指南

    这篇文章主要介绍了Flash图片上传组件 swfupload使用方法及示例,swfupload的使用范围十分的广泛,功能也很强大,今天我们就先来简单的通过范例来学习下。
    2015-03-03
  • JS监听dom高度变化几种常用方法总结

    JS监听dom高度变化几种常用方法总结

    我们在开发中会遇到一些需求,需要监听元素变化,比如元素属性变化,元素大小变化,这篇文章主要给大家介绍了关于JS监听dom高度变化几种常用方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • 详解JavaScript如何避免内存泄漏

    详解JavaScript如何避免内存泄漏

    这篇文章主要为大家详细介绍了JavaScript内存泄漏的编程模式,并提供一些内存管理的改进方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下
    2023-10-10
  • JS判断字符串是否为整数的方法--简单的正则判断

    JS判断字符串是否为整数的方法--简单的正则判断

    今天小编就为大家分享一篇JS判断字符串是否为整数的方法--简单的正则判断,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • JS Thunk 函数的含义和用法实例总结

    JS Thunk 函数的含义和用法实例总结

    这篇文章主要介绍了JS Thunk 函数的含义和用法,结合实例形式总结分析了JS Thunk 函数的具体含义、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 使用BootStrap实现标签切换原理解析

    使用BootStrap实现标签切换原理解析

    本文给大家分享使用BootStrap实现标签切换原理解析及核心代码,需要的朋友参考下
    2017-03-03

最新评论