html+JavaScript实现拖拽滚动

很简单 直接复制代码 放个html文件直接就能跑起来

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>滚动拖拽</title>
    <style>
        .scrollContainer {
            width: 450px;
            height: 450px;
            overflow: auto;
        }
    </style>
</head>
<body>
<div class="scrollContainer">
    <div style = "width: 100vw;height: 100vh;">
        说的撒打发萨达发电机房拉斯柯达急啊大厦里看风景拉设计费雷克萨大家发拉斯柯达就发了喀什的就发拉斯柯达就发拉开始对接发拉斯柯达就啊发拉开始对接法拉斯柯达
        sadly飞机撒的两款发加上的拉库房加上的会计法拉看风景是多啦看风景拉萨的咖啡机啥的李逵负荆拉伸卡的减肥拉刷卡的房间拉刷卡的房间拉萨的房间雷克萨大家发时
        阿圣诞快乐附件三发家的老客服结束啦的开发就阿斯拉达会计法辣三丁会计法刷卡来得及安防奥斯卡的龙卷风雷克萨大家发卡拉三等奖雷克萨大家啥的放假烧腊店会计法
        萨达发结束啦的开发结束啦大哭减肥拉萨地块减肥拉萨地块就是打开了房间鲁大师咖啡机爱上了的看法就阿圣诞快乐就发生看到了附件拉伸的开发家代理费聚少离多反馈
        沙迪克发就苏打绿咖啡就沙拉得减肥沙拉的咖啡机拉萨的咖啡机拉伸发了喀什京东方卡死了解放路撒家乐福家是东风路卡撒打发了就撒大力开发苏打绿咖啡山大反馈就撒
    </div>
</div>
</body>
<script>
    let scrollContainer = document.querySelector(".scrollContainer");
    scrollContainer.onmousedown = e => {
        //鼠标按下那一刻,滚动条的位置
        let mouseDownScrollPosition = {
            scrollLeft: scrollContainer.scrollLeft,
            scrollTop: scrollContainer.scrollTop
        };
        //鼠标按下的位置坐标
        let mouseDownPoint = {
            x: e.clientX,
            y: e.clientY
        };
        scrollContainer.onmousemove = e => {
            //鼠标滑动的实时距离
            let dragMoveDiff = {
                x: mouseDownPoint.x - e.clientX,
                y: mouseDownPoint.y - e.clientY
            };
            scrollContainer.scrollLeft = mouseDownScrollPosition.scrollLeft + dragMoveDiff.x;
            scrollContainer.scrollTop = mouseDownScrollPosition.scrollTop + dragMoveDiff.y;
        };
        document.onmouseup = e => {
            scrollContainer.onmousemove = null;
            document.onmouseup = null;
        };
 
    };
</script>
</html>

这样 直接用鼠标拖拽 元素自己就会滚动
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现环形滚动条,可以使用 HTML、CSS 和 JavaScript。下面是一份基本的实现代码: HTML: ``` <div class="scrollbar"> <div class="track"> <div class="thumb"></div> </div> </div> ``` CSS: ``` .scrollbar { width: 200px; height: 200px; position: relative; overflow: hidden; } .track { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 8px; height: 100%; background-color: #ddd; border-radius: 4px; } .thumb { position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 8px; height: 40px; background-color: #333; border-radius: 4px; } ``` JavaScript: ``` const thumb = document.querySelector(".thumb"); const track = document.querySelector(".track"); let isDragging = false; thumb.addEventListener("mousedown", () => { isDragging = true; }); document.addEventListener("mousemove", (event) => { if (isDragging) { let mouseY = event.clientY; let trackRect = track.getBoundingClientRect(); let trackTop = trackRect.top + window.pageYOffset; let trackHeight = trackRect.height; let thumbHeight = thumb.offsetHeight; let thumbHalfHeight = thumbHeight / 2; let thumbTop = mouseY - trackTop - thumbHalfHeight; let percent = (thumbTop / (trackHeight - thumbHeight)) * 100; thumb.style.top = `${percent}%`; } }); document.addEventListener("mouseup", () => { isDragging = false; }); ``` 这份代码创建了一个环形滚动条,其中滑块可以在轨道上动。滑块的样式可以自定义,只需要修改 CSS 中 thumb 的样式即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值