微信小程序实现可拖动悬浮图标(包括按钮角标的实现)


Posted in Javascript onDecember 29, 2020

在制作商城类微信小程序的过程中,我们经常会碰到需要增加可拖动悬浮图标的情况,本文简单的介绍一下可拖动悬浮按钮的实现。

运行截图:

微信小程序实现可拖动悬浮图标(包括按钮角标的实现)

主要代码:

js:

var startPoint
Page({
 data: {
 //按钮位置参数
 buttonTop: 0,
 buttonLeft: 0,
 windowHeight: '',
 windowWidth: '',
 //角标显示数字
 corner_data:0,
 },
 onLoad:function(){
 //定义角标数字
 this.setData({
  corner_data:3
 })
 // 获取购物车控件适配参数
 var that =this;
 wx.getSystemInfo({
  success: function (res) {
  console.log(res);
  // 屏幕宽度、高度
  console.log('height=' + res.windowHeight);
  console.log('width=' + res.windowWidth);
  // 高度,宽度 单位为px
  that.setData({
   windowHeight: res.windowHeight,
   windowWidth: res.windowWidth,
   buttonTop:res.windowHeight*0.70,//这里定义按钮的初始位置
   buttonLeft:res.windowWidth*0.70,//这里定义按钮的初始位置
  })
  }
 })
 },
 //可拖动悬浮按钮点击事件
 btn_Suspension_click:function(){
 //这里是点击购物车之后将要执行的操作
 wx.showToast({
  title: '点击成功',
  icon:'success',
  duration:1000
 })
 },
 //以下是按钮拖动事件
 buttonStart: function (e) {
 startPoint = e.touches[0]//获取拖动开始点
 },
 buttonMove: function (e) {
 var endPoint = e.touches[e.touches.length - 1]//获取拖动结束点
 //计算在X轴上拖动的距离和在Y轴上拖动的距离
 var translateX = endPoint.clientX - startPoint.clientX
 var translateY = endPoint.clientY - startPoint.clientY
 startPoint = endPoint//重置开始位置
 var buttonTop = this.data.buttonTop + translateY
 var buttonLeft = this.data.buttonLeft + translateX
 //判断是移动否超出屏幕
 if (buttonLeft+50 >= this.data.windowWidth){
  buttonLeft = this.data.windowWidth-50;
 }
 if (buttonLeft<=0){
  buttonLeft=0;
 }
 if (buttonTop<=0){
  buttonTop=0
 }
 if (buttonTop + 50 >= this.data.windowHeight){
  buttonTop = this.data.windowHeight-50;
 }
 this.setData({
  buttonTop: buttonTop,
  buttonLeft: buttonLeft
 })
 },
 buttonEnd: function (e) {
 }
})

wxml:

<!--可拖动按钮控件表-->
<!--buttonStart和buttonEnd一定不能用catch事件,否则按钮点击事件会失效-->
<view class="btn_Suspension" bindtap="btn_Suspension_click" catchtouchmove="buttonMove" bindtouchstart="buttonStart" bindtouchend="buttonEnd" style="top:{{buttonTop}}px;left:{{buttonLeft}}px;">
 <image class="Suspension_logo" src="../images/Suspension.png"></image><!--这里是按钮图标,下载地址会在文章底部说明-->
 <view wx:if="{{corner_data==0}}"></view>
 <view wx:else>
  <view class="cornorMark">
  <text>{{corner_data}}</text>
  </view>
 </view>
 </view>

wxss:

Page{
 background: #f5f5f5;
}
/**可拖动悬浮按钮样式表**/
.btn_Suspension{
 position: fixed;
 height: 100rpx;
 width: 100rpx;
 background-color: rgba(255, 255, 255, 0.755);
 border-radius: 100%;
 display: flex;
 align-items: center;
 justify-content: center;
 z-index: 99999;
 box-shadow: 1px 0px 1px 1px #ede7e7;
}
.Suspension_logo{
 position:absolute;
 height:50%;
 width:50%;
 left:23%;
 top:27%
}
.cornorMark{
 position:absolute;
 background: rgb(242, 109, 38);
 border:1px solid rgb(242, 109, 38);
 border-radius: 100px;
 width:30rpx;
 height:30rpx;
 top:-17rpx;
 right:3rpx;
 color:#fff;
 font-size: 12px;
 text-align: center;
}
.cornorMark text{
 position:absolute;
 width:100%;
 left:0%;
 text-align: center;
 top:-1px;
}

图标素材下载地址:

Iconfont阿里巴巴矢量图标库:https://www.iconfont.cn/

到此这篇关于微信小程序实现可拖动悬浮图标(包括按钮角标的实现)的文章就介绍到这了,更多相关小程序实现悬浮图标内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 学习 几种常用方法
Jun 11 Javascript
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
js AppendChild与insertBefore用法详细对比
Dec 16 Javascript
JavaScript前端图片加载管理器imagepool使用详解
Dec 29 Javascript
javascript实现输出指定行数正方形图案的方法
Aug 03 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
Dec 22 Javascript
响应式表格之固定表头的简单实现
Aug 26 Javascript
Vue项目webpack打包部署到服务器的实例详解
Jul 17 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
在Vue.js中使用Mixins的方法
Sep 12 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
Feb 18 jQuery
ES6中Symbol、Set和Map用法详解
Aug 20 Javascript
vue中配置scss全局变量的步骤
Dec 28 #Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 #Vue.js
Vue仿百度搜索功能
Dec 28 #Vue.js
node.js通过Sequelize 连接MySQL的方法
Dec 28 #Javascript
解决elementui表格操作列自适应列宽
Dec 28 #Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 #Javascript
React实现todolist功能
Dec 28 #Javascript
You might like
PHP中的加密功能
2006/10/09 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
yii的CURD操作实例详解
2014/12/04 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
微信小程序API—获取定位的详解
2019/04/30 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
python写的一个文本编辑器
2014/01/23 Python
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
python图片合成的示例
2020/11/09 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
环境科学毕业生自荐信
2013/11/21 职场文书
家长写给老师的建议书
2014/03/13 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
总结表彰大会主持词
2014/03/26 职场文书
新党章心得体会
2014/09/04 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
国家助学金感谢信
2015/01/21 职场文书
公司开除员工通知
2015/04/22 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
python+opencv实现目标跟踪过程
2022/06/21 Python