整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          以優雅的方式實現HTML表格的拖拽和排序功能-Table-draagger

          我們都知道普通的HTML自帶的功能相對有限,很多復雜的交互式場景,如果手動去寫功能的話會非常的復雜,而且可擴展性差,就拿HTML表格來說,對于初學者或者對于復雜的拖拽式交互編程不熟悉的話會很浪費時間,因此今天就介紹一個第三方的插件——Table-draagger,來輕松實現類似的功能。Table-draagger是用于構建可重排序的拖放表的極簡主義純Javascript庫!



          Github

          https://github.com/sindu12jun/table-dragger


          特征

          Table-draagger因為其以下幾個特征而讓拖拽和排序的實現變得如此簡單:

          • 非常容易配置
          • 能夠同時對列或行進行排序
          • 排序時動畫流暢
          • 沒有臃腫的依賴
          • 提供觸摸事件(意味著在觸摸設備可以實現一些你想要的功能)


          安裝使用

          • 安裝

          可以在npm上獲得它:

          npm install table-dragger --save
          

          或者引用壓縮的js文件

          <script src="../node_modules/table-dragger/dist/table-dragger.min.js"></script>
          

          或者嘗試開發中的不穩定版本

          npm install table-dragger@next --save
          

          • 快速入門

          請看以下代碼:

          import tableDragger from 'table-dragger'
          tableDragger(el, options?)
          

          <table id="table">
          <thead>
          <tr>
          <th class='handle'>header1</th>
          <th class='handle'>header2</th>
          </tr>
          </thead>
          <tbody>
          <tr>
          <td>conten1</td>
          <td>conten2</td>
          </tr>
          </tbody>
          </table>
          

          var el = document.getElementById('table');
          var dragger = tableDragger(el, {
          mode: 'row',
          dragHandler: '.handle',
          onlyBody: true,
          });
          dragger.on('drop',function(from, to){
          console(from);
          console(to);
          });
          

          你可以在不設置任何參數的情況下使用默認的拖拽和排序方式,當然以下是你可以配置的選項:

          • options.mode

          1、將mode設置為column,用戶拖動和排序表的列

          2、將mode設置為row,用戶拖動并排序表的行

          3、設置mode為free,用戶根據點擊后鼠標移動的方向拖動行或列。注意,必須在自由模式下指定dragHandler。

          • options.dragHandler

          dragHandler是表中的拖動句柄選擇器默認情況下,在列模式下,dragHandler是表的第一行;在行模式下,則是第一列。

          • options.onlyBody

          在行模式下將onlyBody設置為true時,用戶只能在tbody中提升行。

          • API

          下面是返回對象的API


          tableDragger(document.querySelector('#event-table'), { mode: 'free', dragHandler: '.handle', onlyBody: true })
          .on('drag', () => {
          console.log('drag');
          })
          .on('drop', (from, to, el, mode) => {
          console.log(`drop ${el.nodeName} from ${from} ${mode} to ${to} ${mode}`);
          })
          .on('shadowMove', (from, to, el, mode) => {
          console.log(`move ${el.nodeName} from ${from} ${mode} to ${to} ${mode}`);
          })
          .on('out', (el, mode) => {
          console.log(`move out or drop ${el.nodeName} in mode ${mode}`);
          });
          


          總結

          Table-draagger為我們節省了很多手動封裝表格排序和拖拽功能的時間,當然目前很多第三方框架已經實現了類似的功能,這更適用于原生的html表格,你還可以通過一些手段記憶用戶拖拽,這只是其中一種思路,Enjoy it!~

          篇文章介紹了div標簽的作用,我們這篇文章主要來看下過氣表格標簽table的語法與使用。

          1)table的曾經

          在div沒有出現之前,table曾是做網頁的中堅力量。記得在開始學網頁的時候,div是神馬,我不造呀!做網頁還用div嗎,就只用table就可以了,各種表格嵌套加嵌套,一個網頁就拼湊出來了。但table寫的布局頁面做維護就比較令人頭痛欲裂了。因為table是一層一層嵌套,標簽量冗余過多。所以修改起來就是動一發而牽全身。維護起來格外麻煩,往往是拆東墻補西墻。所以它后來就慢慢被div所替代。但是在數據列表上還是用table形式來寫比較的合理,所以現在table多用于網站后臺的表格數據處理中。

          2)表格標簽table使用

          簡單的表格由table元素以及一個或多個tr(行標簽)、th(表頭單元格標簽)、td(普通單元格標簽)等標簽所組成,當然復雜的表格還包括caption(表格標題)、col(定義列)、colgroup(對表格中的列進行組合)、thead(組合表頭的內容)tbody(組合表格的主題內容)、tfoot(組合表格的腳注內容)等這里我們先簡單了解下即可。

          定義表格:<table></table>

          創建表行:<tr></tr>

          創建列(單元格):<th></th>(表頭)、<td></td>(表格單元)

          注意:默認情況下,每行中的列數是統一的。

          比如我們想創建一個姓名、年齡、分數和日期的數據表格,并設置border為1,我們可以使用table來制作。具體的表格代碼如下圖所示:

          在網頁中呈現的效果就如下圖所示:

          3)為表格添加簡單樣式

          這時候有的人就會說了,為什么這個表格看起來這么奇怪,邊框都是有空隙的呢?我們只需要給表格添加一些特殊的樣式,即可制作一個比較漂亮好看的表格了。添加的樣式代碼:

          在網頁中呈現的效果就如下圖所示:

          現在我們的表格是不是看著比較的清新了,上面的css代碼中為表格添加了背景、邊框以及去掉了粗的邊線。具體的css代碼我們會在以后的課程中為大家介紹,大家在這里只需要知道并了解table標簽的作用以及使用就可以了。沒事可以多用table寫一寫表格,熟能生巧。

          附贈一句經典語錄:每天早上,你有兩個簡單的選擇:是睡回籠覺,還是起身追逐 夢想 。喜歡我的文章的小伙伴記得關注一下哦,每天將為你更新最新知識。

          天,小編為大家展示一下,用純table搭建頁面結構,實現QQ登陸頁(為初學者作參考,頁面結構搭建方式很多,這種基本上就只初學table才會用的)

          小編的素材

          上代碼截圖:

          有興趣的同學可以去試試吧。

          更多基礎練習案例,私信小編回復“html”獲得。


          主站蜘蛛池模板: 国产成人精品一区二区三区无码| 无码人妻精品一区二区蜜桃| 欧美日韩国产免费一区二区三区 | 亚洲一区免费视频| 视频一区在线播放| 久久久国产精品无码一区二区三区| 国产在线观看一区精品| 一区二区三区日本电影| 国产嫖妓一区二区三区无码| 中文字幕乱码一区久久麻豆樱花| 亚洲一区二区在线视频| 国产精品视频一区二区三区无码| 国产一在线精品一区在线观看| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲熟妇无码一区二区三区导航| 香蕉久久一区二区不卡无毒影院| 国产午夜福利精品一区二区三区 | 亚洲精品色播一区二区| 日本在线视频一区二区| 中文字幕日韩一区二区三区不卡| 亚洲福利视频一区| 精品国产福利一区二区| 中文字幕AV一区二区三区| 人妻在线无码一区二区三区| 亚洲av色香蕉一区二区三区蜜桃| 日韩一区二区三区射精| 精品无码国产AV一区二区三区 | 精品日韩在线视频一区二区三区 | 日韩精品一区二区三区中文版 | 亚洲成a人一区二区三区| 亚洲国产成人久久一区WWW| 激情内射亚州一区二区三区爱妻| 日韩制服国产精品一区| 91精品一区二区| 人妻少妇精品视频一区二区三区| 91视频国产一区| 一区二区三区波多野结衣| 国产探花在线精品一区二区| 亚洲宅男精品一区在线观看| 在线视频精品一区| 中文字幕一区在线播放|