移动拖拽悬浮按钮

浮动Icon

style样式:

<style scoped>
  #block img{
    width: 100%;
  }
  #block {
    color:#fff;
    font-size: 0.6rem;
    text-align: center;
    line-height: 3rem;
    width:3rem;
    height:3rem;
    position: fixed;
    right: 2%;
    bottom: 13%;
    border-radius: 50%;
    z-index: 500;
  }
</style>

html结构

<template>
  <div id="block" @click="home">
    ![](../static/img/home.png)
  </div>
</template>

js内容

<script>
export default {
  mounted:function () {
    this.drag();
  },
  methods:{
    home:function(){
      this.$router.push({path:'/main'});
    },
    drag:function(){
      var block = document.getElementById("block");
      var oW,oH;
      // 绑定touchstart事件
      block.addEventListener("touchstart", function(e) {
        var touches = e.touches[0];
        oW = touches.clientX - block.offsetLeft;
        oH = touches.clientY - block.offsetTop;

      },false);
      block.addEventListener("touchmove", function(e) {
        e.preventDefault();
        var touches = e.touches[0];
        var oLeft = touches.clientX - oW;
        var oTop = touches.clientY - oH;
        if(oLeft < 0) {
          oLeft = 0;
        }else if(oLeft > document.documentElement.clientWidth - block.offsetWidth) {
          oLeft = (document.documentElement.clientWidth - block.offsetWidth);
        }else if(oTop<0){
          oTop=0;
        }else if(oTop>document.documentElement.clientHeight-block.offsetHeight){
          oTop=document.documentElement.clientHeight-block.offsetHeight;
        }
        block.style.left = oLeft + "px";
        block.style.top = oTop + "px";
      },false);

      block.addEventListener("touchend", function(e) {
        var endLeft = e.changedTouches[0].pageX;
        if(endLeft> document.documentElement.clientWidth/2){
          block.style.left=(document.documentElement.clientWidth-block.offsetWidth-5)+'px';
        }else if(endLeft<document.documentElement.clientWidth/2){
          block.style.left=5+'px';
        }
      },false);
    },
  }
}
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 简介浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.c...
    听风阁阅读 3,314评论 0 7
  • 转载说明 一、介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入g...
    17碎那年阅读 2,471评论 0 22
  • 目录一、介绍二、渲染引擎三、解析与DOM树构建四、渲染树构建五、布局六、绘制七、动态变化八、渲染引擎的线程九、CS...
    饥人谷_米弥轮阅读 2,471评论 0 10
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,212评论 0 1