要:
本文探討了在前端開發中HTML5和CSS3表格屬性的應用與優化。首先介紹了HTML5中常用的表格元素和CSS3中豐富的表格樣式屬性,旨在幫助開發人員定制表格的外觀和樣式。其次,研究了表格結構的優化方法,包括語義化標簽的使用和表格標題的標記方式,以提高表格的可讀性和可維護性。隨后,介紹了表格樣式的優化方法,如邊框樣式、背景色和字體樣式等,通過合理應用這些屬性來美化表格。最后,研究了復雜表格結構的性能優化策略,包括延遲加載和使用虛擬滾動技術等,以提升表格的加載速度和渲染性能。本文的研究成果和主要貢獻為開發人員提供了關于HTML5和CSS3表格屬性的詳細說明和最佳實踐,以及進一步發展和優化表格的方向。
I. 引言
A. 研究背景和意義
隨著互聯網的迅速發展,前端開發在網頁設計和用戶體驗方面起著至關重要的作用。HTML和CSS作為前端開發的核心技術,對于構建具有良好交互性和可訪問性的網頁至關重要。而表格作為一種常見的信息展示方式,在網頁設計中占據著重要地位。然而,過去的HTML和CSS版本對表格的樣式定制和功能實現存在限制,因此HTML5和CSS3引入了更多的表格屬性和功能,使得開發人員能夠更加靈活地控制和優化表格。
本文旨在研究HTML5和CSS3在前端開發中的表格屬性的應用與優化。通過深入探索這些新的技術,我們可以更好地理解如何利用HTML5和CSS3優化和改進網頁中的表格設計,提高用戶體驗和頁面性能。
B. 目的和研究問題
本研究的目的是系統地探討HTML5和CSS3表格屬性在前端開發中的應用和優化方法,以及它們對網頁性能和用戶體驗的影響。具體而言,我們將關注以下幾個研究問題:
HTML5表格標簽的應用:研究如何使用HTML5中的新表格標簽(如<thead>、<tbody>和<tfoot>)來組織和結構化表格數據,并探討它們與傳統表格標簽的異同。
CSS3表格樣式的定制與優化:研究如何利用CSS3的新特性來美化和定制表格樣式,包括設置邊框和間距、跨行和跨列的合并與分割、單元格內容的對齊和格式化等。
響應式表格設計:研究如何利用HTML5和CSS3實現響應式表格設計,使表格在不同設備和屏幕尺寸下適配和顯示良好。
CSS3表格屬性的應用與實現:研究如何使用CSS3表格屬性來美化和裝飾表格,包括背景顏色和漸變效果、陰影和圓角邊框、圖標字體等。
復雜表格結構的性能優化與最佳實踐:研究如何優化復雜表格結構的加載速度和渲染性能,通過延遲加載、虛擬滾動等技術改善表格的交互體驗。
C. 論文結構概述
本論文將按照以下結構組織:
第II部分將介紹HTML5表格屬性的應用與實現。我們將深入探討HTML5中的新表格標簽,并探討如何組織和語義化表格內容。此外,還將討論如何利用HTML5的新特性實現響應式表格設計。
第III部分將重點關注CSS3表格屬性的應用與實現。我們將探討如何使用CSS3樣式定制表格的外觀,并實現排序、過濾和動畫效果。
第IV部分將討論復雜表格結構的性能優化與最佳實踐。我們將分析復雜表格結構對渲染性能的影響,并提出一些優化策略和技術來改善表格的加載速度和渲染性能。
第V部分將通過實證案例研究和代碼示例來驗證我們提出的方法和技術。我們將展示不同優化策略的效果,并分析它們的性能差異。
最后,我們將在第VI部分總結研究成果和主要貢獻,并討論研究的局限性和未來發展方向。
通過本研究,我們希望能夠為前端開發人員提供關于HTML5和CSS3表格屬性的應用與優化的指導,幫助他們設計和開發更高效、美觀和可訪問的網頁表格。同時,我們也希望能夠推動前端技術的發展,為改進用戶體驗和網頁性能做出貢獻。
II. HTML5 表格屬性的應用與實現
A. HTML5 表格標簽的基本介紹
HTML5引入了一些新的表格標簽,這些標簽提供了更好的語義化和結構化表格內容的方式。下面是一些常見的HTML5表格標簽:
<thead>:定義表格的表頭部分,通常包含列標題。
<tbody>:定義表格的主體部分,通常包含數據行。
<tfoot>:定義表格的頁腳部分,通常包含匯總或附加信息。
B. 表格內容的組織和結構化
HTML5的表格標簽使得表格內容的組織和結構化更加清晰和語義化。以下是一些有關表格內容組織和結構化的方法:
<thead>、<tbody> 和 <tfoot> 標簽的作用和用法
<thead> 標簽應放置在 <table> 標簽內,用于定義表格的表頭部分。
<tbody> 標簽應放置在 <table> 標簽內,用于定義表格的主體部分。
<tfoot> 標簽應放置在 <table> 標簽內,用于定義表格的頁腳部分。
使用這些標簽可以將表格內容分組,提高可讀性,并幫助屏幕閱讀器等輔助技術正確解析表格結構。
<th> 標簽的應用與語義化
<th> 標簽用于定義表格的表頭單元格,表示該單元格是一個列標題。使用 <th> 標簽不僅可以明確表格的結構,還可以提升可訪問性和搜索引擎優化。
C. 表格樣式的定制與優化
HTML5和CSS3提供了一系列的樣式屬性來定制和優化表格的外觀。以下是一些常用的表格樣式定制與優化方法:
使用 <caption> 標簽添加表格標題
<caption> 標簽用于為表格添加標題,并且應該放置在 <table> 標簽之前。通過添加表格標題,用戶可以更好地理解表格內容的含義。
設置表格邊框和間距
利用CSS設置表格的邊框樣式、顏色和寬度,以及單元格之間的間距,可以改善表格的可讀性和美觀性。例如,可以使用border、border-collapse、padding等屬性來實現。
跨行和跨列的合并與分割
通過使用rowspan和colspan屬性,可以將單元格跨行或跨列進行合并或分割,從而創建更復雜的表格結構。這對于展示復雜的數據或創建合并單元格的表頭非常有用。
單元格內容的對齊和格式化
可以使用CSS屬性如text-align、vertical-align、text-transform等來對表格中的單元格內容進行對齊和格式化。這樣可以使表格更易讀,并提高數據的可理解性。
D. 響應式表格設計
響應式表格設計是指能夠在不同設備和屏幕尺寸下適配和顯示良好的表格。以下是一些實現響應式表格設計的方法:
使用 <colgroup> 和 <col> 實現列寬控制
<colgroup> 和 <col> 標簽用于對表格的列進行分組,并設置列的樣式。通過給 <col> 標簽指定百分比或像素值,可以實現對列寬的精確控制。
使用 <thead> 和 CSS 媒體查詢實現響應式表頭
在響應式設計中,表格的表頭可能需要在較小的屏幕上進行折疊或隱藏。可以使用CSS媒體查詢,根據屏幕尺寸來顯示或隱藏表頭內容,從而實現響應式表頭。
使用 CSS Flexbox 或 Grid 布局實現自適應表格
CSS Flexbox 和 Grid 布局提供了強大的布局方式,可以輕松實現自適應的表格布局。通過利用彈性盒子或網格布局的屬性和方法,可以使表格在不同屏幕尺寸下自動調整布局。
通過以上方法,我們可以充分利用HTML5的新表格標簽和CSS3的樣式屬性,優化和改進網頁中的表格設計。這些技術和方法可以提升用戶體驗、頁面性能,并使表格在不同設備上呈現出更好的可訪問性和可讀性。
III. CSS3 表格屬性的應用與實現
A. 表格樣式的美化與裝飾
應用背景顏色和漸變效果 可以通過CSS3的background-color屬性為表格行、單元格或表頭添加背景顏色,使用linear-gradient屬性添加漸變效果。
代碼示例:
<style>
tr:nth-child(odd) {
background-color: #f2f2f2;
}
td {
background: linear-gradient(to bottom, #ffffff, #f2f2f2);
}
</style>
<table>
<tr>
<th>標題1</th>
<th>標題2</th>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
</tr>
<tr>
<td>數據3</td>
<td>數據4</td>
</tr>
</table>
添加陰影和圓角邊框 使用box-shadow屬性為表格添加陰影效果,border-radius屬性添加圓角邊框。
代碼示例:
<style>
table {
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
th, td {
border-radius: 5px;
}
</style>
<table>
<tr>
<th>標題1</th>
<th>標題2</th>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
</tr>
<tr>
<td>數據3</td>
<td>數據4</td>
</tr>
</table>
使用 CSS 圖標字體美化表格圖標 通過引入CSS圖標字體庫,可以使用特定的類名為表格圖標添加樣式,如FontAwesome、Material Icons等。
代碼示例:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
<style>
.edit-icon::before {
content: "\f044"; /* FontAwesome編輯圖標的Unicode編碼 */
}
</style>
<table>
<tr>
<th>標題1</th>
<th>標題2</th>
<th>操作</th>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
<td><i class="fas fa-edit edit-icon"></i></td>
</tr>
<tr>
<td>數據3</td>
<td>數據4</td>
<td><i class="fas fa-edit edit-icon"></i></td>
</tr>
</table>
B. 表格的排序與過濾
使用 JavaScript 庫實現表格排序和搜索 通過JavaScript庫,如TableSorter、DataTables等,可以方便地實現表格的排序和搜索功能。
代碼示例(使用TableSorter庫):
<script src="https://cdn.jsdelivr.net/npm/tablesorter@2"></script>
<table id="myTable">
<thead>
<tr>
<th>姓名</th>
<th>年齡</th>
</tr>
</thead>
<tbody>
<tr>
<td>張三</td>
<td>25</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
</tr>
<tr>
<td>王五</td>
<td>20</td>
</tr>
</tbody>
</table>
<script>
$(document).ready(function() {
$("#myTable").tablesorter();
});
</script>
使用 CSS3 屬性實現表格篩選效果 利用CSS3的屬性選擇器和關聯選擇器,可以實現簡單的表格篩選效果。
代碼示例:
<input type="text" id="filterInput" placeholder="輸入關鍵字...">
<table>
<tr>
<th>姓名</th>
<th>年齡</th>
</tr>
<tr>
<td>張三</td>
<td>25</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
</tr>
<tr>
<td>王五</td>
<td>20</td>
</tr>
</table>
<script>
document.getElementById("filterInput").addEventListener("input", function() {
var filterValue = this.value.toLowerCase();
var rows = document.querySelectorAll("table tr");
rows.forEach(function(row) {
var nameCell = row.querySelector("td:first-child");
if (nameCell) {
var name = nameCell.textContent.toLowerCase();
if (name.includes(filterValue)) {
row.style.display = "";
} else {
row.style.display = "none";
}
}
});
});
</script>
C. 表格動畫與交互效果
使用 CSS3 過渡和動畫優化表格切換效果 通過CSS3的過渡和動畫屬性,可以為表格切換添加平滑的動畫效果。
代碼示例:
<style>
table {
transition: opacity 0.3s ease;
opacity: 1;
}
.hidden {
opacity: 0;
}
</style>
<button onclick="toggleTable()">切換表格</button>
<table id="myTable">
<tr>
<th>標題1</th>
<th>標題2</th>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
</tr>
<tr>
<td>數據3</td>
<td>數據4</td>
</tr>
</table>
<script>
function toggleTable() {
var table = document.getElementById("myTable");
table.classList.toggle("hidden");
}
</script>
實現可展開/折疊的表格行 利用JavaScript和CSS3的偽類,可以實現可展開/折疊的表格行效果。
代碼示例:
<style>
.details-row {
display: none;
}
tr.expanded .details-row {
display: table-row;
}
tr.expanded + tr.details-row {
display: table-row;
}
</style>
<table>
<tr>
<th>姓名</th>
<th>年齡</th>
</tr>
<tr class="expandable">
<td colspan="2">張三</td>
</tr>
<tr class="details-row">
<td>年級:二年級</td>
<td>成績:90</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
</tr>
<tr>
<td>王五</td>
<td>20</td>
</tr>
</table>
<script>
var expandableRows = document.querySelectorAll(".expandable");
expandableRows.forEach(function(row) {
row.addEventListener("click", function() {
this.classList.toggle("expanded");
});
});
</script>
表格列的拖拽排序功能 通過JavaScript庫,如TableDnD、Sortable.js等,可以實現表格列的拖拽排序功能。
代碼示例(使用Sortable.js):
<script src="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.13.0/Sortable.min.js"></script>
<table id="myTable">
<thead>
<tr>
<th>姓名</th>
<th>年齡</th>
</tr>
</thead>
<tbody>
<tr>
<td>張三</td>
<td>25</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
</tr>
<tr>
<td>王五</td>
<td>20</td>
</tr>
</tbody>
</table>
<script>
var table = document.getElementById("myTable");
var sortable = Sortable.create(table, {
animation: 150,
});
</script>
通過以上代碼示例,我們可以實現表格的美化、排序、過濾、動畫和交互等各種效果。這些技術和策略可以根據具體需求,提升表格的用戶體驗和視覺效果。
IV. 復雜表格結構的性能優化與最佳實踐
A. 分析復雜表格結構對渲染性能的影響
復雜表格結構指的是含有大量行列、嵌套結構或大量內容的表格。這樣的表格可能會對頁面的渲染性能產生負面影響,導致頁面加載緩慢,滾動卡頓,交互體驗差等問題。
在分析復雜表格結構對渲染性能影響時,我們可以考慮以下幾個方面:
表格數據量:大量的表格數據會增加頁面渲染的工作量,尤其是在移動設備上更為明顯。
嵌套層級:過多的嵌套層級會增加瀏覽器解析和渲染的復雜度。
圖片和其他資源:表格中使用的圖片和其他資源的加載和渲染都會消耗一定的時間和性能。
B. 優化表格的加載速度和渲染性能
為了提升表格的加載速度和渲染性能,可以采取以下一些優化策略:
延遲加載和分頁加載表格數據:
如果表格數據非常龐大,可以考慮延遲加載或分頁加載數據。只在用戶需要時加載當前可見區域的數據,可以減少頁面初始化時的數據傳輸和處理量。
可以通過AJAX技術異步加載表格數據,并使用分頁組件進行分頁顯示。
代碼示例:
// 使用延遲加載表格數據的示例
$(document).ready(function() {
// 綁定事件,在表格可見區域滾動時加載數據
$('#tableContainer').scroll(function() {
if ($(this).scrollTop() + $(this).height() >= $('#table').height()) {
// 使用AJAX加載更多數據
$.ajax({
url: 'data.php',
type: 'GET',
data: { page: nextPage },
success: function(response) {
// 將新數據添加到表格中
$('#table').append(response);
nextPage++;
}
});
}
});
});
使用虛擬滾動技術優化大數據量表格的渲染:
對于包含大量數據的表格,可以采用虛擬滾動技術來優化渲染性能。只渲染可見區域的表格內容,而不是全部渲染。
可以使用JavaScript庫,如VirtualScroll.js、React Virtualized等,實現虛擬滾動功能。
代碼示例(使用React Virtualized庫):
import { Table, Column } from 'react-virtualized';
import 'react-virtualized/styles.css';
const rowGetter = ({ index }) => data[index];
ReactDOM.render(
<Table
width={800}
height={400}
headerHeight={20}
rowHeight={30}
rowCount={data.length}
rowGetter={rowGetter}>
<Column label="姓名" dataKey="name" width={200} />
<Column label="年齡" dataKey="age" width={100} />
{/* 更多列 */}
</Table>,
document.getElementById('tableContainer')
);
C. 提升表格交互體驗
為了提升表格的交互體驗,可以考慮以下幾個方面:
使用分頁、排序和快速過濾等功能組件:
分頁功能可以將大量數據分成多個頁面,使用戶能夠快速切換和瀏覽數據。
排序功能可以根據某一列的值進行升序或降序排序,使用戶能夠按需排序表格數據。
快速過濾功能可以根據用戶輸入的關鍵詞快速過濾和檢索表格數據。
代碼示例(使用Bootstrap DataTables庫):
$(document).ready(function() {
$('#myTable').DataTable({
paging: true, // 啟用分頁功能
searching: true, // 啟用快速過濾功能
sorting: true // 啟用排序功能
});
});
利用無障礙技術改善表格可訪問性:
為表格添加合適的語義化標記,使用正確的HTML標簽和屬性,以確保屏幕閱讀器等輔助技術能夠正確解讀和展示表格內容。
提供鍵盤導航支持,使用戶可以使用鍵盤在表格中進行導航操作。
代碼示例:
<table>
<caption>學生成績表</caption>
<thead>
<tr>
<th scope="col">姓名</th>
<th scope="col">科目</th>
<th scope="col">成績</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">張三</th>
<td>數學</td>
<td>90</td>
</tr>
<!-- 更多行 -->
</tbody>
</table>
通過以上優化策略,可以明顯提升復雜表格的加載速度、渲染性能和交互體驗。同時,合理使用虛擬滾動等技術,可以優化大數據量表格的展示效果。
V. 實證案例研究與代碼示例
A. 案例分析和實驗設計
在本部分中,我們將通過一系列實證案例來探究HTML5和CSS3表格屬性的應用與優化。我們將設計實驗來比較不同優化策略在性能上的差異,并給出相應的代碼示例。
實驗目標
分析不同表格屬性和效果對頁面加載和渲染性能的影響。
比較不同優化策略在提升表格性能方面的效果。
實驗步驟
a. 設計測試頁面:創建包含大量數據的復雜表格,并在其中應用不同的表格屬性和效果。
b. 測量加載和渲染性能:使用瀏覽器開發者工具或性能分析工具,測量頁面加載和渲染的性能指標,如加載時間、資源消耗以及渲染幀率等。
c. 應用優化策略:分別嘗試延遲加載、分頁加載和虛擬滾動等優化策略,并測量它們對加載和渲染性能的影響。
d. 對比分析和總結:比較不同優化策略的性能差異,并總結出最佳實踐。
B. 實現各種表格屬性和效果的代碼示例
在這里,我們將給出一些代碼示例,實現各種常見的表格屬性和效果。這些示例將作為實證案例的基礎。
斑馬線效果 斑馬線效果給表格的行添加交替的背景顏色,以增強可讀性。
<style>
tr:nth-child(even) {
background-color: #f2f2f2;
}
</style>
<table>
<tr>
<th>標題1</th>
<th>標題2</th>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
</tr>
<tr>
<td>數據3</td>
<td>數據4</td>
</tr>
</table>
表格排序 通過點擊表頭實現對表格內容的升序或降序排序。
<style>
th.sortable {
cursor: pointer;
}
</style>
<script>
function sortTable(columnIndex) {
var table = document.getElementById("myTable");
var rows = Array.from(table.rows).slice(1); // 排除表頭行
rows.sort(function(a, b) {
var aValue = a.cells[columnIndex].innerText;
var bValue = b.cells[columnIndex].innerText;
return aValue.localeCompare(bValue);
});
table.tBodies[0].append(...rows);
}
</script>
<table id="myTable">
<tr>
<th class="sortable" onclick="sortTable(0)">標題1</th>
<th class="sortable" onclick="sortTable(1)">標題2</th>
</tr>
<tr>
<td>數據3</td>
<td>數據4</td>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
</tr>
</table>
合并單元格 通過合并表格中的部分單元格,創建復雜的布局。
<table>
<tr>
<th rowspan="2">標題1</th>
<th>標題2</th>
<th>標題3</th>
</tr>
<tr>
<td colspan="2">數據</td>
</tr>
<tr>
<td>數據1</td>
<td>數據2</td>
<td>數據3</td>
</tr>
</table>
C. 對比分析不同優化策略的性能差異
在這個實驗中,我們將嘗試三種優化策略:延遲加載、分頁加載和虛擬滾動,并比較它們的性能差異。
延遲加載 延遲加載策略僅加載可見區域內的數據行,當用戶滾動表格時再加載其他數據行。
代碼示例:
<script>
function lazyLoad() {
var table = document.getElementById("myTable");
var scrollTop = table.scrollTop;
var visibleHeight = table.clientHeight;
var totalHeight = table.scrollHeight;
if (visibleHeight + scrollTop >= totalHeight) {
// 加載更多數據行的邏輯
}
}
var table = document.getElementById("myTable");
table.addEventListener("scroll", lazyLoad);
</script>
分頁加載 分頁加載策略將數據劃分為多個頁面,每次只加載當前頁面的數據。
代碼示例:
<script>
function loadPage(pageNumber) {
// 根據pageNumber加載相應頁面的數據
}
function changePage(pageNumber) {
// 切換頁面的邏輯
loadPage(pageNumber);
}
loadPage(1); // 初始化加載第一頁
</script>
<div id="pagination">
<button onclick="changePage(1)">第一頁</button>
<button onclick="changePage(2)">第二頁</button>
<button onclick="changePage(3)">第三頁</button>
</div>
虛擬滾動 虛擬滾動策略只渲染可見區域內的數據行,提高渲染性能。
代碼示例:
<style>
.table-container {
height: 200px;
overflow-y: scroll;
}
</style>
<div class="table-container">
<table>
<!-- 動態渲染可見區域內的數據行 -->
</table>
</div>
通過以上實驗和對比分析,我們可以得出不同優化策略在表格加載和渲染性能上的差異。根據具體的場景和需求,選擇最適合的優化策略,可以提升表格在頁面中的性能和用戶體驗。
VI. 結論
A. 總結研究成果和主要貢獻
本文主要研究了在前端開發中HTML5和CSS3表格屬性的應用與優化。通過對HTML5表格元素和CSS3表格樣式的詳細介紹,以及對表格結構、樣式和性能優化的探討,得出了以下研究成果和主要貢獻:
提供了全面的HTML5表格元素和CSS3表格樣式的介紹。介紹了HTML5中常用的表格元素,并詳細說明了各個元素的作用和用法。同時,介紹了CSS3中豐富的表格樣式屬性,例如邊框、背景、字體等,說明了如何利用這些屬性來美化和定制表格的外觀。
探討了表格結構的優化方法。在設計和構建表格時,合理的結構設計對于提升表格的可讀性和可維護性至關重要。本文提供了一些最佳實踐,例如使用語義化標簽、使用caption元素進行表格標題的標記等,以幫助開發人員設計出更具有可訪問性和可擴展性的表格結構。
探討了表格樣式的優化方法。通過合理利用CSS3表格樣式屬性,可以實現各種各樣的表格樣式效果。本文介紹了常用的樣式屬性,例如邊框樣式、背景色、字體樣式等,并提供了實際代碼示例,幫助開發人員理解和應用這些屬性來定制表格的樣式。
探討了復雜表格結構的性能優化與最佳實踐。復雜的表格結構可能會對頁面的渲染性能產生負面影響。本文分析了復雜表格結構對渲染性能的影響,并提供了一些優化策略,例如延遲加載和分頁加載表格數據、使用虛擬滾動技術優化大數據量表格的渲染等,以提升表格的加載速度、渲染性能和交互體驗。
B. 討論研究的局限性和未來發展方向
在進行本研究過程中,我們也面臨了一些局限性和挑戰,這些限制為未來的研究和發展方向提供了啟示和機會:
研究局限性:
本文的研究主要集中在HTML5和CSS3的表格屬性上,而在實際的前端開發中,還有許多其他技術和工具可以用于定制表格的效果,如JavaScript庫、響應式設計等。因此,未來的研究可以更加全面地探討表格的優化和定制方法。
本文對于表格性能優化的研究主要集中在前端實現層面,而在后端數據處理和傳輸方面的研究相對較少。因此,未來的研究可以進一步探討前后端協作優化表格性能的方法。
未來發展方向:
繼續深入研究新興技術和標準,如HTML5.1、CSS4等,以便及時了解新特性和擴展,為表格優化提供更多創新的可能。
關注移動設備上的表格優化問題,由于移動設備的屏幕尺寸較小,表格的可讀性和交互體驗有時存在挑戰。未來的研究可以探索針對移動設備的表格優化策略。
注重用戶體驗和可訪問性,不僅要追求表格的美觀和功能,還需要關注使用者的體驗和特殊需求。未來的研究可以進一步完善表格的無障礙功能,提升表格的可訪問性。
通過對HTML5和CSS3表格屬性的研究和優化,可以提升網頁的用戶體驗,改善表格的可讀性和交互性。未來的研究可以繼續深入探討表格優化的方法和技術,為前端開發人員提供更好的工具和指導,以滿足不斷變化的需求和挑戰。
論文作者:蘆熙霖(CNNIC工程師)
參考文獻:
Mitchell, S. (2019). HTML5 Mastery: Semantics, Standards, and Styling. New Riders.
Duckett, J. (2017). HTML & CSS: Design and Build Websites. John Wiley & Sons.
Gauchat, D. (2020). Mastering CSS: A Modern Guide to Styling the Web. Smashing Magazine.
Robins, D. (2018). CSS3: Visual QuickStart Guide (6th Edition). Peachpit Press.
Freeman, E., & Robson, E. (2019). Head First HTML and CSS: A Learner's Guide to Creating Standards-Based Web Pages (2nd Edition). O'Reilly Media.
McFarland, D. (2019). CSS: The Missing Manual (4th Edition). O'Reilly Media.
Meyer, E. A. (2017). CSS Pocket Reference: Visual Presentation for the Web (5th Edition). O'Reilly Media.
Bolton, S., & Jefferson, C. (2018). Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics (5th Edition). O'Reilly Media.
請耐心慢慢刷新到頁面完整顯示出來
https://fjxasdf.github.io/daogou/
原文章https://www.toutiao.com/i6711294610594857476/
1.顯示商品圖片
2.沒有顯示全部商品,只顯示熱門商品,避免數據、圖片加載太慢
3.樣式稍微美化了
4.上傳到GitHub,不過GitHub很卡,要刷新等好久才能看到
import xlrd from datetime import date,datetime import json file = '精選優質商品清單(內含優惠券).xls' def read_excel(): wb = xlrd.open_workbook(filename=file)#打開文件 # print(wb.sheet_names())#獲取所有表格名字 sheet1 = wb.sheet_by_index(0)#通過索引獲取表格 # sheet2 = wb.sheet_by_name('Page1')#通過名字獲取表格 # print(sheet1) # print(sheet2) # print(sheet1.name) #表 名 rows = sheet1.nrows #多少行 # print(sheet1.ncols) #多少列 # rows = sheet1.row_values(1)#獲取行內容 category0 = sheet1.col_values(4)#獲取列內容(類目) del category0[0] category = sorted(set(category0),key=category0.index) #類目列表->去重 data = [] data_hot = [] # print(rows) # print(cols) for i,v in enumerate(category): category[i] = v.replace("/", "、")#吧"/"替換"、" data.append([category[i],[]]) jsonData = json.dumps(category, ensure_ascii=False) with open('./daogou/category.json', 'w',encoding="utf-8") as f: f.write(jsonData)#保存分類json for i,v in enumerate(data): for x in range(rows): if v[0] == (sheet1.cell(x,4).value.replace("/", "、")): xo = sheet1.row_values(x) y = [xo[1],xo[2],xo[4],xo[6],xo[21]] #選擇保存商品名稱、圖片、鏈接等 data[i][1].append(y) if x>0 and float(sheet1.row_values(x)[9]) >= 1: #選擇傭金多的作為熱門 xo = sheet1.row_values(x) y = [xo[1],xo[2],xo[4],xo[6],xo[21]] data_hot.append(y) data_hot = data_hot[:24] jsonData_hot = json.dumps(data_hot, ensure_ascii=False) with open('./daogou/results_hot.json', 'w',encoding="utf-8") as f: f.write(jsonData_hot)#保存熱門商品json for i,v in enumerate(data): jsonData = json.dumps(v[1], ensure_ascii=False) with open('./daogou/'+v[0]+'.json', 'w',encoding="utf-8") as f: f.write(jsonData)#保存每個分類商品json # jsonData1 = json.dumps(data, ensure_ascii=False) # with open('results.json', 'w',encoding="utf-8") as f: # f.write(jsonData1) # print(sheet1.cell(0,0).value)#獲取表格里的內容,第一行第一個格內容 # print(sheet1.cell_value(0,0))#獲取表格里的內容,第一行第一個格內容 #print(sheet1.row(0)[0].value)#獲取表格里的內容,第一行第一個格內容 if __name__ == '__main__': read_excel()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="../js/jquery.min.js"></script> <link rel="stylesheet" href="../font/Alibaba-PuHuiTi-Regular.css"> <script> var navo = ''; var info = ''; var data_total;//總數據 function color16(){//十六進制顏色隨機 var r = Math.floor(Math.random()*256); var g = Math.floor(Math.random()*256); var b = Math.floor(Math.random()*256); var color = '#'+r.toString(16)+g.toString(16)+b.toString(16); return color; } function nav_href(title,id){//錨跳轉 if ($('#'+title).length>0) { location.href="#"+title; }else{ var div_title = "<div id='"+title+"' style='float:left;'>"; var div_content = "<div class='pro_img' style='background:#ff5000'><b style='color:#FFF'>"+title+"</b><\/div>"; $('#load').show(); $.get('./'+title+'.json', function(data) { $.each(data, function(index, val) { div_content+="<a style='background:"+color16()+"' target='_blank' href='"+val[4]+"' class='pro_img'><img onload='$(this).show()' src="+val[1]+" style='width:100%;height:100%;display:none;' />"+val[0]+"<span class='money'>¥"+val[3]+"</span><span class='title'>"+val[0].substring(0,25)+"...</span><\/a>"; if ((index+1)==data.length) { var div_footer ="</div><br>"; infoo=div_title+div_content+div_footer; $('#content').append(infoo); location.href="#"+title; $('#load').hide(); } }); },'json'); } } function get_data(){ $.get('./category.json', function(data) {//導航 $.each(data, function(index, val) { // console.log(val[0]); navo+="<a class='nav' href=javascript:;nav_href(\'"+val+"\',"+index+")>"+val+"</a> "; }); $('#nav').html(navo); $.get('./results_hot.json', function(data) {//熱門商品 var div_title = "<div id='熱門商品' style='float:left;'>"; var div_content = "<div class='pro_img' style='background:#ff5000'><b style='color:#FFF'>熱門商品</b></span><\/div>"; $.each(data, function(index, val) { // console.log(val); div_content+="<a style='background:"+color16()+"' target='_blank' href='"+val[4]+"' class='pro_img'><img onload='$(this).show()' src="+val[1]+" style='width:100%;height:100%;display:none;' />"+val[0]+"<span class='money'>¥"+val[3]+"</span><span class='title'>"+val[0].substring(0,25)+"...</span><\/a>" // if (index==3) {return false} }); var div_footer ="</div><br>"; info+=div_title+div_content+div_footer; $('#content').html(info); $('#load').hide(0); }); },'json'); } </script> <style> #body{ /*border: 1px solid #eee;*/ width: 1110px; margin:0 auto; } a.nav{ text-decoration: none; margin-right: 10px; padding: 0 5px; /*padding-bottom: 10px;*/ display: inline-block; color: #000; font-weight: 700; } #nav{ display: inline-block; } *,html,body{ font-family:"Alibaba-PuHuiTi-Regular"; } #content{ margin-top: 10px; display: inline-block; } .money{ width: 100%; /* padding: 0px 10px; */ background: #ffffffcc; position: absolute; left: 0; bottom: 50px; height: 30px; line-height: 30px; color: #F40; font-weight: 700; /* border-radius: 0 8px 0 0; */ text-align: left; font-size: 18px; } .title{ width: 100%; font-weight: 700; /* padding: 0px 10px; */ background: #ffffffcc; position: absolute; left: 0; bottom: 0; height: 50px; line-height: normal; color: #000; /* border-radius: 0 8px 0 0; */ text-align: left; font-size: 15px; } .pro_img{ position: relative; float: left; width: 220px; height: 220px; line-height: 220px; text-align: center; border: 1px solid #eee; cursor: pointer; font-size: 30px; /*white-space:normal; */ overflow:hidden; /*超過部分不顯示*/ text-overflow:ellipsis; /*超過部分用點點表示*/ /* white-space:nowrap;/*不換行*/ } .input1{ width: 300px; height: 30px; border: 1px solid #888; border-radius: 10px 0 0 10px; outline-style: none ; } .button1{ margin-left: -7px; width: 50px; height: 34px; border-radius:0 10px 10px 0 ; outline-style: none ; } #search1{ /*width: 350px;*/ /*margin:0 auto;*/ } #load{ position: fixed; width: 100%; height: 100%; top: 0; left: 0; background: #000000ad; z-index: 999; text-align: center; vertical-align: middle; } #load>span{ display: inline-block; vertical-align: middle; height: 100%; } .load{ display: inline-block; vertical-align: middle; font-size: 50px; color: #FFF; } </style> </head> <body onload="get_data()"> <!-- loading --> <div id="load"> <span ></span> <div class="load">加載中...</div> </div> <div id="body"> <h1>網站僅學習交流!!網站中的商品信息均來自于互聯網。</h1> <!-- <div id="search1"> <input type="text" class="input1"> <button class="button1">搜索</button><b> 網站僅學習交流!!網站僅學習交流!!網站僅學習交流!!網站僅學習交流!!網站僅學習交流!!</b> </div> --> <div id="nav"></div> <div id="content"></div> </div> </body> </html>
己美化吧
<section>
<table id="addrow" border=1>
<tr>
<td></td>
<td>序號</td>
<td></td>
</tr>
<tr>
<td></td>
<td>1</td>
<td></td>
</tr>
</table>
<button onclick='AddRow();'>添加行</button>
</section>
<script>
//添加行
function AddRow() {
// 被點擊的目標標簽tagName 如INPUT DIV
var clicktagname = $(event.target).get(0).tagName;
//獲取點擊對象
var clickedNode = event.target;
var $table = $(clickedNode).closest("section").find("table:first");
var tableId = $table.attr("id");
//var $table=$("#"+tableId);
var numRows = $table.find("tr").length; //行數
if(numRows > 20) { //數據行最多10行 共11行
mscAlert("別再加了!");
return false;
} else {
numRows = $table.find("tr").length;
$("#" + tableId + " tr:last").clone(false).insertBefore("#" + tableId + " tr:eq(1)");
}
for(var i = 1; i < numRows + 1; i++) { //第二列序號
$('#' + tableId + ' tr:eq(' + i + ') td:eq(1)').text(i);
}
}
</script>
*請認真填寫需求信息,我們會在24小時內與您取得聯系。