Moveable.js拖动Demo

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

<head>
    <meta charset="UTF-8">
    <title>Moveable.js拖动Demo</title>
    <!-- 引入Moveable.js库 -->
    <script src="//daybrush.com/moveable/release/latest/dist/moveable.min.js"></script>
    <style>
        /* 为目标元素设置样式 */
       .targetElement {
            width: 150px;
            height: 150px;
            background-color: skyblue;
            position: relative;
            cursor: pointer;
        }

        /* 为Moveable.js的操作手柄设置样式(可选) */
       .moveable-handle {
            background-color: rgba(0, 0, 0, 0.5);
            width: 10px;
            height: 10px;
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <div class="targetElement"></div>
    <div class="targetElement"></div>
    <div class="targetElement"></div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            let targets = [...document.getElementsByClassName('targetElement')];
            let mouseEvent = null;
            // 创建Moveable实例
            const moveable = new Moveable(document.body, {
                // target: target1,
                container: document.body,
                // 启用可拖动功能
                draggable: true,
                // 启用可缩放功能
                scalable: true,
                // 启用可旋转功能
                rotatable: true,
                // 设置缩放限制(可选)
                scaleRange: {
                    min: 0.5,
                    max: 2
                },
                origin: false, // 隐藏原点
                // 设置旋转限制(可选)
                rotateRange: {
                    min: 0,
                    max: 360
                },
            });
            targets.forEach(item => {
                item.addEventListener('mousedown', (e) => {
                    mouseEvent = e;
                    moveable.setState({ target: e.target }, () => {
                        // 当出现mouseevent时进行即刻选中
                        moveable.dragStart(mouseEvent);
                        mouseEvent = null;
                    });
                });
            });
            // 监听拖动事件
            moveable
            .on('dragStart', ({ inputEvent, target, stop }) => {
            })
            .on('drag', function ({ target, left, top }) {
                console.log('正在拖动,当前位置:', left, top);
                target.style.left = `${left}px`;
                target.style.top = `${top}px`;
            })
            .on('scale', function ({ target, scale, transform }) {
                target.style.transform = transform
                console.log('正在缩放,当前缩放比例:', scale);
                console.log('正在缩放,当前缩放比例:', transform);
            })
            .on('rotate', function ({ target, rotation }) {
                console.log('正在旋转,当前旋转角度:', rotation);
                target.style.transform = `rotate(${rotation}deg)`;
            });
        });
    </script>
</body>

</html>

事件绑定可改为事件委托,可在moveable各个事件中保存target修改后的值去保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值