vue拖拽效果电脑手机

2022-03-25  本文已影响0人  衬fzy
image.png
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>vue拖拽效果电脑手机</title>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" />
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.6/dist/vue.min.js"></script>
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    </head>
    <style>
        body {
            font-size: 30px;
        }

        .xuanfu {
            height: 4.5rem;
            width: 4.5rem;
            /* 如果碰到滑动问题,1.3 请检查 z-index。z-index需比web大一级*/
            z-index: 999;
            position: fixed;
            top: 6.2rem;
            left: 50%;
            border-radius: 0.8rem;
            background-color: rgba(0, 0, 0, 0.55);
        }

        .yuanqiu {
            height: 2.7rem;
            width: 2.7rem;
            border: 0.3rem solid rgba(140, 136, 136, 0.5);
            margin: 0.65rem auto;
            color: #000000;
            font-size: 1.6rem;
            line-height: 2.7rem;
            text-align: center;
            border-radius: 100%;
            background-color: #ffffff;
        }
    </style>
    <body>
        <div id="app">
            <div>你的web页面</div>
            <!-- 如果碰到滑动问题,1.1 请检查这里是否属于同一点。 -->
            <!-- 悬浮的HTML -->
            <div class="xuanfu" id="moveDiv" @mousemove="move" @touchmove.prevent="move" @mouseup="end" @touchend="end">
                <div class="yuanqiu" @mousedown="down" @touchstart="down"></div>
            </div>
        </div>
    </body>
    <script type="text/javascript">
        new Vue({
            el: '#app',
            data() {
                return {
                    flags: false,
                    position: {
                        x: 0,
                        y: 0
                    },
                    nx: '',
                    ny: '',
                    dx: '',
                    dy: '',
                    xPum: '',
                    yPum: '',
                }
            },
            methods: {
                // 实现移动端拖拽
                down() {
                    console.log(1)
                    this.flags = true;
                    var touch;
                    if (event.touches) {
                        touch = event.touches[0];
                    } else {
                        touch = event;
                    }
                    this.position.x = touch.clientX;
                    this.position.y = touch.clientY;
                    this.dx = moveDiv.offsetLeft;
                    this.dy = moveDiv.offsetTop;
                },
                move() {
                    if (this.flags) {
                        console.log(2)
                        var touch;
                        if (event.touches) {
                            touch = event.touches[0];
                        } else {
                            touch = event;
                        }
                        this.nx = touch.clientX - this.position.x;
                        this.ny = touch.clientY - this.position.y;
                        this.xPum = this.dx + this.nx;
                        this.yPum = this.dy + this.ny;
                        moveDiv.style.left = this.xPum + "px";
                        moveDiv.style.top = this.yPum + "px";
                        //阻止页面的滑动默认事件;如果碰到滑动问题,1.2 请注意是否获取到 touchmove
                        document.addEventListener("touchmove", function() {
                            event.preventDefault();
                        }, false);
                    }
                },
                //鼠标释放时候的函数
                end() {
                    console.log(3)
                    this.flags = false;
                },
            }
        })
    </script>
</html>

感谢大家点赞!

上一篇下一篇

猜你喜欢

热点阅读