表格的头部固定效果通过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日

相关文章

  • 教你如何在pycharm中使用less

    下面是详细讲解如何在PyCharm中使用Less: 准备工作 在使用PyCharm中使用Less之前,需要进行以下准备工作: 安装Less插件:在PyCharm的插件市场中搜索并安装Less插件,或者进入PyCharm设置 Settings > Plugins > Marketplace 中搜索安装。 配置文件编译:在PyCharm的设置中,配置…

    css 2023年6月10日
    00
  • min-height和min-width两个最小高度和最小宽度兼容多浏览器版本

    要指定一个元素的最小宽度和/或最小高度,可使用CSS的min-width和min-height属性。当元素必须填充其包含框时,这些属性特别有用。 在使用min-width和min-height属性时,有几个兼容性问题可能需要注意。以下是一些解决这些问题的方法。 1. 设置DOCTYPE 在HTML文档开头的第一行添加DOCTYPE声明可以确保浏览器正确地渲染…

    css 2023年6月10日
    00
  • Vue 框架之动态绑定 css 样式实例分析

    Vue 框架之动态绑定 CSS 样式实例分析 在 Vue 框架中,我们可以通过动态绑定 CSS 样式来实现更加灵活的页面布局和效果。 Vue 样式绑定方式 Vue 框架中,有三种方式可以动态绑定 CSS 样式,分别为类绑定、样式绑定和内联样式绑定。 类绑定 通过:class语法可以绑定类名到元素上,例如: <div :class="{ act…

    css 2023年6月10日
    00
  • CSS样式表创建美妙绝伦的网站

    那我就来为大家详细讲解一下“CSS样式表创建美妙绝伦的网站”的完整攻略。 CSS样式表是什么? CSS是一种样式表语言,用于描述网页上的样式和布局。通过在网页中添加CSS样式表,我们可以更加自由地控制网页的样式,使网页的布局、颜色、字体、大小、边框、背景等很多方面更加美观和响应式。 为什么使用CSS样式表? CSS样式表与网页HTML结构代码分离,这意味着我…

    css 2023年6月9日
    00
  • jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)

    标题 首先需要明确本文的主题和结论,使用一级标题: jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载) 介绍 接着将内容扩充至简短的介绍,介绍文章的主要内容和意义: 在网页设计中,图片放大缩小是常见的操作,而鼠标滚动又是一种常见的交互方式。这篇文章将会介绍使用jQuery实现滚动鼠标放大缩小图片的方法,读者将能够在您的网站中使用此方法,提升用户…

    css 2023年6月10日
    00
  • 如何试着在你的css增加粘稠效果

    在 CSS 中增加粘稠效果是一种常见的技巧,可以用于实现各种效果,如悬停效果、下拉菜单等。以下是关于如何在 CSS 中增加粘稠效果的完整攻略。 步骤一:创建 HTML 结构 首先,需要在 HTML 文件中创建一个容器元素,用于包含需要增加粘稠效果的元素。以下是一个示例: <div class="sticky"> <p&g…

    css 2023年5月18日
    00
  • css3选择器基本介绍

    CSS3选择器基本介绍 选择器的作用 CSS选择器用于匹配HTML元素,并为其添加样式。选择器是一种模式匹配的机制,可以选择具有特定属性的HTML元素。理解不同的选择器是用于创建网页的基础。 基本选择器 基本选择器是CSS中最简单的选择器。基本选择器可以根据标签名、类名、ID等对网页中的元素进行选择。 标签选择器 语法如下: 标签名 { 属性: 值 } 其中…

    css 2023年6月9日
    00
  • 使用Html5、CSS实现文字阴影效果

    那么首先我们需要了解一下什么是文字阴影效果。文字阴影是给字体添加一个阴影,使其在页面中看起来更具有层次感,更加突出。使用 HTML5 和 CSS 实现文字阴影效果的方法有多种,下面我将为你提供其中两种使用示例。 方法一 在 HTML 中,使用 h1 标签创建一个标题。 <h1>这是一个标题</h1> 在 CSS 中,使用 text-s…

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