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

时间: 2023-09-02 17:14:45 浏览: 52
好的,下面是一个简单的可左右拖动列宽的表格代码示例,同时也带上了一些基本的样式: HTML: ```html <table id="myTable"> <thead> <tr> <th>Header 1</th> <th>Header 2</th> <th>Header 3</th> </tr> </thead> <tbody> <tr> <td>Row 1, Col 1</td> <td>Row 1, Col 2</td> <td>Row 1, Col 3</td> </tr> <tr> <td>Row 2, Col 1</td> <td>Row 2, Col 2</td> <td>Row 2, Col 3</td> </tr> <tr> <td>Row 3, Col 1</td> <td>Row 3, Col 2</td> <td>Row 3, Col 3</td> </tr> </tbody> </table> ``` CSS: ```css table { border-collapse: collapse; width: 100%; } th, td { padding: 8px; text-align: left; } thead { background-color: #f2f2f2; } th { background-color: #e6e6e6; } td { border-bottom: 1px solid #ddd; } /* 定义可拖动的列 */ .col-resize { width: 8px; cursor: col-resize; position: absolute; top: 0; right: 0; bottom: 0; z-index: 10; -moz-user-select: none; -webkit-user-select: none; user-select: none; } /* 定义拖动列时的样式 */ .col-resize:hover { background-color: #f4f4f4; } ``` JavaScript: ```javascript // 获取表格元素 var table = document.getElementById("myTable"); // 获取表头元素 var headers = table.getElementsByTagName("th"); // 循环遍历所有表头 for (var i = 0; i < headers.length; i++) { // 定义变量,用于存储当前列的宽度 var currentWidth; // 创建一个 div 元素,用于拖动改变列宽 var div = document.createElement("div"); // 给 div 元素添加自定义类名 div.className = "col-resize"; // 给 div 元素添加事件监听器,用于处理拖动事件 div.addEventListener("mousedown", function(event) { // 阻止默认事件 event.preventDefault(); // 将当前列的宽度存储到变量中 currentWidth = this.parentNode.offsetWidth; // 将当前列的索引存储到变量中 var columnIndex = Array.prototype.indexOf.call(this.parentNode.parentNode.children, this.parentNode); // 将鼠标按下事件添加到 document 上,用于处理拖动过程中的事件 document.addEventListener("mousemove", mousemove); // 将鼠标抬起事件添加到 document 上,用于处理拖动结束后的事件 document.addEventListener("mouseup", mouseup); // 定义一个鼠标移动事件处理函数 function mousemove(event) { // 计算拖动距离 var diff = event.pageX - currentWidth; // 设置当前列的宽度为拖动距离 headers[columnIndex].style.width = diff + "px"; } // 定义一个鼠标抬起事件处理函数 function mouseup(event) { // 将鼠标移动事件从 document 上移除 document.removeEventListener("mousemove", mousemove); // 将鼠标抬起事件从 document 上移除 document.removeEventListener("mouseup", mouseup); } }); // 将 div 元素添加到当前表头元素的子元素列表中 headers[i].appendChild(div); } ``` 这段代码使用了原生 JavaScript 实现了可左右拖动列宽的表格,并使用 CSS 添加了一些基本的样式。当鼠标按下拖动列宽的时候,通过添加事件监听器处理鼠标移动和抬起事件,并计算出拖动距离来改变列的宽度。

相关推荐

最新推荐

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的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。