使用JavaScript写一个可以左右丝滑拖动的表格带上样式

时间: 2023-09-08 08:12:08 浏览: 56
以下是一个使用JavaScript和CSS实现左右滑动的表格示例: ```html <!DOCTYPE html> <html> <head> <title>可左右拖动的表格</title> <style> .table-wrapper { overflow-x: auto; white-space: nowrap; } table { border-collapse: collapse; width: 100%; } th, td { padding: 8px; text-align: left; border-bottom: 1px solid #ddd; } th { background-color: #f2f2f2; } </style> </head> <body> <div class="table-wrapper"> <table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>城市</th> <th>学历</th> </tr> </thead> <tbody> <tr> <td>张三</td> <td>25</td> <td>男</td> <td>北京</td> <td>本科</td> </tr> <tr> <td>李四</td> <td>30</td> <td>女</td> <td>上海</td> <td>硕士</td> </tr> <tr> <td>王五</td> <td>28</td> <td>男</td> <td>广州</td> <td>本科</td> </tr> <tr> <td>赵六</td> <td>35</td> <td>女</td> <td>深圳</td> <td>博士</td> </tr> </tbody> </table> </div> <script> // 获取表格包裹器和表格 var tableWrapper = document.querySelector('.table-wrapper'); var table = document.querySelector('table'); // 当鼠标在表格上按下时记录位置 var isDown = false; var startX; var scrollLeft; tableWrapper.addEventListener('mousedown', function(e) { isDown = true; startX = e.pageX - tableWrapper.offsetLeft; scrollLeft = tableWrapper.scrollLeft; }); // 当鼠标移动时拖动表格 tableWrapper.addEventListener('mousemove', function(e) { if (!isDown) return; e.preventDefault(); var x = e.pageX - tableWrapper.offsetLeft; var walk = (x - startX) * 3; tableWrapper.scrollLeft = scrollLeft - walk; }); // 当鼠标松开时停止拖动 tableWrapper.addEventListener('mouseup', function() { isDown = false; }); // 当鼠标离开表格时停止拖动 tableWrapper.addEventListener('mouseleave', function() { isDown = false; }); </script> </body> </html> ``` 在这个示例中,我们首先创建了一个table-wrapper类的div元素,用于包裹表格。然后在CSS中设置了表格和单元格的样式,并将table-wrapper元素的overflow-x属性设置为auto,以便在表格宽度超出容器宽度时显示水平滚动条。 接下来,我们使用JavaScript监听table-wrapper元素上的mousedown、mousemove和mouseup事件。当按下鼠标时,我们记录当前鼠标位置和表格包裹器的scrollLeft值。然后在鼠标移动时,我们计算出鼠标相对于起始位置的偏移量,将其乘以一个常数(3)并将结果减去初始的scrollLeft值,以获得新的scrollLeft值。最后,在鼠标松开或离开表格时,我们停止拖动。 这样就可以实现一个可以左右丝滑拖动的表格。

相关推荐

最新推荐

recommend-type

JavaScript使用push方法添加一个元素到数组末尾用法实例

主要介绍了JavaScript使用push方法添加一个元素到数组末尾,实例分析了javascript中push函数的使用技巧,需要的朋友可以参考下
recommend-type

JavaScript实现x秒后自动跳转到一个页面

今天看视频学习时学习了一种... 2、有时我们需要有点提示,比如“x秒后自动跳转,若没有跳转,请点击此处”,则可以在myeclipse中调用Snippets中的Delay Go To URL.会自动生成如下代码: 代码如下: [removed] &lt;!– //
recommend-type

javascript实现一个网页加载进度loading

loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在刷新和加载的过程中为了让用户感知到 load 的过程,我们会使用一些过渡动画来表达。最常见的比如“转圈圈”,“省略号”等等。 网页loading有很多...
recommend-type

javascript中直接写php代码的方法

一、在javascript中嵌入php代码javascript若是通过js文件包含进来的,那么js文件中也可以直接写php代码,只不过包含js文件是扩展名要改成php,如: 代码如下:[removed][removed]二、javascript函数参数的默认值c语言...
recommend-type

用html5的canvas和JavaScript创建一个绘图程序的简单实例

下面小编就为大家带来一篇用html5的canvas和JavaScript创建一个绘图程序的简单实例。小编觉得挺不错的, 现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。