表格的头部固定效果通过css及jquery分别实现

表格的头部固定效果是指当表格数据很多时,页面滚动时表头始终显示在页面顶部,便于查看数据。这个效果可以通过CSS和jQuery分别实现。

通过CSS实现表头固定效果

实现原理

通过CSS中的position: sticky与top属性实现,将表头固定在一定位置上,当表格区域滚动到一定位置时,表头就会被固定在页面顶部。

实现步骤

  1. 在CSS中定义表格头部样式
thead {
  position: sticky;
  top: 0;
  background-color: #f1f1f1;
}

注意:上述CSS代码中的position属性必须为sticky才能实现表头固定效果。

  1. 在表格中的 标签里设置thead类名.
<table>
  <thead class="thead">
    <tr>
      <th>表头1</th>
      <th>表头2</th>
      <th>表头3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>数据1</td>
      <td>数据2</td>
      <td>数据3</td>
    </tr>
    ...
  </tbody>
</table>
  1. 为表格内容设置样式
tbody {
  /* 设置高度,表示表格只显示5条数据 */
  height: 80px;
  /* 开启滚动条 */
  overflow-y: scroll;
  /* 表格中设置border时会占用表格显示范围,通过设置margin-right缩小表格宽度,隐藏滚动条内容区域使滚动条hover效果更好看 */
  margin-right: -15px;
}

示例

例如下面的表格,实现表头固定效果。

表头1 表头2 表头3
数据1 数据2 数据3
数据4 数据5 数据6
... ... ...

示例代码如下:

<table>
  <thead class="thead">
    <tr>
      <th>表头1</th>
      <th>表头2</th>
      <th>表头3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>数据1</td>
      <td>数据2</td>
      <td>数据3</td>
    </tr>
    <tr>
      <td>数据4</td>
      <td>数据5</td>
      <td>数据6</td>
    </tr>
    <!-- 省略其他行数据 -->
  </tbody>
</table>

通过jQuery实现表头固定效果

实现原理

通过jQuery的scroll事件监听,当表格区域滚动到一定位置时,将表头复制到页面顶部形成固定表头。

实现步骤

  1. 在HTML中定义两个表格,分别用于显示表头与表格内容。
<div class="wrap">
  <table class="table-header">
    <thead>
      <tr>
        <th>表头1</th>
        <th>表头2</th>
        <th>表头3</th>
      </tr>
    </thead>
  </table>
  <div class="table-body">
    <table>
      <tbody>
        <tr>
          <td>数据1</td>
          <td>数据2</td>
          <td>数据3</td>
        </tr>
        ...
      </tbody>
    </table>
  </div>
</div>
  1. JS代码编写,实现表头复制与固定。
// 监听scroll事件
$('.table-body').on('scroll', function() {
  // 获取表头的引用
  const $thead = $('.table-header thead');
  // 若表头没有复制,则复制一个放在页面顶部
  if ($('[data-component=thead-clone]').length === 0) {
    $thead.clone(true)
      .appendTo('.table-header')
      .attr('data-component', 'thead-clone')
      .css('position', 'fixed')
      .css('top', '0')
      .css('left', '0')
      .css('background-color', '#fff');
  }
  // 判断表格是否滚动至隐藏表头的位置
  if ($(this).scrollTop() >= $thead.position().top) {
    $('[data-component=thead-clone]').show();
  } else {
    $('[data-component=thead-clone]').hide();
  }
});

示例

例如下面的表格,实现表头固定效果。

表头1 表头2 表头3
数据1 数据2 数据3
数据4 数据5 数据6
... ... ...

示例代码如下:

<div class="wrap">
  <table class="table-header">
    <thead>
      <tr>
        <th>表头1</th>
        <th>表头2</th>
        <th>表头3</th>
      </tr>
    </thead>
  </table>
  <div class="table-body">
    <table>
      <tbody>
        <tr>
          <td>数据1</td>
          <td>数据2</td>
          <td>数据3</td>
        </tr>
        <tr>
          <td>数据4</td>
          <td>数据5</td>
          <td>数据6</td>
        </tr>
        <!-- 省略其他行数据 -->
      </tbody>
    </table>
  </div>
</div>
$('.table-body').on('scroll', function() {
  const $thead = $('.table-header thead');
  if ($('[data-component=thead-clone]').length === 0) {
    $thead.clone(true)
      .appendTo('.table-header')
      .attr('data-component', 'thead-clone')
      .css('position', 'fixed')
      .css('top', '0')
      .css('left', '0')
      .css('background-color', '#fff');
  }
  if ($(this).scrollTop() >= $thead.position().top) {
    $('[data-component=thead-clone]').show();
  } else {
    $('[data-component=thead-clone]').hide();
  }
});

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:表格的头部固定效果通过css及jquery分别实现 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 如何使用pace.js美化你的网站加载进度条详解

    当用户访问网站时,有时候需要等待页面加载。在这个过程中,用户可能会感到无聊或者不知道页面是否会成功加载。这时候,加载进度条就可以非常好地解决这个问题,它能让用户看到加载进度,给予他们一种等待过程的可视化反馈。在这里,我将介绍如何使用pace.js来实现这一效果。 步骤一:下载和引入pace.js文件 首先,你需要下载pace.js到你的项目目录中,然后在HT…

    css 2023年6月10日
    00
  • CSS 选择器浅谈

    CSS 选择器浅谈 CSS 选择器是指在样式表中使用的语法,用于选择 HTML 或 XML 文档中的特定元素,并将样式应用于这些元素。在本篇文章中,我们将深入探讨 CSS 选择器的各种类型,以及如何使用它们来选择不同的 HTML 元素。 基础选择器 元素选择器 元素选择器是 CSS 中最简单的选择器之一,也是最常用的。它可以通过元素名称直接选取特定的 HTM…

    css 2023年6月9日
    00
  • CSS3感应鼠标的背景闪烁和图片缩放动画效果

    首先,我们需要了解一下CSS3中的一些新的特性。CSS3中引入了众多新的特性,其中就包括了过渡(transition)、动画(animation)和变换(transform)这三个关键字,它们可以帮助我们实现各种各样的动画效果。 闪烁效果 首先,我们来实现一个背景色的闪烁效果。这个效果可以用以下代码实现: /* 定义动画,名称为 blink */ @keyf…

    css 2023年6月9日
    00
  • 背景图片自适应浏览器分辨率大小并自动拉伸全屏代码

    下面是“背景图片自适应浏览器分辨率大小并自动拉伸全屏”的完整攻略。 设置背景图片 首先,在CSS文件或style标签中,使用如下代码设置背景图片: body { background-image: url(‘your-image-url’); } 其中,your-image-url是自己准备的背景图片链接地址。 自适应浏览器分辨率大小 使用CSS中的 bac…

    css 2023年6月9日
    00
  • css3实现背景动态渐变效果

    下面是详细讲解“css3实现背景动态渐变效果”的完整攻略。 简介 在现代web开发中,背景动态渐变效果逐渐成为了一种设计趋势,能够为页面增加一定的视觉效果,更好的吸引用户的注意力。而使用CSS3技术,能够比传统的图像制作更为简便,也更加可控。 实现方法 使用CSS3 Gradient Generator CSS3 Gradient Generator是一个在…

    css 2023年6月9日
    00
  • JS+CSS实现带有碰撞缓冲效果的竖向导航条代码

    下面是JS+CSS实现带有碰撞缓冲效果的竖向导航条的完整攻略。 竖向导航条的HTML结构 我们的竖向导航条需要有以下几个元素: <ul> <li><a href="#">Home</a></li> <li><a href="#">Abo…

    css 2023年6月10日
    00
  • 25种提高网页加载速度的方法和技巧

    25种提高网页加载速度的方法和技巧 在当今互联网时代,拥有一个快速响应的网站是至关重要的。现在网络用户注重速度,如果您的网站加载速度过慢,可能会失去潜在用户。以下是25种提高网页加载速度的方法和技巧: 1. 压缩图片 图片是拖慢网页加载速度的主要因素之一。通过压缩图片文件可以减少文件大小,提高网页加载速度。 示例:使用ImageOptim,或Compress…

    css 2023年6月10日
    00
  • 关于css 行元素和块元素 相互转换 居中

    下面是关于CSS行元素和块元素相互转换和居中的完整攻略。 行元素和块元素 在HTML中,元素可以分为两种:行内元素和块级元素。 行内元素(inline)在排版时只占据相应的文本内容所占的空间,无法设置宽、高、内外边距、行高等属性,每个行内元素都紧贴着它的前后元素。例如:a、span、input等。 块级元素(block)占据整个容器的宽度,可以设置宽、高、内…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部