jquery實現(xiàn)拖拽table表頭改變列寬
本文實例為大家分享了jquery實現(xiàn)拖拽table表頭改變列寬的具體代碼,供大家參考,具體內(nèi)容如下
效果:

直接上代碼,有注釋:
<!DOCTYPE html>
<html>
<head>
? ? <style>
? ? ? ? table, td, th {
? ? ? ? ? ? border: 1px solid #ddd;
? ? ? ? ? ? text-align: left;
? ? ? ? }
? ? ? ? table {
? ? ? ? ? ? border-collapse: collapse;
? ? ? ? ? ? width: 100%;
? ? ? ? ? ? table-layout: fixed;
? ? ? ? }
? ? ? ? th, td {
? ? ? ? ? ? padding: 5px;
? ? ? ? ? ? position: relative;
? ? ? ? ? ? user-select: none;
? ? ? ? ? ? /*text-overflow: ellipsis;*/
? ? ? ? ? ? word-break: break-all;
? ? ? ? }
? ? ? ? .th-sisehandler {
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? right: -0.5px;
? ? ? ? ? ? top: 0;
? ? ? ? ? ? z-index: 1;
? ? ? ? ? ? width: 5px;
? ? ? ? ? ? height: 100%;
? ? ? ? ? ? padding-left: 4px;
? ? ? ? ? ? cursor: col-resize;
? ? ? ? }
? ? ? ? .th-sisehandler::after {
? ? ? ? ? ? content: '';
? ? ? ? ? ? display: block;
? ? ? ? ? ? width: 10px;
? ? ? ? ? ? background-color: #4CAF50; /*演示為了看效果加上的,可以去掉*/
? ? ? ? ? ? height: 100%;
? ? ? ? }
? ? ? ? .siselayer {
? ? ? ? ? ? position: fixed;
? ? ? ? ? ? left: 0;
? ? ? ? ? ? top: 0;
? ? ? ? ? ? right: 0;
? ? ? ? ? ? bottom: 0;
? ? ? ? ? ? z-index: 9999;
? ? ? ? ? ? background-color: #4445a049; /*演示為了看效果加上的,可以去掉*/
? ? ? ? ? ? cursor: col-resize;
? ? ? ? }
? ? </style>
? ? <meta charset="UTF-8">
? ? <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div style="width: 600px;overflow: auto">
? ? <table>
? ? ? ? <tr>
? ? ? ? ? ? <th width="150">Firstname</th>
? ? ? ? ? ? <th width="150">Lastname</th>
? ? ? ? ? ? <th width="150">Savings</th>
? ? ? ? </tr>
? ? ? ? <tr>
? ? ? ? ? ? <td>Bill</td>
? ? ? ? ? ? <td>Gates</td>
? ? ? ? ? ? <td>$100</td>
? ? ? ? </tr>
? ? ? ? <tr>
? ? ? ? ? ? <td>Steve</td>
? ? ? ? ? ? <td>Jobs</td>
? ? ? ? ? ? <td>$150</td>
? ? ? ? </tr>
? ? ? ? <tr>
? ? ? ? ? ? <td>Elon</td>
? ? ? ? ? ? <td>Musk</td>
? ? ? ? ? ? <td>$300</td>
? ? ? ? </tr>
? ? ? ? <tr>
? ? ? ? ? ? <td>Mark</td>
? ? ? ? ? ? <td>Zuckerberg</td>
? ? ? ? ? ? <td>$250</td>
? ? ? ? </tr>
? ? </table>
</div>
<script>
? ? $("th").mouseover(function (e) {
? ? ? ? if (($(this).find("div").length <= 0)) {
? ? ? ? ? ? //1.鼠標移動到表頭上時,在th內(nèi)部添加一個div 元素,用于處理后續(xù)拖動事件
? ? ? ? ? ? $(this).append("<div class='th-sisehandler'></div>")
? ? ? ? ? ? //2.處理上面添加的元素的鼠標按下事件
? ? ? ? ? ? $(".th-sisehandler").mousedown(function (evt) {
? ? ? ? ? ? ? ? //3.在添加的元素上按下時,記錄下當前的th表頭
? ? ? ? ? ? ? ? let dragTh = $(this).parent()
? ? ? ? ? ? ? ? //4.記錄按下時的鼠標位置
? ? ? ? ? ? ? ? let oldClientX = evt.clientX;
? ? ? ? ? ? ? ? //5.獲取當前鼠標按下時的表頭的寬度
? ? ? ? ? ? ? ? let oldWidth = dragTh.width();
? ? ? ? ? ? ? ? /*6.添加一個全局layer層,用于處理鼠標按下時鼠標移動事件,因為不能在第一步添加的元素上處理鼠標移動事件,添加的元素太小,
? ? ? ? ? ? ? ? ? ? 鼠標容易跑出范圍,就捕獲不到后續(xù)事件
? ? ? ? ? ? ? ? ? ? 所以添加一個全局的遮罩層,捕獲鼠標移動事件。
? ? ? ? ? ? ? ? ?*/
? ? ? ? ? ? ? ? let changeSizeLayer = $('<div class="siselayer"></div>');
? ? ? ? ? ? ? ? $("body").append(changeSizeLayer);
? ? ? ? ? ? ? ? changeSizeLayer.on('mousemove', function (evt) {
? ? ? ? ? ? ? ? ? ? //7.處理遮罩層的鼠標移動事件,計算新的表頭寬度
? ? ? ? ? ? ? ? ? ? var newWidth =evt.clientX - oldClientX + oldWidth;
? ? ? ? ? ? ? ? ? ? //設(shè)置新的寬度
? ? ? ? ? ? ? ? ? ? dragTh.attr('width',Math.max(newWidth,1));
? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? changeSizeLayer.on('mouseup', function (evt) {
? ? ? ? ? ? ? ? ? ? //8.鼠標按鍵復(fù)位時,要清楚遮罩層
? ? ? ? ? ? ? ? ? ? changeSizeLayer.remove();
? ? ? ? ? ? ? ? ? ? dragTh.find('.th-sisehandler').remove();
? ? ? ? ? ? ? ? });
? ? ? ? ? ? })
? ? ? ? }
? ? ? ? $(this).mouseleave(function () {
? ? ? ? ? ? //9.鼠標離開表頭時,要移除第一步添加的div
? ? ? ? ? ? $(this).find("div").remove()
? ? ? ? })
? ? })
</script>
</body>
</html>以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jquery實現(xiàn)ajax提交form表單的方法總結(jié)
本篇文章主要是對jquery實現(xiàn)ajax提交form表單的方法進行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-03-03
jQuery使用zTree插件實現(xiàn)樹形菜單和異步加載
這篇文章主要介紹了jQuery使用zTree插件實現(xiàn)樹形菜單和異步加載的相關(guān)方法,感興趣的小伙伴們可以參考一下2016-02-02
jQuery實現(xiàn)調(diào)整表格單列順序完整實例
這篇文章主要介紹了jQuery實現(xiàn)調(diào)整表格單列順序的方法,結(jié)合完整實例形式分析了jQuery響應(yīng)鼠標事件及動態(tài)操作頁面元素的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-06-06
jQuery動態(tài)添加.active 實現(xiàn)導航效果代碼思路詳解
這篇文章主要介紹了jQuery動態(tài)添加.active 實現(xiàn)導航效果代碼思路詳解,需要的朋友可以參考下2017-08-08
jquery簡單實現(xiàn)網(wǎng)頁層的展開與收縮效果
這篇文章主要介紹了jquery簡單實現(xiàn)網(wǎng)頁層的展開與收縮效果的方法,涉及jquery中toggle結(jié)合animate方法操作頁面元素屬性的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下2015-08-08
jQuery使用load()方法載入另外一個網(wǎng)頁文件內(nèi)的指定標簽內(nèi)容到div標簽的方法
這篇文章主要介紹了jQuery使用load()方法載入另外一個網(wǎng)頁文件內(nèi)的指定標簽內(nèi)容到div標簽的方法,涉及jQuery中l(wèi)oad方法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03

