Logo

在 DIV 中实现拖动滚动功能

photo

2025年07月28日

场景描述
假设你有一个带有滚动条的div容器,你希望用户可以通过拖动鼠标来滚动内容,而不是直接滚动滚动条。这种功能特别适合流程图、地图或其他需要精细控制滚动的场景。

实现步骤

  • 创建 HTML 结构
    在你的 WordPress 页面或文章中,插入一个带有滚动条的div容器。例如:
   <div id="scrollableDiv" class="scrollable-container">
       <div class="content">
           <!-- 这里放置你的内容 -->
           <p>这里是滚动内容的一部分。</p>
           <p>更多内容...</p>
       </div>
   </div>

插入这段代码。

  • 添加 CSS 样式
    在你的主题的style.css文件中,或者通过 WordPress 的自定义 CSS 功能,添加以下样式:
   .scrollable-container {
       width: 400px;
       height: 300px;
       border: 1px solid #ccc;
       overflow: auto;
       position: relative;
       cursor: grab;
   }
   .content {
       width: 800px;
       height: 600px;
       background: linear-gradient(to right, red, blue);
   }

这些样式定义了容器的大小、边框和滚动条的显示。

  • 添加 JavaScript 代码
    在你的主题的functions.php文件中,或者通过 WordPress 的自定义脚本功能,添加以下 JavaScript 代码:
   <script>
       document.addEventListener('DOMContentLoaded', function () {
           const scrollableDiv = document.getElementById('scrollableDiv');

           let isDragging = false;
           let startX, startY, startScrollLeft, startScrollTop;

           // 鼠标按下事件
           scrollableDiv.addEventListener('mousedown', function (e) {
               if (e.button === 0) { // 鼠标左键
                   isDragging = true;
                   startX = e.clientX;
                   startY = e.clientY;
                   startScrollLeft = scrollableDiv.scrollLeft;
                   startScrollTop = scrollableDiv.scrollTop;
                   scrollableDiv.style.cursor = 'grabbing'; // 改变光标样式
               }
           });

           // 鼠标移动事件
           document.addEventListener('mousemove', function (e) {
               if (isDragging) {
                   const deltaX = startX - e.clientX;
                   const deltaY = startY - e.clientY;
                   scrollableDiv.scrollLeft = startScrollLeft + deltaX;
                   scrollableDiv.scrollTop = startScrollTop + deltaY;
               }
           });

           // 鼠标释放事件
           document.addEventListener('mouseup', function () {
               if (isDragging) {
                   isDragging = false;
                   scrollableDiv.style.cursor = 'grab'; // 恢复光标样式
               }
           });
       });
   </script>

这段代码通过监听鼠标事件来实现拖动滚动功能。

  • 测试功能
    将上述代码添加到你的网页后,保存并查看效果。你可以通过拖动鼠标来滚动内容,而无需直接操作滚动条。

注意事项

  • 确保你的主题支持自定义 CSS 和 JavaScript。
  • 如果你的页面中有多个滚动容器,可以通过类名选择器来区分它们。
  • 如果你需要更复杂的功能,比如平滑滚动或限制滚动范围,可以通过进一步扩展 JavaScript 代码来实现。

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

留言板

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

热门文章

无法握住的故土 在我们心灵最温暖的角落,总有一寸土地是属于故乡的。虽然我们看似已远离故土,可骨子里对故乡的依恋却是从未冷却过。我们无论漂泊他乡,还是在繁华都市平步青云,可故乡的悠悠情思总会潜入梦乡与你缠绵。是儿时那一缕缕茉莉的清香萦绕在梦境,也是邻家那已锈迹斑斑的铁壶里,开出艳丽的花儿在梦的边缘摇曳。故土就这样根深蒂固地在我们的灵魂深处烙下深深的印记。 作者:Pastore Antonio
1596 浏览量
EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先...EWS(ExchangeService)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 作者:Pastore Antonio
1585 浏览量
Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1579 浏览量
SQL Server AG集群启动不起来的临时自救大招 背景前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群...SQLServerAG集群启动不起来的临时自救大招 作者:Pastore Antonio
1573 浏览量
windows 下安装 memcahce 官网上并未提供Memcached的Windows平台安装包,我们可以使用以下链接来下载,你需...windows下安装memcahce 作者:Pastore Antonio
1566 浏览量