如何固定html表格头部,用css样式即可实现,操作简便、代码简单

简介: 如何固定html表格头部,用css样式即可实现,操作简便、代码简单

首先创建一个表格

表头:

<div class="table_box">
  <table cellspacing="0" cellpadding="0">
    <thead>
      <tr>
        <th><input type="checkbox" class="thItem" onclick="fn(this)"></th>
        <th>姓名</th>
        <th>岗位工资</th>
        <th>岗位级别</th>
        <th>性别</th>
        <th>生日</th>
        <th>手机号</th>
        <th>身份证号</th>
        <th>项目名称</th>
        <th>公司名称</th>
        <th>政治面貌</th>
        <th>籍贯</th>
        <th>学历</th>
        <th>创建时间</th>
        <th>员工状态</th>
        <th>用工形式</th>
        <th>现合同到期时间</th>
        <th>现合同期限</th>
        <th>银行卡卡号</th>
        <th>工资卡开户行</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody id="tb">
    </tbody> 
    </table>
</div>

tbody部分直接使用js,意思是使用循环在表格的主体部分加入了表格标签,不用大量的去复制空格子(其实就是up比较懒 (o▽`o) )

<script>
      let inp = document.getElementById("tb")
      let str = ""
      for(let i = 0 ; i < 20 ; i++){
        str += `<tr>
          <td><input type="checkbox" class="thItem""></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
        </tr>`
      }
      inp.innerHTML = str
    </script>

添加基本的css样式:

<style>
      .table_box{
        width: 1632px;
        overflow: scroll;
      }
      table{
        width: 3000px;
      }
      td,th{
        border: 1px solid #777;
        width: 200px;
      }
      td{
        height: 30px;
        text-align: center;
      }
    </style>

效果:

下面添加css样式,给需要固定的地方加粘性定位sticky

使用伪类选择器进行选定元素:

/* 第一列 */
      thead>tr>th:first-child{
        position: sticky;
        left: 0;
        background-color: rgb(240, 240, 240);
      }
      tbody>tr>td:first-child{
        position: sticky;
        left: 0;
        background-color: rgb(240, 240, 240);
      }
      /* 第二列 */
      thead>tr>th:nth-child(2){
        position: sticky;
        left: 144px;
        background-color: rgb(240, 240, 240);
      }
      tbody>tr>td:nth-child(2){
        position: sticky;
        left: 144px;
        background-color: rgb(240, 240, 240);
      }
    /* 最后一列 */
      thead>tr>th:last-child{
        position: sticky;
        right: 0;
        background-color: rgb(240, 240, 240);
      }
      tbody>tr>td:last-child{
        position: sticky;
        right: 0;
        background-color: rgb(240, 240, 240);
      }

效果:

完整代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <style>
      .table_box{
        width: 1632px;
        overflow: scroll;
      }
      table{
        width: 3000px;
      }
      td,th{
        border: 1px solid #777;
        width: 200px;
      }
      td{
        height: 30px;
        text-align: center;
      }
      /* 第一列 */
      thead>tr>th:first-child{
        position: sticky;
        left: 0;
        background-color: rgb(240, 240, 240);
      }
      tbody>tr>td:first-child{
        position: sticky;
        left: 0;
        background-color: rgb(240, 240, 240);
      }
      /* 第二列 */
      thead>tr>th:nth-child(2){
        position: sticky;
        left: 144px;
        background-color: rgb(240, 240, 240);
      }
      tbody>tr>td:nth-child(2){
        position: sticky;
        left: 144px;
        background-color: rgb(240, 240, 240);
      }
      /* 最后一列 */
      thead>tr>th:last-child{
        position: sticky;
        right: 0;
        background-color: rgb(240, 240, 240);
      }
      tbody>tr>td:last-child{
        position: sticky;
        right: 0;
        background-color: rgb(240, 240, 240);
      }
    </style>
  </head>
  <body>
    <div class="table_box">
      <table cellspacing="0" cellpadding="0">
        <thead>
          <tr>
            <th><input type="checkbox" class="thItem" onclick="fn(this)"></th>
            <th>姓名</th>
            <th>岗位工资</th>
            <th>岗位级别</th>
            <th>性别</th>
            <th>生日</th>
            <th>手机号</th>
            <th>身份证号</th>
            <th>项目名称</th>
            <th>公司名称</th>
            <th>政治面貌</th>
            <th>籍贯</th>
            <th>学历</th>
            <th>创建时间</th>
            <th>员工状态</th>
            <th>用工形式</th>
            <th>现合同到期时间</th>
            <th>现合同期限</th>
            <th>银行卡卡号</th>
            <th>工资卡开户行</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody id="tb">
        </tbody>
      </table>
    </div>
    <script>
      let inp = document.getElementById("tb")
      let str = ""
      for(let i = 0 ; i < 20 ; i++){
        str += `<tr>
          <td><input type="checkbox" class="thItem""></td>
          <td>张三</td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td>备注</td>
        </tr>`
      }
      inp.innerHTML = str
    </script>
  </body>
</html>

此文所实现的效果为纯css,适合新手,操作简单,如果使用js实现此效果的话会更加美观、简便,以后有机会还会一同分享有关js的实现方法 (▽`)

谢谢观看(/≧▽≦)/

目录
相关文章
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
699 2
|
12月前
精美按钮式广告代码HTML分享
精美按钮式广告代码HTML分享
300 4
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
继承 我们的CSS中很多的属性也是可以继承的,其中相当一部分是跟文字的相关的,比如说颜色、字体、字号。 当然还有一部分是不能继承的。 例如边框、内外边距。 层叠 层叠是CSS的核心机制。 层叠的工作机制: 当元素的同一个样式属性有多种样式值的时候,CSS就是靠层叠机制来决定最终应用哪种样式。 层叠规则: 层叠规则一:找到应用给每个元素和属性的声明。 说明:浏览器在加载每个页面时,都会据此查找到每条CSS规则, 并标识出所有受到影响的HTML元素。
226 0
|
存储 数据采集 JSON
你知道吗?html_table可以提取的不止是表格
`html_table` 是一种强大的工具,不仅用于HTML表格解析,还在现代爬虫技术中发挥重要作用。它可以提取、整合、分析和传输多种类型的关键数据。本文从四个方面探讨其功能:关键数据提取(如财经网站的股票信息)、零散信息整合(如电商网站的产品详情)、数据对比分析(如手机性能参数对比)和数据存储与传输(如转换为CSV/JSON格式)。通过Python代码示例,展示了如何利用代理IP、多线程和自定义请求头提高爬虫效率,实现对复杂网页数据的全面抓取和利用。
420 12
你知道吗?html_table可以提取的不止是表格
|
10月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
784 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
625 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
801 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
288 34
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
605 33
下一篇
开通oss服务