小李子锅锅
小李子锅锅
  • 发布:2016-08-12 11:09
  • 更新:2019-01-17 21:24
  • 阅读:7442

可拖动的悬浮球(增加屏幕边界判断)

分类:MUI

实现了一个可以拖动的悬浮球的效果,代码如下:

<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="utf-8">  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
        <title></title>  
        <script src="js/mui.min.js"></script>  
        <link href="css/mui.min.css" rel="stylesheet" />  
        <style>  
            #touch {  
                width: 50px;  
                height: 50px;  
                position: absolute;  
                left: 100px;  
                top: 200px;  
                margin-left: -30px;  
                margin-top: -30px;  
                z-index: 999999;  
            }  

            #simple-menu {  
                cursor: move;  
            }  
        </style>  
    </head>  
<body>  
        <header class="mui-bar mui-bar-nav">  
            <h1 class="mui-title">可拖动悬浮小球</h1>  
        </header>  
        <div class="mui-content">  
            <div id="touch" style="width: 50px; height: 50px; position: absolute;">  
                <img id="simple-menu" src="images/search.png" style="width: 50px; height: 50px;" />  
            </div>  
        </div>  
        <script>  
            mui.init({  
                swipeBack: true //启用右滑关闭功能  
            });  
            var div = document.getElementById('touch');  
            var viewWidth = window.screen.width;  
            var viewHeight = window.screen.height;  
            var divWidth = parseInt(div.style.width);  
            var divHeight = parseInt(div.style.height);  
            div.addEventListener('touchmove', function(event) {  
                event.preventDefault(); //阻止其他事件  
                // 如果这个元素的位置内只有一个手指的话  
                if(event.targetTouches.length == 1) {  
                    var touch = event.targetTouches[0]; // 把元素放在手指所在的位置  
                    var tempWidth = touch.pageX;//存储x坐标  
                    var tempHeigth = touch.pageY;//存储Y坐标  
                    if((touch.pageX + divWidth) > viewWidth) {//超越右边界  
                        tempWidth = viewWidth - divWidth/2;  
                    }  
                    if((touch.pageY + divHeight) > viewHeight) {//超越下边界  
                        tempHeigth = viewHeight - divHeight;  
                    }  
                    if((touch.pageX - divWidth)<0){//超越左边界  
                        tempWidth=divWidth/2;  
                    }  
                    if((touch.pageY - divHeight)<0){//超越上边界  
                        tempHeigth=divHeight/2;  
                    }  
                    div.style.left = tempWidth + 'px';  
                    div.style.top = tempHeigth + 'px';  
                    div.style.background = "";  
                }  
            }, false);  
        </script>  
    </body>  

</html>
7 关注 分享
赵梦欢 lhyh 蓝夜精灵 duanzt 2***@qq.com 2***@qq.com 6***@qq.com

要回复文章请先登录注册

z***@163.com

z***@163.com

如果div mui-content的高度超出屏幕高度,div.style.top值计算错误。
2019-01-17 21:24
1***@qq.com

1***@qq.com

很有参考意义,赞
2018-11-04 22:36
maxcanner

maxcanner

这个要给一万个赞
2018-08-21 18:09
9***@qq.com

9***@qq.com

可以下拉后不会跟随,没有定死在一个位置,会跟随页面滚动二滚动
2018-05-04 00:17
2***@qq.com

2***@qq.com

很好用
2018-02-12 19:16
w***@126.com

w***@126.com

赞,效果挺好的
2018-02-05 11:26