首页 > 编程语言 >小程序上是实现拖动悬浮图标

小程序上是实现拖动悬浮图标

时间:2024-04-17 09:57:01浏览次数:15  
标签:windowWidth buttonTop 拖动 buttonLeft 悬浮 windowHeight any 图标

  • 小程序上是实现拖动图标

  • 效果

  • 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: '',
                },
    
                /**
                * 生命周期函数--监听页面加载
                */
                onl oad() {
    
                },
                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": {}
        }
    

标签:windowWidth,buttonTop,拖动,buttonLeft,悬浮,windowHeight,any,图标
From: https://www.cnblogs.com/DCL1314/p/18139870

相关文章

  • Qt实现遮罩效果并可以拖动伸缩
    qml实现遮罩实现遮罩容易,但是如果可以任意拖动就需要动动脑子了,在经过大神的提示后,根据截图的界面思考,可以由五个矩形来实现(一个中心矩形和四个锚定在四周的矩形,它们一起充满程序窗口区域)QGraphicsView实现遮罩由于没有qml锚定布局,模拟锚定费时间,需要换一种思路,还是截图的灵感,......
  • vbs小程序图标更改方法的实现
    <p>1.首先将vbs小程序放在一个自定义文件夹下,然后在此文件夹下生成vbs小程序的快捷方式<br/>2.将你想要换成的图片(图片像素要低)也放入此文件夹下,并改成bmp格式3.右击vbs快捷方式,进入属性,点击更改图标,再点击浏览,选中刚刚的bmp图片,点击确定,快捷方......
  • 附图标记录入小工具
    附图标记录入小工具这是一个使用ahk2.0脚本写的从csv文件选择零件名与附图标记的小工具。制作这个小工具的本意主要是方便撰写专利申请文件时正确地插入附图标记。这是其github仓库,您可以从该仓库下载程序文件。使用说明运行与退出只需要在进行文字录入时,打开GenTag.exe,......
  • C#控制windows的“拖动时显示窗体内容”系统设置
    公司的云桌面,影响到了原生系统的“拖动时显示窗体内容”,做了个处理程序。感谢AI,现在查资料快速了许多。虽然的确有乱说的成分,但是庆幸的是大体思路没问题。usingSystem.Runtime.InteropServices;//检查当前设置booldragFullWindows=MsHelper.GetDragFullWindows();Cons......
  • Figma传图标至iconfont库,细节缺失
    Figma中做好图标,导出svg,上传iconfont,经常出现以下问题原因是:一大佬文章中有提到figma的填充模式为“even-odd”,iconfont识别不了这种格式解决方案:运用Figma插件FillRuleEditor 以下是具体操作步骤1、运用布尔运算绘制图标;2、右键Outlinestroke转曲,防止图标放大缩小变......
  • antd 的ProTable 的列加上ellipsis属性后,react-resizable会无法拖动列
    1、我尝试在列中加入ellipsis为true后,让内容超出后,用省略号表示。{title:displayName,dataIndex:propName,key:newPropName,width:widthIndex//,ellipsis:true}但是这引发了另外的问题。react-resizable配置的列可拖动无效了。额外的情况:obj.fixed='......
  • b站的视频进度条悬浮预览视频画面实现方式
    1.探究在看b站视频,滑到进度条的时候突发奇想,想知道这个预览图是怎么做到的打开控制台,发现每次移动鼠标悬浮位置的时候都会发出一条网络请求,并且该请求的size显示来源于内存,当时以为每次加载视频的时候先提前把所有预览图都加载好了吗?但是刷新后去看发现只有当鼠标移动......
  • Win7 在此处打开命令窗口_删除图标 批处理
    前言全局说明Win7在此处打开命令窗口_删除图标批处理一、添加显示图标@ECHOOFFregaddHKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\cmd/vIcon/tREG_SZ/d"cmd.exe"/fecho.&pause将以上内容保存到文本中,文本后缀为.bat,右键以管理员方......
  • Windows 11 cmd终端命令提示符图标路径
    前言全局说明一、默认路径ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png二、实际路径C:\ProgramFiles\WindowsApps\Microsoft.WindowsTerminal_1.19.10573.0_x64__8wekyb3d8bbwe\ProfileIconsWindowsApps文件夹是隐藏文件夹直接打开C:\Pro......
  • 大厂设计师都在使用各种矢量图标
    好用的产品离不开设计视觉规范的图标,一个图标是正确传达所表达的信息极其的重要,以下整理UI产品日常工国外图标网址:网址一:TablerIcons网址二:https://remixicon.com/网址三:https://feathericons.com/国内:网址一:https://iconpark.oceanengine.com/home网址二:https:......