我們都知道普通的HTML自帶的功能相對有限,很多復雜的交互式場景,如果手動去寫功能的話會非常的復雜,而且可擴展性差,就拿HTML表格來說,對于初學者或者對于復雜的拖拽式交互編程不熟悉的話會很浪費時間,因此今天就介紹一個第三方的插件——Table-draagger,來輕松實現類似的功能。Table-draagger是用于構建可重排序的拖放表的極簡主義純Javascript庫!
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); });
你可以在不設置任何參數的情況下使用默認的拖拽和排序方式,當然以下是你可以配置的選項:
1、將mode設置為column,用戶拖動和排序表的列
2、將mode設置為row,用戶拖動并排序表的行
3、設置mode為free,用戶根據點擊后鼠標移動的方向拖動行或列。注意,必須在自由模式下指定dragHandler。
dragHandler是表中的拖動句柄選擇器默認情況下,在列模式下,dragHandler是表的第一行;在行模式下,則是第一列。
在行模式下將onlyBody設置為true時,用戶只能在tbody中提升行。
下面是返回對象的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!~
計思路: 首先,利用requests模塊請求html頁面,獲取HTML頁面內容;其次,利用bs4模塊中BeautifulSoup對象,解析HTML得到想要的信息; 再次利用pandas進行數據處理
安裝所依賴模塊:
pip install requests(發get請求)
pip install bs4(解析網頁,提取指定數據的)
pip install pandas(數據處理)
pip install lxml(HTML/XML的解析器)
pip install openpyxl(excel操作)
圖1
我們以抓取國家重點學科學校排名為例,數據源為http://www.chinadegrees.cn/xwyyjsjyxx/xwbl/zdjs/zdxk/zdxkmd/lsx/266612.shtml
具體思路
第一步:通過requests獲取頁面html內容
第二步:利用bs4模塊中BeautifulSoup對象,解析HTML,獲取table標簽的內容,解析為純文本
BeautifulSoup對象具體使用見https://blog.csdn.net/qq_21933615/article/details/81171951
第三步:利用pands數據處理及結果輸出結果到excel
打開excel,大功告成
.表格的制作
1、表格元素–<table>
表格中的行–<tr>
表格中的列–<td>
表格中的表頭–【居中/加粗】
table標記的邊框–border
table標記的寬度–width
table標記的高度–height
table標記的水平對齊方式–align
table標記的表格背景色–bgcolor
table標記的表格邊框色–bordercolor
table標記的表格中的內容與邊框之間的距離–cellpadding
table標記的表格中的邊框與邊框之間的距離–cellspacing【默認是1px】
tr標記的align屬性–設置當前行的水平對齊方式
tr標記的bgcolor屬性–設置當前行的背景色
tr標記的valign屬性–設置當前行的垂直對齊方式【top/middle/bottom】
td標記的align屬性–設置當前列的水平對齊方式
td標記的bgcolor屬性–設置當前列的背景色
td標記的valign屬性–設置當前列的垂直對齊方式【top/middle/bottom】
合并單元格
水平方向合并單元格–跨列—colspan
以下是計算器的控制面板代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>計算器的控制面板</title>
</head>
<body>
<table border="1" cellspacing="10px" cellpadding="20px"
align="center" bgcolor="aliceblue">
<tr><td colspan="5" height="40px" align="right"><font size="7"><b>0</b></font></td></tr>
<tr align="center">
<td>MC</td>
<td>MR</td>
<td>MS</td>
<td>M+</td>
<td>M-</td>
</tr>
<tr align="center">
<td><-</td>
<td>CE</td>
<td>C</td>
<td>+/-</td>
<td>√</td>
</tr>
<tr align="center">
<td>7</td>
<td>8</td>
<td>9</td>
<td>/</td>
<td>%</td>
</tr>
<tr align="center">
<td>4</td>
<td>5</td>
<td>6</td>
<td>*</td>
<td>1/x</td>
</tr>
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
<td>-</td>
<td rowspan="2" bgcolor="yellow">=
</td>
</tr>
<tr align="center">
<td colspan="2">0</td>
<td>.</td>
<td>+</td>
</tr>
</table>
</body>
</html>
看成品:
2. 列表元素
2.1 有序列表
ol—有序列表
li—列表中的每一項【條目】
默認的標志是有順序的數字
我們可以通過ol的type屬性來修改標志
1–有順序的數字
a–有順序的小寫字母
A–有順序的大寫字母
i–有順序的小寫羅馬數字
I–有順序的大寫羅馬數字
start屬性設置書順序的開始值
2.2 無序列表
ul—無序列表
li—列表中的每一項【條目】
默認的標志是實心點
我們可以通過ul的type屬性來修改標志
circle–圓形【。】
disc----實心點[默認]
square–正方形
none–沒有標志
2.3 自定義列表
dl—自定義列表
dt—自定義列表的頭
dd—子項目
以下是有序,無序,和自定義列表
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>列表</title>
</head>
<body>
<ul type="none">
<li>無序列表</li>
<li>無序列表</li>
<li>無序列表</li>
</ul>
<ol type="A">
<li>有序列表</li>
<li>有序列表</li>
<li>有序列表</li>
</ol>
<dl>
<dt>自定義列表</dt>
<dt>自定義列表</dt>
<dt>自定義列表</dt>
</dl>
</body>
</html>
3. 表單<form>
主要負責采集信息的,可以將采集的信息提交。
form的屬性
action—指定表單數據的后端處理程序
method----指定表單數據的提交方式【get[默認]/post】
get提交數據會將被處理的數據跟隨在請求地址之后
被提交的數據255個字符
https://www.baidu.com/s?&wd=html
post提交數據會將被處理的數據封裝到http協議的頭
https://www.baidu.com/s
被提交的數據沒有限制
通常情況下提交文件只能用post
enctype屬性規定在將表單數據發送到服務器之前如何對其進行編碼。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<table border="1" align="center" cellpadding="20px" cellspacing="0">
<tr>
<td>application/x-www-form-urlencoded</td>
<td>在發送前對所有字符進行編碼(默認)。</td>
</tr>
<tr>
<td>multipart/form-data</td>
<td>不對字符編碼。當使用有文件上傳控件的表單時,該值是必需的。
</td>
</tr>
<tr>
<td>text/plain</td>
<td>將空格轉換為 "+" 符號,但不編碼特殊字符。</td>
</tr>
</table>
</body>
</html>
表單元素
input 文本框/密碼框/單選按鈕/復選框…
seletc 下拉列表
textarea 文本域—富文本編輯器
*請認真填寫需求信息,我們會在24小時內與您取得聯系。