【经典】原生JS实现“用鼠标拖拽(drag)内容DIV”,滚动条对应同步滚动

简介: 【经典】原生JS实现“用鼠标拖拽(drag)内容DIV”,滚动条对应同步滚动


直接复制代码运行就对了!!!

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>【经典】原生JS实现“用鼠标拖拽(drag)内容DIV”,滚动条对应同步滚动</title>
    <style>
        /*滚动条样式----------------------------------------*/
        /*滚动条轨道*/
        ::-webkit-scrollbar {
            width: 8px;
            height: 8px;
            background: #00000011;
        }
        /*滚动条滑块*/
        ::-webkit-scrollbar-thumb {
            border-radius: 8px;
            background: #00000033;
        }
        /*移入滑块*/
        ::-webkit-scrollbar-thumb:hover {
            background: #00000055;
        }
        /*拐角处*/
        ::-webkit-scrollbar-corner {
            background: none;
        }
        /*----------------------------------------*/
        .scrollContainer {
            width: 900px;
            height: 400px;
            overflow: auto;
        }
        .dragContainer {
            width: 1200px;
            height: 600px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .dragContainer p {
            width: 500px;
            font-size: 40px;
            font-weight: bold;
            padding: 50px;
            border-radius: 50px;
            background-color: #409EFF;
            color: white;
        }
        /*核心样式----------------------------------------*/
        .dragContainer {
            cursor: grab;
        }
        .dragContainer:active {
            cursor: grabbing;
            user-select: none;
        }
        /*  ----------------------------------------  */
    </style>
</head>
<body>
<div class="scrollContainer">
    <div class="dragContainer">
        <p>这里的文字是可以拖拽的,可以左右上下拖拽,水平垂直滚动条也会对应滚动!拖拽的幅度和滚动条移动的幅度是对应等比例的!</p>
    </div>
</div>
</body>
<script>
    let scrollContainer = document.querySelector(".scrollContainer");
    let dragContainer = document.querySelector(".dragContainer");
    dragContainer.onmousedown = e => {
        //鼠标按下那一刻,滚动条的位置
        let mouseDownScrollPosition = {
            scrollLeft: scrollContainer.scrollLeft,
            scrollTop: scrollContainer.scrollTop
        };
        //鼠标按下的位置坐标
        let mouseDownPoint = {
            x: e.clientX,
            y: e.clientY
        };
        dragContainer.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 => {
            dragContainer.onmousemove = null;
            document.onmouseup = null;
        };
    };
</script>
</html>

关联文章

image.png


相关文章
|
4天前
|
JavaScript 前端开发 异构计算
兼容移动手机的js拖拽插件Draggin.js
兼容移动手机的js拖拽插件Draggin.js
12 1
|
1月前
|
数据采集 存储 监控
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
本文介绍了如何使用Node.js和Puppeteer实现自动化数据抓取,特别是针对新闻网站“澎湃新闻”。通过设置代理IP、User-Agent和Cookie,提高爬虫的效率和隐蔽性,避免被网站封锁。代码示例展示了如何模拟鼠标点击、键盘输入等操作,抓取并整理新闻数据,适用于需要规避IP限制和突破频率限制的场景。
92 10
|
1月前
|
JavaScript
JS鼠标框选并删除HTML源码
这是一个js鼠标框选效果,可实现鼠标右击出现框选效果的功能。右击鼠标可拖拽框选元素,向下拖拽可实现删除效果,简单实用,欢迎下载
42 4
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
41 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
23天前
|
Web App开发 JavaScript 前端开发
高性能的纯Js滚动条美化插件smooth-scrollbar
smooth-scrollbar是一款高性能的纯JavaScript滚动条美化插件。该滚动条为现代浏览器而制作,它具有高性能,自由配置,平滑滚动等特点,支持各种现代桌面浏览器和手机设备。
|
2月前
|
JavaScript 前端开发
js怎么获取div里面的文字长度
js怎么获取div里面的文字长度
62 5
|
2月前
|
移动开发 JavaScript 前端开发
【JavaScript】JS执行机制--同步与异步
【JavaScript】JS执行机制--同步与异步
24 1
|
3月前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
46 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
3月前
|
JavaScript 前端开发
网页前端课程设计-【模仿】香港中文大学官网,轮播图及div+css布局,js的dom操作
这篇文章介绍了如何模仿香港中文大学官网进行网页前端课程设计,包括使用div+css布局、js的DOM操作以及实现轮播图等技术细节。
|
4月前
|
JavaScript 前端开发
js怎么获取div里面的文字长度
js怎么获取div里面的文字长度
52 3