小孩子(图片)可移动代码edit icon

Fork(复制)
下载
嵌入
设置
BUG反馈
index.html
assets
现在支持上传本地图片了!
            
            <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>可拖动的固定图片</title>
    <style>
        /* 样式部分都是全自动的,不用修改 */
        body {
            margin: 0;
            padding: 0;
            height: 300vh;
            overflow: auto;
            position: relative;
            touch-action: none;
        }
        .draggable-image {
            position: fixed;
            bottom: 20px;
            left: 20px;
            width: 131.8px;
            height: auto;
            cursor: pointer;
            user-select: none;
            transition: transform 0.1s ease;
            z-index: 1000;
        }
    </style>
</head>
<body>
    <img src="./assets/keai.gif" alt="Draggable Image" class="draggable-image" id="draggableImage">

    <script>
        
        const image = document.getElementById('draggableImage');
        let isDragging = false;
        let offsetX, offsetY;
      
        image.addEventListener('mousedown', (e) => {
            isDragging = true;
            offsetX = e.clientX - image.getBoundingClientRect().left;
            offsetY = e.clientY - image.getBoundingClientRect().top;
            e.preventDefault(); 
        });
      
        document.addEventListener('mousemove', (e) => {
            if (isDragging) {
                image.style.left = `${e.clientX - offsetX}px`;
                image.style.top = `${e.clientY - offsetY}px`;
            }
        });
      
        document.addEventListener('mouseup', () => {
            isDragging = false;
        });
      
        image.addEventListener('touchstart', (e) => {
            isDragging = true;
            offsetX = e.touches[0].clientX - image.getBoundingClientRect().left;
            offsetY = e.touches[0].clientY - image.getBoundingClientRect().top;
            e.preventDefault(); 
        });

        document.addEventListener('touchmove', (e) => {
            if (isDragging) {
                image.style.left = `${e.touches[0].clientX - offsetX}px`;
                image.style.top = `${e.touches[0].clientY - offsetY}px`;
            }
            e.preventDefault();
        });

        document.addEventListener('touchend', () => {
            isDragging = false;
        });
    </script>
</body>
</html>

        
预览
控制台