我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jQuery实现移动端悬浮拖动效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jQuery实现移动端悬浮拖动效果

模拟手机端悬浮按钮功能,自动吸附两边,并且不能超过活动区域,上下超过自动吸附上或下

因为是移动端端事件,需要调试到移动端才可以看效果

以下是代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script class="lazy" data-src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    <title>Document</title>
    <style>
        .service_s {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 1;
            display: none;
        }
        * {
            padding: 0;
            margin: 0;
        }
        .content {
            position: fixed;
            top: 10%;
            right: 3%;
            left: 3%;
            bottom: 10%;
            border: 1px solid #cccc77;
            background: #cccc77;
            display: flex;
            align-items: center;
            color: #fff;
            font-weight: 600;
            justify-content: center;
        }
        .service {
            position: fixed;
            top: 60%;
            right: 3%;
            height: 40px;
            width: 40px;
            background: #0baefd;
            z-index:9
        }

    </style>
</head>
<body>
    <div class="content">活动区域</div>
    <div class="service">
    <!--    <div class="service_s"></div>-->  <!--        遮罩层-->
</div>
<script>
    
    var nx, ny, wxX, wxY, isDown = false;  //X Y坐标
    // H5页面
    $('.service').bind("touchstart", function (e) {
    //点击触发
        e.preventDefault();
        $(this).css("transform", 'translate(0)')
        var touch = event.targetTouches[0];
        wxX = touch.clientX;
        wxY = touch.clientY;
        // $('.service_s').show()  //是否需要一个遮罩层
        isDown = true;
        $(document).bind("touchmove", function (ev) {
        //滑动触发
            e.preventDefault();
            if (!isDown) return
            var touch = event.targetTouches[0];
            ny = touch.clientY - $('.service').height() / 2
            nx = touch.clientX - $('.service').width() / 2
            $('.service').css('top', '' + ny / ($(window).height() / 100) + '%')
            $('.service').css('left', '' + nx / ($(window).width() / 100) + '%')
        })
    }).bind("touchend", function (e) {
        //移开触发
        var touch = event.changedTouches[0];
        //判断跟初始坐标是否一致,一致则大概率为点击事件
        if (wxX === touch.clientX && wxY === touch.clientY) {
            alert('点击了')
        } else {
        //判断所在位置,自动吸附左右,如果超过上下活动区域范围则在左右的基础上加上吸附上下
            if (nx < $(window).width() / 2) {
                if ($(window).height() * 0.9 - $('.service').height() < ny) {
                    $('.service').css({"top": "90%", "transform": `translateY(${-($(this).height())}px)`})
                } else if ($(window).height() * 0.1 > ny) {
                    $('.service').css({"top": "10%"})
                }
                $('.service').css({"left": "3%",})
            } else {
                if ($(window).height() * 0.9 - $('.service').height() < ny) {
                    $('.service').css({
                        "top": "90%",
                        "left": "97%",
                        "transform": `translate(${-($(this).height())}px,${-($(this).width())}px)`
                    })
                } else if ($(window).height() * 0.1 > ny) {
                    $('.service').css({"top": "10%", "left": "97%", "transform": `translateX(${-($(this).width())}px)`})
                } else {
                    $('.service').css({"left": "97%", "transform": `translateX(${-($(this).width())}px)`})
                }
            }
        }
        isDown = false;
         //$('.service_s').hide()
    })
</script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jQuery实现移动端悬浮拖动效果

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

下载Word文档

猜你喜欢

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

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

vue怎么实现移动端div拖动效果

本文小编为大家详细介绍“vue怎么实现移动端div拖动效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么实现移动端div拖动效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、分享代码html代码<
2023-06-29

Android可拖动悬浮窗怎么实现

要实现在Android中可拖动的悬浮窗,可以按照以下步骤进行:1. 创建一个自定义的`FloatingView`类来实现悬浮窗的视图。在该类中,你可以添加任何你想要显示的视图元素,如文字、图像等。2. 在`FloatingView`类中,重
2023-08-16

Flutter实现Android滚动悬浮效果过程

这篇文章主要介绍了Flutter实现Android滚动悬浮效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-01-29

Android view如何实现滑动悬浮固定效果

这篇文章主要介绍了Android view如何实现滑动悬浮固定效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.背景在项目开发过程中,有时候会碰到这样的需求:在滑动的过程
2023-05-30

javascript怎么实现悬浮跟随框缓动效果

今天小编给大家分享一下javascript怎么实现悬浮跟随框缓动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、定义一
2023-06-29

使用jquery怎么实现图片悬浮效果

使用jquery怎么实现图片悬浮效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码部分
2023-06-14

编程热搜

目录