广告
返回顶部
首页 > 资讯 > 精选 >vue如何实现移动端拖拽悬浮按钮
  • 475
分享到

vue如何实现移动端拖拽悬浮按钮

2023-07-02 18:07:20 475人浏览 安东尼
摘要

这篇文章主要讲解了“Vue如何实现移动端拖拽悬浮按钮”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何实现移动端拖拽悬浮按钮”吧!功能介绍:在移动端开发中,实现悬浮按钮在侧边显示,为不

这篇文章主要讲解了“Vue如何实现移动端拖拽悬浮按钮”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何实现移动端拖拽悬浮按钮”吧!

功能介绍:

在移动端开发中,实现悬浮按钮在侧边显示,为不遮挡页面内容,允许手指拖拽换位。

大致需求:

按钮在页面侧边悬浮显示;
2、手指长按按钮,按钮改变样式,允许拖拽改变位置;
3、按钮移动结束,手指松开,计算距离左右两侧距离并自动移动至侧边显示;
4、移动至侧边后,按钮根据具体左右两次位置判断改变现实样式;

整体思路:

按钮实行position:fixed布局,在页面两侧最上层悬浮显示;
2、手指长按可使用定时器来判断,若手指松开,则关闭定时器,等待下次操作再启用;
3、跟随手指移动计算按钮与页面两侧的距离,判断手指松开时停留的位置;

简单效果展示:

vue如何实现移动端拖拽悬浮按钮

vue如何实现移动端拖拽悬浮按钮

vue如何实现移动端拖拽悬浮按钮

具体实现:

一、position:fixed布局:

使用定位实现

<!-- 外层ul控制卡片范围 --><div>    <div class="floatBtn"         :class="[{moveBtn: lonGClick}, `${btnType}Btn`]">    <span>悬浮按钮</span>  </div></div>
<style lang="sCSS" scoped>  @mixin notSelect{    -moz-user-select:none;     -WEBkit-user-select:none;     -ms-user-select:none;     -khtml-user-select:none;     user-select:none;  }  @mixin not-touch {    -webkit-touch-callout: none;    -webkit-user-select: none;    -khtml-user-select: none;    -moz-user-select: none;    -ms-user-select: none;    user-select: none;  }  .floatBtn {    @include notSelect;    @include not-touch();    position: fixed;    z-index: 1;    overflow: hidden;    width: 100px;    left: calc(100% - 100px);    top: calc(100% - 100px);    color: #E0933A;    background: #FCEBD0;    font-size: 14px;    height: 36px;    line-height: 36px;    text-align: center;    box-sizing: border-box;    display: flex;    justify-content: center;    align-items: center;    padding: 10px;    &.rightBtn {      border-radius: 20px 0 0 20px;    }    &.leftBtn {      border-radius: 0 20px 20px 0;    }    &.moveBtn {      border-radius: 20px;    }  }</style>

二、touch事件绑定:

应用到touchstart,touchmove,touchend事件,使用定时器实现长按效果:

<div class="floatBtn"    :class="[{moveBtn: longClick}, `${btnType}Btn`]"    @touchstart="touchstart($event)"    @touchmove="touchMove($event)"    @touchend="touchEnd($event)">    <span>悬浮按钮</span></div>
<script>export default {    data() {        return {            timeOutEvent: 0,            longClick: 0,            // 手指原始位置            oldMousePos: {},            // 元素原始位置            oldnodePos: {},            btnType: 'right'        };    },    touchstart(ev) {        // 定时器控制长按时间,超过500毫秒开始进行拖拽        this.timeOutEvent = setTimeout(() => {            this.longClick = 1;        }, 500);        const selectDom = ev.currentTarget;        const { pageX, pageY } = ev.touches[0]; // 手指位置        const { offsetLeft, offsetTop } = selectDom; // 元素位置        // 手指原始位置        this.oldMousePos = {            x: pageX,            y: pageY        };        // 元素原始位置        this.oldNodePos = {            x: offsetLeft,            y: offsetTop        };        selectDom.style.left = `${offsetLeft}px`;        selectDom.style.top = `${offsetTop}px`;    },    touchMove(ev) {        // 未达到500毫秒就移动则不触发长按,清空定时器        clearTimeout(this.timeOutEvent);        if (this.longClick === 1) {            const selectDom = ev.currentTarget;            // x轴偏移量            const lefts = this.oldMousePos.x - this.oldNodePos.x;            // y轴偏移量            const tops = this.oldMousePos.y - this.oldNodePos.y;            const { pageX, pageY } = ev.touches[0]; // 手指位置            selectDom.style.left = `${pageX - lefts}px`;            selectDom.style.top = `${pageY - tops}px`;        }    },    touchEnd(ev) {        // 清空定时器        clearTimeout(this.timeOutEvent);        if (this.longClick === 1) {            this.longClick = 0;            const selectDom = ev.currentTarget;            const {clientWidth, clientHeight} = document.body;            const {offsetLeft, offsetTop} = selectDom;            selectDom.style.left =                 (offsetLeft + 50) > (clientWidth / 2) ?                 'calc(100% - 100px)' : 0;            if (offsetTop < 90) {                selectDom.style.top = '90px';            } else if (offsetTop + 36 > clientHeight) {                selectDom.style.top = `${clientHeight - 36}px`;            }            this.btnType =                 (offsetLeft + 50) > (clientWidth / 2) ?                 'right' : 'left';        }    },};</script>

三、页面引入:

单个页面引入

<template>    <floatBtn/></template>
<script>import floatBtn from './floatBtn';export default {    components: {        floatBtn    },};</script>

感谢各位的阅读,以上就是“vue如何实现移动端拖拽悬浮按钮”的内容了,经过本文的学习后,相信大家对vue如何实现移动端拖拽悬浮按钮这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: vue如何实现移动端拖拽悬浮按钮

本文链接: https://www.lsjlt.com/news/343529.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现移动端拖拽悬浮按钮
    目录功能介绍:大致需求:整体思路:具体实现:一、position:fixed布局:二、touch事件绑定:三、页面引入:本文实例为大家分享了vue实现移动端拖拽悬浮按钮的具体代码,供...
    99+
    2022-09-27
  • vue如何实现移动端拖拽悬浮按钮
    这篇文章主要讲解了“vue如何实现移动端拖拽悬浮按钮”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何实现移动端拖拽悬浮按钮”吧!功能介绍:在移动端开发中,实现悬浮按钮在侧边显示,为不...
    99+
    2023-07-02
  • jquery实现移动端悬浮拖拽框
    使用jquery 实现了一个基础的悬浮弹拖拽窗, 根据自己的需求去完善动效。 分享给大家供大家参考,具体如下: 演示效果 代码块 需要引入jquery , 引入本地或线上根据自己的...
    99+
    2022-11-13
  • Android如何实现自定义可拖拽的悬浮按钮DragFloatingActionButton
    这篇文章主要介绍Android如何实现自定义可拖拽的悬浮按钮DragFloatingActionButton,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!悬浮按钮FloatingActionButton是Androi...
    99+
    2023-05-31
    android
  • jQuery实现移动端悬浮拖动效果
    模拟手机端悬浮按钮功能,自动吸附两边,并且不能超过活动区域,上下超过自动吸附上或下 因为是移动端端事件,需要调试到移动端才可以看效果 以下是代码 <!DOCTYPE ht...
    99+
    2022-11-13
  • 使用vue怎么实现一个可移动的悬浮按钮
    使用vue怎么实现一个可移动的悬浮按钮?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Vue的优点Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟...
    99+
    2023-06-06
  • iOS如何实现全局悬浮按钮
    这篇文章给大家分享的是有关iOS如何实现全局悬浮按钮的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下现在有很多app都做这个全局按钮如上面两张图的效果,完成一个全局悬浮的按钮,而且不会划出屏幕外既然是全...
    99+
    2023-06-29
  • android 应用内部悬浮可拖动按钮简单实现代码
    本文介绍了android 应用内部悬浮可拖动按钮简单实现代码,分享给大家,具体如下:可以悬浮在activity上面,在加载fragment时悬浮按钮不会消失实现方式很简单,因为是在应用内部拖动的,只需要通过Activity获取WindowM...
    99+
    2023-05-30
    android 悬浮 拖动
  • vue实现移动端touch拖拽排序
    目录功能介绍:大致需求:整体思路:简单效果展示:具体实现:一、display:flex+v-for布局:二、touch事件绑定:三、卡片移动:四、获取手指所在位置:五、操作数组(删除...
    99+
    2022-09-27
  • vue实现移动端的开关按钮
    本文实例为大家分享了vue实现移动端的开关按钮的具体代码,供大家参考,具体内容如下 逻辑: 1.写一个椭圆形的div 2.动态改变这个椭圆形的div的背景颜色 3.写一个圆点,这个圆...
    99+
    2022-11-13
  • vue实现移动端可拖拽式icon图标
    本文实例为大家分享了vue实现移动端可拖拽式icon图标的具体代码,供大家参考,具体内容如下 需求描述:在移动端页面悬浮一个可随便拖拽的图标,类似于苹果手机的辅助触控小圆点,并且可随...
    99+
    2022-11-13
  • vue怎么实现移动端的开关按钮
    本篇内容主要讲解“vue怎么实现移动端的开关按钮”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现移动端的开关按钮”吧!逻辑:写一个椭圆形的div动态改变这个椭圆形的div的背景颜色写...
    99+
    2023-06-29
  • 如何使用CSS3按钮鼠标悬浮实现光圈效果
    小编给大家分享一下如何使用CSS3按钮鼠标悬浮实现光圈效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1 、HTML相关知识点...
    99+
    2022-10-19
  • 详解Android自定义view如何实现拖拽选择按钮
    小编这次要给大家分享的是详解Android自定义view如何实现拖拽选择按钮,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。本文实例为大家分享了Android实现拖拽选择按钮的具体代码,供大家参考,具体...
    99+
    2023-05-30
    android view roi
  • Vue如何实现悬浮框自由移动+录音功能
    本篇内容介绍了“Vue如何实现悬浮框自由移动+录音功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果如下主要功能一个漂浮的球,在全屏幕中...
    99+
    2023-07-02
  • 如何用css3实现鼠标悬停动画按钮
    这篇文章主要介绍“如何用css3实现鼠标悬停动画按钮”,在日常操作中,相信很多人在如何用css3实现鼠标悬停动画按钮问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用css...
    99+
    2022-10-19
  • 如何使用纯css3实现的鼠标悬停动画按钮
    小编给大家分享一下如何使用纯css3实现的鼠标悬停动画按钮,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html代码:<div><span></span>...
    99+
    2022-10-19
  • 如何使用CSS3实现按钮悬停闪烁动态特效
    本篇内容介绍了“如何使用CSS3实现按钮悬停闪烁动态特效”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们...
    99+
    2022-10-19
  • HTML5中canvas如何实现移动端上传头像拖拽裁剪效果
    这篇文章将为大家详细讲解有关HTML5中canvas如何实现移动端上传头像拖拽裁剪效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 html部分: <!DOC...
    99+
    2022-10-19
  • vue+jquery+lodash如何实现滑动时顶部悬浮固定效果
    这篇文章给大家分享的是有关vue+jquery+lodash如何实现滑动时顶部悬浮固定效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这个效果是一个项目中抽出来的一个demo效...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作