html图标动态移动效果图,html5实现可拖拽移动的悬浮图标的示例代码

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)}"

>

fc-icon.png

// 代码直接在 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 相关的设置和计算。

到此这篇关于html5实现可拖拽移动的悬浮图标的示例代码的文章就介绍到这了,更多相关html5可拖拽悬浮图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值