使用jqueryUI实现自由调整表格列宽

  今天项目中需要插入表格,用Excel表格调整列宽时,想怎么拖就怎么拖,于是乎就让插入的表格也这么让人舒服。网上查找许久,没找到好用的方案。最后发现jQuery UI中的resizable()方法可以实现div的自由调整,既然可以在div上实现,那表格也应该没问题吧。于是就动手折腾,成功搞定。

代码详情:

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>表格列宽调整</title>
<link rel="stylesheet" href="${pageContext.request.contextPath }/css/jquery-ui.css">
<link rel="stylesheet" href="${pageContext.request.contextPath }/css/bootstrap.css">
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-ui.js"></script>

<style type="text/css">
    .tab_info {
        font-size: 13px;
        table-layout: fixed;
    }
    .tab_info th {
        background-color: #f5f5f5;
    }
    .tab_info td {
        overflow: hidden;
    }
    .ui-resizable {
        background-color: #fff;
    }
</style>
<script type="text/javascript">
    $(function() {
        $("th").resizable(); //调用方法,实现可自由调整
    });
</script>
</head>
<body>
    <table class="table table-bordered tab_info">
        <thead>
            <tr>
                <th>商品编号</th>
                <th>商品名称</th>
                <th>品牌</th>
                <th>型号</th>
                <th>规格</th>
                <th>单位</th>
                <th>进货价</th>
                <th>库存数量</th>
                <th>销售价格</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1051181502</td>
                <td>碧根果</td>
                <td>自产</td>
                <td>123</td>
                <td>1*500g</td>
                <td>包</td>
                <td>10</td>
                <td>10</td>
                <td>20</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

实现功能需引入jquery-ui.js 和 jquery-ui.css,因为resizable()方法会生成调用相应的class样式。

效果图如下:

为table加上 table-layout: fixed; 并为td加上overflow: hidden; 可实现隐藏列中超出内容。

调整功能是实现了,不过右下角的这个小三角就看着让人整个就不好了。于是查看源码,发现调用了resizable()之后是在th中生成了三个div,最后一个就是小三角的样式。

本来是想用js直接去除第三个div的,感觉还是从css中着手更合适些,于是就是查找了下resizable()的实现,找到了解决方案。

在jquery-ui.js中找到下面这段,将classes删除即可。最后小三角就没了。

 classes: {
            "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
        },
$.widget( "ui.resizable", $.ui.mouse, {
    version: "1.12.1",
    widgetEventPrefix: "resize",
    options: {
        alsoResize: false,
        animate: false,
        animateDuration: "slow",
        animateEasing: "swing",
        aspectRatio: false,
        autoHide: false,
        classes: {
            "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
        },

原文地址:https://www.cnblogs.com/qq545505061/p/9647867.html

时间: 2024-08-05 10:56:55

使用jqueryUI实现自由调整表格列宽的相关文章

表格列宽怎么设置都无效?(td内容自动换行问题)

有次设置表格列宽时,显示的实际宽度与设置的宽度不一致,且无规律变化.最后,在查找资料后发现,可能是td内容 自动换行 的问题.因为表格中的内容有中文.英文字母.还有数字,以及三者的各种组合,所以换行的方式不一致,导致列宽变化.(个人分析,不妥之处请拍砖.) 所以添加以下css可以解决问题: table{ word-break:break-all ; word-wrap:break-word } 说明: (1) word-break:break-all:截断单词进行换行. (2) word-wra

jQuery拖动调整表格列宽度-resizableColumns

实现鼠标可拖动调整表格列宽度 如图: 一.引入文件: <script src="/js/jquery-1.8.0.min.js" type="text/javascript"></script> <script src="/js/store.js" type="text/javascript"></script> <script src="/js/jquery.r

jQuery表格列宽可变,兼容firfox

本demo使用jQuery包,实现表格列宽可拖拽功能,并实现页面reset时的重新布局.使用jQuery,方便函数的调用,给要处理的表格添加id 后,直接调用$("#id").movedTh()即可方便实现,修改了firfox的兼容性. 代码如下: [javascript] view plaincopy <html> <head> <meta http-equiv="Content-Type" content="text/ht

jQuery可调整表和列宽插件-colResizable

最基本的例子 引入JS <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script> <script src="js/colResizable-1.6.js" type="text/javascript"></script> 1 2 TABLE <table class="table t

Excel快速删除空白行与调整行高列宽的方法,学会了很实用

Excel表格作为大家经常使用的办公文档,在使用的过程中我们也会遇到各种问题,比如常见的行高列宽的调整.空白行的删除的等等.今天小编就为大家带来了Excel快速删除空白行与行高列宽的方法,希望可以帮助到大家. 一:调整行高列宽 作为Excel表格最常见的问题之一,我们在办公中常用到的调整行高列宽的方法主要有两种,都非常的简单方便. 方法1: 第一种方法也是最简单的一种方法,把鼠标光标放置在行高或者是列宽线条上时,就会出现一个[黑色双箭头]的标志,点击即可拉动线条调整行高.列宽.(唯一的弊端是行高

[转]简单的动态修改RDLC报表页边距和列宽的方法

本文转自:http://star704983.blog.163.com/blog/static/136661264201161604413204/ 1.修改页边距 XmlDocument XMLDoc = new XmlDocument(); XMLDoc.Load(System.Windows.Forms.Application.StartupPath + @"\Report_try-2.rdlc"); XmlNamespaceManager xmn = new XmlNamespa

为表格添加可调整列宽功能

1.引入js架包 <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script> <script src="js/colResizable-1.6.js" type="text/javascript"></script> (该jar包是为表格添加列宽自定义功能) 2.table页面内容 <table

MS WORD 表格自动调整列宽,自动变漂亮,根据内容自动调整 .

在MS WORD中,当有大量的表格出现时,调整每个表格的的高和宽和大小将是一件非常累的事情,拖来拖去,非常耗时间,而且当WORD文档达到300页以上时,调整反应非常的慢,每次拖拉线后,需要等待一段时间其才完成调整,劳心劳力. 其实解决这个问题有一个很好的办法,MS WORD做的这个功能确实不错,有一定的智能性.这个功能就是表格的自动调整功能.表格的自动调整功能有根据内容调整表格和根据窗口调整表格. 一.表格根据内容自动调整 1.根据内容调整表格 主要利器之一,当表格比较凌乱,内容较少时,用它可以

从零开始学_JavaScript_系列(十)——dojo(3)(GRID表格创建、样式、列宽可变、排序、过滤器)

(34)gridx gridx系列插件并非和dojo的插件在一起 需要下载的请通过以下网址下载: http://oria.github.io/gridx/ 不过我也不太懂不同版本有什么区别(事实上我对gridx还属于新手水平) PS:dojo本身有dojox/grid插件,语法和gridx并不同,所以不能混用. PSS: 由于看这篇帖子的人,基本没办法自己和服务器/数据库互动,所以建议自己写一个json文件,然后get这个json文件(具体看之前的AJAX相关的,很简单,或者使用我下面给的例子也