首頁 >web前端 >css教學 >如何使用 JavaScript 和 CSS 凍結表格行和列?

如何使用 JavaScript 和 CSS 凍結表格行和列?

Susan Sarandon
Susan Sarandon原創
2024-11-04 08:05:301042瀏覽

How to Freeze Table Rows and Columns Using JavaScript and CSS?

如何用JavaScript 和CSS 凍結表格行和列

可以實現滾動時鎖定表格的第一行第一列使用JavaScript 和滾動CSS,模擬Excel 的「凍結窗格」功能。

JavaScript 解決方案

一個JavaScript 解決方案是建立兩個單獨的表:

  1. 包含第一行和列標題的固定標題表格。
  2. 包含剩餘表格資料的可捲動正文表格。

兩張表格都使用 CSS 絕對定位,固定標題表位於主體表上方。頁面捲動時,正文表格獨立移動,而固定標題保持固定。

CSS 定位

<code class="css">/* Fixed header table */
.fixed-header {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
}

/* Scrollable body table */
.scrollable-body {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 0;
}</code>

JavaScript 啟動

<code class="javascript">// Create a table with the first row as the header
const table = document.createElement('table');
const headerRow = table.createTHead().insertRow();

// Create the first column headings
for (let i = 0; i < numColumns; i++) {
  headerRow.appendChild(document.createElement('th')).innerHTML = 'Heading ' + (i + 1);
}

// Create the body of the table with the remaining data
const body = table.createTBody();
for (let i = 0; i < numRows; i++) {
  const row = body.insertRow();
  for (let j = 0; j < numColumns; j++) {
    row.appendChild(document.createElement('td')).innerHTML = 'Data ' + (i + 1) + ', ' + (j + 1);
  }
}

// Split the table into two: fixed header and scrollable body
const fixedHeader = table.cloneNode(true);
fixedHeader.tBodies[0].remove();

const scrollableBody = table.cloneNode(true);
fixedHeader.tHead.remove();

// Add the two tables to the page
document.body.appendChild(fixedHeader);
document.body.appendChild(scrollableBody);

// Position the tables using CSS
fixedHeader.classList.add('fixed-header');
scrollableBody.classList.add('scrollable-body');</code>

此解決方案為解決方案提供了功能全的「凍結窗格」效果,確保捲動過程中第一行和第一列保持可見。

以上是如何使用 JavaScript 和 CSS 凍結表格行和列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn