h5 上经常会有这样的需求:

需要在页面上加上一个悬浮图标,大致是如下图的最终实现

但是往往按照设计稿是不会遮住主体区域的,但是实际上有时候偏偏会遮挡主体区域,但是为了更好的点击量,又不得不悬浮在页面上...

如果能让图标可拖拽移动,这样在遮住主体区域之后,用户可自由移动,这种方案及可以兼顾了。

实现的效果如下:

(和微信的浮窗效果类似,左右位置靠边显示,上下位置随意放)

话不多说,上代码了

:style="{'width': itemWidth+'px','height': itemHeight+'px','left': left+'px','top': top+'px'}"

ref="div"

@touchstart.prevent="(e) => {dragStart(e)}"

@touchend.prevent="(e) => {dragEnd(e)}"

@touchmove.prevent="(e) => {dragProgress(e)}"

>

复制代码

// 代码直接在 vue 项目里,可自行改为js/jquery 写法

data () {

return {

gapWidth: 10,

itemWidth: 20, // 图标的宽度

itemHeight: 30 // 图标的高度

}

},

created() {

this.clientWidth = document.documentElement.clientWidth;

this.clientHeight = document.documentElement.clientHeight;

this.left = this.clientWidth - this.itemWidth - this.gapWidth;

this.top = this.clientHeight*0.8; }

methods: {

dragStart(e) {

this.$refs.div.style.transition = 'none';

},

dragEnd(e) {

this.$refs.div.style.transition = 'all 0.3s';

if (this.left > this.clientWidth/2) {

this.left = this.clientWidth - this.itemWidth - this.gapWidth;

} else {

this.left = this.gapWidth;

}

},

dragProgress(e) {

if (e.targetTouches.length === 1) {

let touch = event.targetTouches[0];

this.left = touch.clientX - this.itemWidth/2;

this.top = touch.clientY - this.itemHeight/2;

}

}

}复制代码

以上代码既可以上下也可以左右移动,如果只想让可上下移动,就去掉 left 相关的设置和计算。

html移动小图标,html5 实现可拖拽移动的悬浮图标相关推荐

  1. html5 实现可拖拽移动的悬浮图标

    h5 上经常会有这样的需求: 需要在页面上加上一个悬浮图标,大致是如下图的最终实现 但是往往按照设计稿是不会遮住主体区域的,但是实际上有时候偏偏会遮挡主体区域,但是为了更好的点击量,又不得不悬浮在页面 ...

  2. html5拖动鼠标直线,html5的鼠标拖拽

    鼠标拖拽 Title .one {width:200px;height:200px;border:1px solid blue;margin:10px;} .two {width:50px;heigh ...

  3. html5 上传超大文件,HTML5教程 如何拖拽上传大文件

    本篇教程探讨了HTML5教程 如何拖拽上传大文件,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < 前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性 ...

  4. android可拖拽九宫格,微信小程序实现九宫格图片拖拽

    (在真机上的效果就不演示了,是差不多的) 实现思路 布局 在这里运用到了微信小程序的moveable-area和moveable-view两个标签. moveable-area是可拖拽的区域,需要设置 ...

  5. js拖拽360桌面悬浮球代码

    js拖拽360桌面悬浮球代码 原生js制作简单好用的360桌面悬浮球,可拖拽到浏览器边缘,自动贴边,自动适应屏幕效果. 演示地址 下载地址

  6. HTML5 drag drop 拖拽与拖放简介

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=1419 一.前面的话 ...

  7. span标签的鼠标滑入提示_彻底搞懂拖拽——基于鼠标事件的拖拽以及基于HTML5 API的拖拽...

    一.基于鼠标事件的拖拽 原理--onmousedown.onmousemove.onmouseup onmousedown 该事件会在鼠标按键被按下时触发 支持该事件的HTML标签: html < ...

  8. 小程序Android端movable-view拖拽卡顿掉帧的优化

    背景: 最近项目中使用到movable-view来做一个拖拽排序的功能,等到功能都实现完成后到真机测试发现,拖拽动画在Android端存在严重的卡顿掉帧,及其不跟手,但是在IOS端却挺流畅.查阅Goo ...

  9. Vue+el-tree,元素拖拽时出现禁用图标, 请看解决办法

    项目需求:vue+el-tree实现节点拖拽到指定div播放视频: 问题:当节点拖拽时, 出现禁用图标: 一开始以为将禁用图标改变样式或隐藏就可以,一番尝试后, 发现这个图标可能是浏览器默认的, 经过 ...

最新文章

  1. 探讨PHP页面跳转几种实现技巧
  2. oracle12c考试内容,12c ocp考试内容
  3. java 先进先出的map_「 深入浅出 」java集合Collection和Map
  4. MySQL ifnull()函数
  5. 2019蓝桥杯省赛---java---C---6(旋转)
  6. linux重启用reboot后起不来_linux使用reboot重启后怎么办?
  7. mysql 列很多_MySQL:多个表还是一个表有很多列?
  8. win10升级助手_微软官网win10下载_win10教程
  9. Redis过期策略和淘汰策略
  10. 一人干翻专业机构,27岁华裔小伙一战成名!搞出美国新冠最准预测模型,彭博:Superstar
  11. 打印机设置为双面打印_hudingyin_新浪博客
  12. JDBC学习笔记——Java语言与数据库的鹊桥
  13. Kettle 8.2 打开spoon.bat后闪退的解决办法
  14. 改408!985南京大学计算机系考研!
  15. 【C#】加加和减减、复合赋值运算符、一元二元运算符、关系运算符、bool类型
  16. Cesium基本使用,包括加载影像,地形,模型等,设置地图样式
  17. Redis 实战篇:GEO 助我邂逅附近女神
  18. 初级学会响应式网页设计-周红川-专题视频课程
  19. PTA c#PTA第三章练习答案【程序设计基础】
  20. linux系统运维核心笔试题-2020年9月1日最新

热门文章

  1. 改进埃尔米特(Hermite)分段三次插值——(可在pchip函数中自定义导数值)
  2. 随机产生单词java_JavaGUI实现随机单词答题游戏
  3. iCloud照片在哪看?如何查看iCloud里的照片
  4. 使用 Excel 画像素画
  5. cas607-34-1|5-硝基喹啉|5-Nitroquinoline淡黄色晶体
  6. 程序员裸辞全职接单一个月的感触
  7. 群晖3617可以有几个网卡_Nvme pcie千兆有线网卡
  8. python调试程序的方法_调试Python程序的四种方法
  9. GreenPlum 大数据平台--segment 失效问题恢复
  10. 今天有个同事L发了一个“称象”的帖子,不过更搞笑的是另一个同事Z回了一个经典的解答。...