js与jquery实例-拖动改变列宽和行高

news/2024/5/2 13:05:19/文章来源:https://www.cnblogs.com/machangwei-8/p/16724479.html

 

如何通过javascript或者jquery实现改变表格宽度或者行高的功能?今天就把这个功能代码分享给大家,绝对原创哦,代码少而且易懂。先看效果图:

 

 

html结构:

html结构:<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8"><title>table</title><script src="./jquery-1.12.4.min.js"></script><style>table th{cursor:col-resize;background:rgb(204,215,255);}</style>
</head>
<body><table id="tb1" cellspacing="0" cellpadding="2" width="100%" border="1"><tbody><tr><th>编号</th><th>名称</th><th>英文名</th><th>上线时间</th><th>主要功能</th><th>备注</th><th>网址</th><th>大小</th></tr><tr><td>01</td><td>乐之者java</td><td>lzzjava</td><td>2017-08-06</td><td>java相关的原创视频与文章</td><td>网站</td><td>http://www.roadjava.com/</td><td>-</td></tr><tr><td>02</td><td>乐之者内容管理系统</td><td>lzzcms</td><td>2017-08-06</td><td>cms类软件</td><td>软件</td><td>-</td><td>几十兆吧</td></tr><tr><td>01</td><td>乐之者java</td><td>lzzjava</td><td>2017-08-06</td><td>java相关的原创视频与文章</td><td>网站</td><td>http://www.roadjava.com/</td><td>-</td></tr><tr><td>02</td><td>乐之者内容管理系统</td><td>lzzcms</td><td>2017-08-06</td><td>cms类软件</td><td>软件</td><td>-</td><td>几十兆吧</td></tr></tbody></table>
</body>
</html>

 


JavaScript与jquery代码:

<script>//js实现改变宽度var resizeTd; var table = document.getElementById("tb1");for (j = 0; j < table.rows[0].cells.length; j++) {table.rows[0].cells[j].onmousedown = function (e) {if (this.offsetWidth-e.offsetX< 10) {resizeTd = this;//保存下要操作的列resizeTd.initClientX = e.clientX;//保存下鼠标按下时鼠标相对该单元格x方向的偏移resizeTd.initWidth = resizeTd.offsetWidth;//保存下该单元格的宽度
            }};table.rows[0].cells[j].onmousemove = function () {//更改鼠标样式if (this.offsetWidth-event.offsetX<10){this.style.cursor = 'col-resize';}else{this.style.cursor = 'default';}};}document.onmouseup = function () {//不需要写在上边的for循环里面resizeTd = null;};document.onmousemove = function (evt) {if(resizeTd){    if(resizeTd.initWidth+(evt.clientX-resizeTd.initClientX)>0){resizeTd.width=resizeTd.initWidth+(evt.clientX-resizeTd.initClientX);}}};//jquery实现改变高度var resizeTr;$("tr").mousedown(function(e){//鼠标按下时初始化当前要操作的行if($(this).outerHeight()-e.offsetY<10){resizeTr=this;resizeTr.initClientY=e.clientY;resizeTr.initHeight=$(this).outerHeight();}});$(document).mouseup(function(){//鼠标抬起时置空当前操作的行resizeTr=null;});$("tr").mousemove(function(evt){ //鼠标在接近行底部时改变形状if($(this).outerHeight()-evt.offsetY<10){$(this).css("cursor","row-resize");}else{$(this).css("cursor","default");}});//如果鼠标移动事件绑定在tr上,当移动过快时会导致tr的高度变化跟不上鼠标的移动变化
    $(document).mousemove(function(evt){if(resizeTr){    if(resizeTr.initHeight+(evt.clientY-resizeTr.initClientY)>0){$(resizeTr).outerHeight(resizeTr.initHeight+(evt.clientY-resizeTr.initClientY));}}});
</script>

 


值得指出的几个地方需要注意下:

分清楚几个概念,即事件对象event的x、clientX、pageX、screenX、offsetX(当然y,clientY,pageY,screenY,offsetY类似)以及HtmlElement对象的offsetWidth、offsetHeight、offsetLeft、offsetTop、scrollWidth、scrollHeight、scrollLeft、scrollTop是理解本程序的关键。

mousemove事件在改变宽度或高度的时候不要绑定在tr元素上,要绑定在document上,不然当鼠标移动过快时,宽度或者高度会跟不上鼠标移动的速度,最终不会发生变化。

 

 

鼠标变成两条竖线一条横线时可以拖动表格宽度,当宽度太窄导致内容换行时表格整体高度发生变化,但是表格还是占据100%宽度的

 

 

 


原文链接:https://blog.csdn.net/xiaozhuangyumaotao/article/details/105588448

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_12751.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最适合从事游戏建模这类高薪职业的是这些人,快来看看有你吗?

随着游戏行业的发展&#xff0c;游戏建模受到越来越多的人的关注&#xff0c;那游戏建模的学习适用于什么样的人群呢&#xff1f;今天就来介绍一下吧 01 大学毕业&#xff0c;就业方向不明确 大学期间&#xff0c;本专业知识没有深度掌握&#xff0c;无法从事本专业相关的工作…

Vue3 i18国际化

本文参考了两片文章如下&#xff0c;博文原创&#xff0c;转载附上本博文链接即可 1、基于Vue3.0和ElementPlus开发后台框架(loginbacki18n)_zzzzzzzzzz的博客-CSDN博客_vue3后台框架 &#xff08;这个有点没看懂&#xff09; 2、https://www.jianshu.com/p/fa85595642cd&am…

盘点一个Python网络爬虫实战问题

大家好,我是皮皮。 一、前言 前几天在Python铂金交流群【红色基因代代传】问了一个Python网络爬虫的问题,提问截图如下:代码截图如下:报错截图如下:要么就是原始网页没那么多数据,要么就是你自己取到的数据没那么多,有的有排名,有的没有,可以考虑加个try异常处理。首先…

基于单片机的老人防摔GSM报警

目录 1 跌倒报警器研究现状........................................................................................ 8 2.1单片机的功能及最小系统的电路设计.................................................. 9 内置闪存存储器......................................…

雷鸟乐队 VoxEdit 大赛启动啦,24,500 SAND 奖励等你们来赢取!

是鸟……是飞机……是雷鸟&#xff01; 如果你们选择接受它&#xff0c;那么你们的任务是创造一个受 1960 年代标志性电视剧启发的车辆资产&#xff08;汽车、轮船摩托车等&#xff09;。 不要使用雷鸟的 logo 或对现有的雷鸟作品进行二次创作。 24,500 SAND 将按以下方式分配给…

手机远程控制之scrcpy(一)

有线投屏 无线投屏 屏幕录制 常见问题 错误检查 ERROR: Exception on thread 投屏模糊 scrcpy 是免费开源的投屏软件&#xff0c;支持将安卓手机屏幕投放在 Windows、macOS、GNU/Linux 上&#xff0c;并可直接借助鼠标在投屏窗口中进行交互和录制。 市面上主流的多屏协…

机器人地面站-[QGroundControl源码解析]-[7]-[api]

目录 前言 一.QmlComponentInfo 二.QGCSettings 三.QGCOptions 四.QGCCorePlugin 总结 前言 上篇讲完了Analyize中内容&#xff0c;主要对应界面上AnalyzeTool模块的功能。本篇我们来过api文件夹下的代码。api下的代码主要实现了qgc的核心接口&#xff0c;应用所有的选项…

为什么2022年7月的PMP考试通过率这么低?

2022年 7月考的是新考纲&#xff0c;有50%的敏捷题型&#xff0c;考题相对旧考纲灵活很多&#xff0c;混合型项目内容较多&#xff0c;要是不好好备考&#xff0c;很有可能挂哦&#xff0c;所以 PMI 官方都发布通知&#xff0c;7、8、9 月没考过的考生可以免费重考一次。 但是&…

rk3368-双以太网口

RK芯片以太网补丁android5-12 就打一个补丁就行, 1.\sdk\device\rockchip\common\init.rockchip.rc service dhcpcd_eth1 /system/bin/dhcpcd -aABDKLclass late_startdisabledoneshot 2.添加文件EthernetNetworkFactoryExt.java 给eth1使用:sdk\frameworks\opt\net\ethern…

docker images 命令详解

文章目录一、docker images 命令选项二、docker images 使用实例2.1 显示最近创建的镜像2.2 根据镜像名和tag值查询2.3 查询结果中显示完整的镜像ID2.4 显示镜像的摘要信息2.5 显示未打tag值的镜像2.6 删除未打tag值额镜像2.7 根据标签筛选镜像2.8 根据时间筛选镜像2.9 通过模糊…

uniapp离线打包安卓APP全过程

1、首先就是下载Android Studio&#xff0c;官方下载 就好了。 2、然后就是使用 HBuilderX 离线打包,生成本地打包App资源。 打包好的文件路径在unpackage>resources>__UNI__XXX&#xff0c;这里的这个__UNI__XXX就待会需要的。 3、再准备HBuilder最新的SDK下载好 原生开…

arcgis runtime加载自定义控件并和地图铆钉一起

例如上图这个节点&#xff0c;无论移动还是缩放位置均固定 在Arcgisruntime 中有一个附加属性esri:GeoView.ViewOverlayAnchor"{Binding GeometryFrom}" Bingding里面绑定的就是铆钉的位置&#xff0c;具体用法如下&#xff1a; public partial class MainWindow :…

【黑马程序员 C++教程从0到1入门编程】【笔记5】C++核心编程(类和对象——继承、多态)

黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难 文章目录4.6 继承4.6.1 继承的基本语法普通实现&#xff1a;继承实现&#xff1a;总结&#xff1a;派生类中的成员&#xff0c;包含两大部分&#xff1a;4.6.2 继承方式&#xff08;继承的语法&#xff1a;class 子类 :…

SpringSecurity(二)- SpringSecurity Web权限方案

文章目录一、SpringSecurity Web权限方案1. 设置登录系统的账号、密码方式一&#xff1a;通过配置文件方式二&#xff1a;通过配置类方式三&#xff1a;自定义编写类实现接口2. 实现数据库认证来完成用户登录&#xff08;1&#xff09;准备sql&#xff08;2&#xff09;添加依赖…

cookie/localStorage /sessionStorage的区别

1、webStorage webStorage是HTML5引入的一个重要的功能&#xff0c;在前端开发的过程中会经常用到&#xff0c;它可以在客户端本地存储数据&#xff0c;类似cookie&#xff0c;但其功能却比cookie强大的多。cookie的大小只有4Kb左右&#xff08;浏览器不同&#xff0c;大小也不…

闲话 22.9.23

闲话 about 不知道写什么 | 不闲的闲话 about 杂题闲话 预告一下 继FFT FWT FMT后又出现了FDT(F的T) \(\text{Z}\color{red}{\text{hou}}\) 喜欢在有着秋日气氛的校园里面散步 \(\huge Cdsidi\)喜欢吃七分饱而且巨所以\(_水\)管子炸了 不知道说什么东西 不知道我在说什么?你…

喹啉腈磺酸盐QM-SO3,1800102-18-4活体荧光监测在生物研究中的重要性

QM-SO3 高保真生理过程的活体荧光监测在disease diagnosis和生物学研究中至关重要&#xff0c;但由于聚集引起的猝灭&#xff08;ACQ&#xff09;和短波荧光&#xff0c;它面临着极大的挑战。High performance、长波长聚集诱导发射&#xff08;AIE&#xff09;荧光团的发展对 光…

【数据结构与算法】第九篇:哈希表原理

知识导航一. HashMap的引入背景二. HashMap原理三.哈希冲突&#xff08;Hash Collision&#xff09;1.Hash Collision的造成原因2Hash Collision解决方法三.哈希函数原理1.哈希函数的转换机制2.Integer 的哈希值计算3.Float 的哈希值计算4.Long 的哈希值计算5.Double 的哈希值计…

SpringBoot之基础Web开发

现在&#xff0c;我们已经能自行完成SpringBoot的初级项目搭建了&#xff0c;接下来看如何实现一些Web开发中的基础功能。 先看项目完整的目录结构&#xff1a; 返回Json数据 创建model文件夹&#xff0c;并新建Person类&#xff0c;代码如下&#xff1a; 复制代码 package…

ArchLinux 的vm-tools无法正常使用的解决办法

对于安装于VMware虚拟机中的Arch&#xff0c;如果能够实现宿主机和虚拟机之间文件的直接复制粘贴将能大大的提高我们的工作效率。要实现上述功能首先要安装open-vm-tools&#xff0c;可是你虚拟中的open-vm-tools也正常安装了却还是无法在宿主机和虚拟机之间进行复制粘贴&#…