CSS对表格进行样式美化

在网页设计和开发中,表格是非常重要的元素。它可以用于展示表格化的数据,也可以用于网页布局和样式设计。常见的表格样式设计包括表格线、斑马条纹、边框阴影、表头固定等。而CSS样式表提供了丰富的样式属性和选择器,可以实现各种表格样式效果。

一、表格基本样式

1、表格线条样式

表格线条是最基本的表格样式,可以通过CSS的border属性设置,如下所示。

table {
  border-collapse: collapse;
}

td, th {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: left;
}

其中,border-collapse:collapse用于将表格边框合并为单一线条,避免重复绘制,减少DOM元素数量和页面渲染时间。td和th元素使用相同的样式,设置1像素的实线边框,内部使用8像素的填充。

2、表格斑马条纹

在长表格中,使用斑马条纹可以使网页看起来更加清晰整洁。可以通过CSS中的:nth-child伪类选择器实现斑马条纹效果。

tr:nth-child(even) {
  background-color: #f2f2f2;
}

以上代码用于选择表格中的偶数行,应用背景色为浅灰色,从而实现斑马条纹效果。可以通过设置奇偶性分别设定不同的背景色,更加灵活地控制表格样式。

二、表格进阶样式

1、表格阴影效果

可以为表格应用阴影效果,使表格浮现在页面上。可以通过CSS中的box-shadow属性来为表格添加阴影效果。

table {
  box-shadow: 2px 2px 10px #ccc;
}

以上代码表示为表格应用2像素的偏移距离和模糊半径为10像素的阴影,颜色为浅灰色。可以根据实际情况进行调整,使得页面效果更加美观。

2、表格圆角效果

可以为表格添加圆角效果,使其看起来更加柔和自然。可以通过CSS中的border-radius属性为表格的边框添加圆角效果。

table {
  border-collapse: collapse;
  border-radius: 5px;
  overflow: hidden;
}

以上代码将表格的边框圆角半径设置为5像素,并且使用overflow:hidden属性隐藏表格的溢出部分,避免圆角被遮挡造成不美观的效果。

3、表格宽度和高度

可以自由控制表格的宽度和高度,使其适应各种页面布局情况。可以通过CSS中的width和height属性来设置表格的宽度和高度。

table {
  width: 100%;
  height: 300px;
}

以上代码将表格的宽度设置为100%和高度设置为300像素,可以根据实际情况进行调整,使得表格具有更好的页面布局效果。

三、表格高级样式

1、表头固定效果

为了提高表格的可读性和易用性,可以为表头添加固定效果。当数据较多时,表头可以始终在页面上方,使用户方便查看和操作数据。可以通过使用position属性和一些JavaScript代码来实现表头固定效果。

<div class="table-container">
  <table>
    <thead>
      <tr>
        <th>Column 1</th>
        <th>Column 2</th>
        <th>Column 3</th>
          ...
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Row 1 Data 1</td>
        <td>Row 1 Data 2</td>
        <td>Row 1 Data 3</td>
          ...
      </tr>
      <tr>
        <td>Row 2 Data 1</td>
        <td>Row 2 Data 2</td>
        <td>Row 2 Data 3</td>
          ...
      </tr>
        ...
    </tbody>
  </table>
</div>

<style>
.table-container {
  overflow-y: auto;
  height: 300px;
}

.table-container thead th {
  position: sticky;
  top: 0;
  background-color: #fff;
}
</style>

以上代码用于实现表头固定效果。将表格放置在一个固定高度的容器中,利用overflow-y: auto属性来让容器出现纵向滚动条。thead元素中的th元素使用position: sticky属性和top: 0属性将表头固定在容器的顶部,保证表头始终可见。background-color: #fff属性用于覆盖默认的背景色,避免表头看起来生硬和不协调。

2、表格排序效果

当表格中有大量数据时,可以为表格添加排序功能,使用户方便查看和操作数据。可以通过使用一些JavaScript代码和CSS样式来实现表格排序效果。

<table>
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
        ...
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Row 1 Data 1</td>
      <td>Row 1 Data 2</td>
      <td>Row 1 Data 3</td>
        ...
    </tr>
    <tr>
      <td>Row 2 Data 1</td>
      <td>Row 2 Data 2</td>
      <td>Row 2 Data 3</td>
        ...
    </tr>
      ...
  </tbody>
</table>

<style>
table {
  border-collapse: collapse;
}

th {
  background-color: #f2f2f2;
  border: 1px solid #ccc;
  cursor: pointer;
  padding: 8px;
  text-align: left;
}

th:hover {
  background-color: #ddd;
}

th.asc:after {
  content: ' \2191';
}

th.desc:after {
  content: ' \2193';
}
</style>

<script>
const headers = document.querySelectorAll('th');

headers.forEach(header => {
  header.addEventListener('click', () => {
    const sortingDirection = header.getAttribute('data-sort') || 'desc';

    headers.forEach(th => {
      th.classList.remove('asc', 'desc');
      th.removeAttribute('data-sort');
    });

    if(sortingDirection === 'desc') {
      header.classList.add('asc');
      header.setAttribute('data-sort', 'asc');
    } else {
      header.classList.add('desc');
      header.setAttribute('data-sort', 'desc');
    }

    const index = Array.prototype.indexOf.call(headers, header);
    sortByColumn(index, sortingDirection);
  });
});

function sortByColumn(columnIndex, direction) {
  const rows = Array.from(document.querySelectorAll('tbody tr'));
  const modifier = direction === 'asc' ? 1 : -1;
  const sorters = [];
  const a = rows[0].children[columnIndex].textContent.toLowerCase();

  if(isNaN(a)) {
    rows.forEach(row => {
      const value = row.children[columnIndex].textContent.toLowerCase();
      sorters.push([value, row]);
    });
  } else {
    rows.forEach(row => {
      const value = Number(row.children[columnIndex].textContent.toLowerCase());
      sorters.push([value, row]);
    });
  }

  const sortedRows = sorters.sort((a, b) => {
    if(a[0]  b[0]) {
      return 1 * modifier;
    } else {
      return 0;
    }
  }).map(item => {
    return item[1];
  });

  const tbody = document.querySelector('tbody');
  tbody.innerHTML = '';

  sortedRows.forEach(row => {
    tbody.appendChild(row);
  });
}
</script>

以上代码用于实现表格排序效果。点击表头中的任何一个单元格,都会按照单元格中的数据排序,根据数据类型进行不同的排序方式。可以通过箭头图标表示排序方向,并且可以切换升序和降序两种排序方式。利用JavaScript和CSS的特性可以为表格添加各种复杂的交互效果和样式风格。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/157292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-18 19:59
下一篇 2024-11-18 19:59

相关推荐

  • 使用Treeview显示表格

    在web开发中,显示表格数据是一项很常见的需求。当我们需要在页面上显示大量数据时,除了使用传统的表格样式外,还可以使用Treeview这种可折叠的表格样式,以便更好地展示数据。本文…

    编程 2025-04-29
  • Python根据表格数据生成折线图

    本文将介绍如何使用Python根据表格数据生成折线图。折线图是一种常见的数据可视化图表形式,可以用来展示数据的趋势和变化。Python是一种流行的编程语言,其强大的数据分析和可视化…

    编程 2025-04-29
  • 如何使用HTML修改layui内部样式影响全局

    如果您想要使用layui来构建一个美观的网站或应用,您可能需要使用一些自定义CSS来修改layui内部组件的样式。然而,修改layui组件的样式可能会对整个页面产生影响,甚至可能破…

    编程 2025-04-29
  • Python 图片转表格

    本文将详细介绍如何使用Python将图片转为表格。大家平时在处理一些资料的时候难免会遇到图片转表格的需求。比如从PDF文档中提取表格等场景。当然,这个功能也可以通过手动复制、粘贴,…

    编程 2025-04-29
  • python爬取网页并生成表格

    本文将从以下几个方面详细介绍如何使用Python爬取网页数据并生成表格: 一、获取网页数据 获取网页数据的一般思路是通过HTTP请求获取网页内容,最常用的方式是使用Python库r…

    编程 2025-04-28
  • Python如何做表格为中心

    本文将从多个方面详细阐述Python如何做表格,包括表格的创建、数据的插入、表格的样式设置等内容。 一、创建表格 要在Python中创建表格,我们可以使用第三方库Pandas。具体…

    编程 2025-04-28
  • CSS sans字体家族

    CSS sans字体家族是一组基于CSS的无衬线字体,具有在不同设备和浏览器上保持一致的特性。本文将从优势、使用、自定义等多个方面对CSS sans字体家族进行详细介绍。 一、优势…

    编程 2025-04-28
  • 52周存钱法表格图100元

    52周存钱法是一种有效的储蓄方法,它能够帮助人们规律性地储蓄并实现财务目标。针对这种储蓄方法,我们可以使用表格来更加直观地记录储蓄进度,并且可以通过代码实现,给用户提供更加便捷的服…

    编程 2025-04-27
  • JFXtras样式——美化JavaFX应用的必备神器

    本文将从多个方面对JFXtras样式进行详细的阐述,教你如何使用JFXtras样式来美化你的JavaFX应用。无需任何前置知识,让我们一步步来了解。 一、简介 JFXtras是一个…

    编程 2025-04-27
  • CSS教程:从入门到精通

    一、CSS是什么 CSS(Cascading Style Sheets)是一种用于定义网页样式的语言。由于网页内容和样式是分开保存的,因此CSS可以使设计者和开发者分离出样式与内容…

    编程 2025-04-25

发表回复

登录后才能评论