Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
我們都知道普通的HTML自帶的功能相對有限,很多復(fù)雜的交互式場景,如果手動去寫功能的話會非常的復(fù)雜,而且可擴展性差,就拿HTML表格來說,對于初學(xué)者或者對于復(fù)雜的拖拽式交互編程不熟悉的話會很浪費時間,因此今天就介紹一個第三方的插件——Table-draagger,來輕松實現(xiàn)類似的功能。Table-draagger是用于構(gòu)建可重排序的拖放表的極簡主義純Javascript庫!
https://github.com/sindu12jun/table-dragger
Table-draagger因為其以下幾個特征而讓拖拽和排序的實現(xiàn)變得如此簡單:
可以在npm上獲得它:
npm install table-dragger --save
或者引用壓縮的js文件
<script src="../node_modules/table-dragger/dist/table-dragger.min.js"></script>
或者嘗試開發(fā)中的不穩(wěn)定版本
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); });
你可以在不設(shè)置任何參數(shù)的情況下使用默認的拖拽和排序方式,當(dāng)然以下是你可以配置的選項:
1、將mode設(shè)置為column,用戶拖動和排序表的列
2、將mode設(shè)置為row,用戶拖動并排序表的行
3、設(shè)置mode為free,用戶根據(jù)點擊后鼠標(biāo)移動的方向拖動行或列。注意,必須在自由模式下指定dragHandler。
dragHandler是表中的拖動句柄選擇器默認情況下,在列模式下,dragHandler是表的第一行;在行模式下,則是第一列。
在行模式下將onlyBody設(shè)置為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為我們節(jié)省了很多手動封裝表格排序和拖拽功能的時間,當(dāng)然目前很多第三方框架已經(jīng)實現(xiàn)了類似的功能,這更適用于原生的html表格,你還可以通過一些手段記憶用戶拖拽,這只是其中一種思路,Enjoy it!~
計思路: 首先,利用requests模塊請求html頁面,獲取HTML頁面內(nèi)容;其次,利用bs4模塊中BeautifulSoup對象,解析HTML得到想要的信息; 再次利用pandas進行數(shù)據(jù)處理
安裝所依賴模塊:
pip install requests(發(fā)get請求)
pip install bs4(解析網(wǎng)頁,提取指定數(shù)據(jù)的)
pip install pandas(數(shù)據(jù)處理)
pip install lxml(HTML/XML的解析器)
pip install openpyxl(excel操作)
圖1
我們以抓取國家重點學(xué)科學(xué)校排名為例,數(shù)據(jù)源為http://www.chinadegrees.cn/xwyyjsjyxx/xwbl/zdjs/zdxk/zdxkmd/lsx/266612.shtml
具體思路
第一步:通過requests獲取頁面html內(nèi)容
第二步:利用bs4模塊中BeautifulSoup對象,解析HTML,獲取table標(biāo)簽的內(nèi)容,解析為純文本
BeautifulSoup對象具體使用見https://blog.csdn.net/qq_21933615/article/details/81171951
第三步:利用pands數(shù)據(jù)處理及結(jié)果輸出結(jié)果到excel
打開excel,大功告成
.表格的制作
1、表格元素–<table>
表格中的行–<tr>
表格中的列–<td>
表格中的表頭–【居中/加粗】
table標(biāo)記的邊框–border
table標(biāo)記的寬度–width
table標(biāo)記的高度–height
table標(biāo)記的水平對齊方式–align
table標(biāo)記的表格背景色–bgcolor
table標(biāo)記的表格邊框色–bordercolor
table標(biāo)記的表格中的內(nèi)容與邊框之間的距離–cellpadding
table標(biāo)記的表格中的邊框與邊框之間的距離–cellspacing【默認是1px】
tr標(biāo)記的align屬性–設(shè)置當(dāng)前行的水平對齊方式
tr標(biāo)記的bgcolor屬性–設(shè)置當(dāng)前行的背景色
tr標(biāo)記的valign屬性–設(shè)置當(dāng)前行的垂直對齊方式【top/middle/bottom】
td標(biāo)記的align屬性–設(shè)置當(dāng)前列的水平對齊方式
td標(biāo)記的bgcolor屬性–設(shè)置當(dāng)前列的背景色
td標(biāo)記的valign屬性–設(shè)置當(dāng)前列的垂直對齊方式【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—列表中的每一項【條目】
默認的標(biāo)志是有順序的數(shù)字
我們可以通過ol的type屬性來修改標(biāo)志
1–有順序的數(shù)字
a–有順序的小寫字母
A–有順序的大寫字母
i–有順序的小寫羅馬數(shù)字
I–有順序的大寫羅馬數(shù)字
start屬性設(shè)置書順序的開始值
2.2 無序列表
ul—無序列表
li—列表中的每一項【條目】
默認的標(biāo)志是實心點
我們可以通過ul的type屬性來修改標(biāo)志
circle–圓形【。】
disc----實心點[默認]
square–正方形
none–沒有標(biāo)志
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>
主要負責(zé)采集信息的,可以將采集的信息提交。
form的屬性
action—指定表單數(shù)據(jù)的后端處理程序
method----指定表單數(shù)據(jù)的提交方式【get[默認]/post】
get提交數(shù)據(jù)會將被處理的數(shù)據(jù)跟隨在請求地址之后
被提交的數(shù)據(jù)255個字符
https://www.baidu.com/s?&wd=html
post提交數(shù)據(jù)會將被處理的數(shù)據(jù)封裝到http協(xié)議的頭
https://www.baidu.com/s
被提交的數(shù)據(jù)沒有限制
通常情況下提交文件只能用post
enctype屬性規(guī)定在將表單數(shù)據(jù)發(fā)送到服務(wù)器之前如何對其進行編碼。
<!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>在發(fā)送前對所有字符進行編碼(默認)。</td>
</tr>
<tr>
<td>multipart/form-data</td>
<td>不對字符編碼。當(dāng)使用有文件上傳控件的表單時,該值是必需的。
</td>
</tr>
<tr>
<td>text/plain</td>
<td>將空格轉(zhuǎn)換為 "+" 符號,但不編碼特殊字符。</td>
</tr>
</table>
</body>
</html>
表單元素
input 文本框/密碼框/單選按鈕/復(fù)選框…
seletc 下拉列表
textarea 文本域—富文本編輯器
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。