table头部、尾部固定;中间内容定高自适应滚动

很多时候,需要使用到表格做数据分析,不管是前端展现,还是后台管理系统节点展现

工作过程中遇到了,作为一个小笔记,备忘!

如下图所示

---------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------

表格的头部,和尾部是固定不动的,中间内容随着内容的增多,而出现滚动条。

<!--container-->

<div class="container">
  <table class="form-table" cellpadding="0" cellspacing="0">

    <thead class="fixed-thead" id="head">
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年龄</th>
    </tr>
    </thead>

   <tbody class="scroll-tbody" id="body">
      <tr>
          <td>1</td>
        <td>张三</td>
        <td>男</td>
        <td>18</td>
      </tr>

</tbody>

   <tfoot class="fixed-tfoot">
      <tr>
        <td>序号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>年1龄</td>
        </tr>
   </tfoot>

</table>

</div>
<!--container-->

如上html结构简单。精简。

/*各个部分样式*/

@charset "utf-8";
body{
overflow: hidden;
}
.container {
border: 1px #ccc solid;
width: 90%;
margin: 100px auto;
}

.form-table {
width: 100%;
border-collapse: collapse;
margin: 0 auto;
text-align: center;
table-layout: fixed;
}

.form-table th {
border-left: none;
border-top: none;
border-right: 1px #ccc solid;
border-bottom: 1px #ccc solid;
background: #F3F3F3;
}

.form-table td {
border-left: none;
border-top: none;
border-bottom: 1px #ccc solid;
border-right: 1px #ccc solid;
}
.fixed-thead,
.fixed-tfoot {
display: block;
/*width: 99%;*/
width: -webkit-calc(100% - 17px);
width: -moz-calc()(100% - 17px);
width: calc(100% - 17px);
height: 50px;
}
.fixed-tfoot tr td {
background: #F3F3F3;
border-bottom: none;
}
.fixed-thead tr,
.fixed-tfoot tr {
width: 100%;
height: 50px;
line-height: 50px;
display: block;
}

.fixed-thead tr th,
.fixed-tfoot tr td {
float: left;
display: block;
width: 25%;
height: 50px;
font-size: 16px;
text-align: center;
}

.scroll-tbody {
display: block;
height: 306px;
overflow: auto;
width: 100%;
}

.scroll-tbody tr {
width: 100%;
display: block;
height: 40px;
line-height: 40px;
}

.scroll-tbody tr td {
float: left;
display: block;
width: 25%;
}

.form-table .scroll-tbody tr:nth-child(odd) td {
background-color: #ECE9D8;
}

-------------------核心对齐样式---------------------

width: -webkit-calc(100% - 17px);
width: -moz-calc()(100% - 17px);
width: calc(100% - 17px);

兼容高级浏览器

-----------------------------------------------------

为了兼容IE6,可以使用如下 js去实现

<script type="text/javascript">
window.onload=window.onresize=function (){
var body=document.getElementById("body");
var head=document.getElementById("head");
head.style.width=(body.scrollWidth)+"px";
}
</script>

----------------------------------------------------

下载地址:http://files.cnblogs.com/files/leshao/table%E8%A1%A8%E6%A0%BC%E5%86%85%E5%AE%B9%E6%BB%9A%E5%8A%A8-calc%E7%89%88.rar

感谢 兴友、炜等人的协助得以完善,精益求精!

时间: 2024-10-09 15:36:04

table头部、尾部固定;中间内容定高自适应滚动的相关文章

页面内容小于一屏时仍能头部在头部尾部在尾部

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>页面内容小于一屏时仍能头部在头部尾部在尾部</title> <style> *{ padding:0; margin:0; text-align:center; } /* html, body {height: 100%;}*/ header{

ElementUI Table 首行固定

本文地址: https://www.cnblogs.com/veinyin/p/12101047.html 需求描述:首行固定,吸附在表头下,数据多时其他行可以纵向滚动 方案一  两个表格拼凑 第一个表格展示头部和固定行 第二个表格展示其它数据 示意图如下 适用场景:仅横向 纵向均无滚动条时可用 若有横向滚动条,两个表格的滚动条是分开的,会出现滚动A  B不动,或滚动B A不动的情况,Windows下会展示两个横向滚动条,不美观 若有纵向滚动条,在Windows下滚动条是默认有宽度的,滚动条的宽

ExtraViewWrapperAdapter--添加额外头部尾部功能的装饰adapter

目录 目录 概述 关于头部和尾部 分离原始数据及装饰数据 headerView与footerView的创建与显示 使用唯一的标签 关于headerView与FooterView位置的计算 头部尾部的判断方式 与HeaderRecycleAdapter的接口相关 其它 使用方式 GitHub地址 示例图片 概述 对于ListView有自带的方法添加headerView及footerView,但是RecycleView仅仅只是维护缓存的View,本身并不处理内容显示,都交给了RecycleView.

LODOP打印table表格宽度固定-超宽隐藏

之前有博文介绍关于超出div隐藏内容的:LODOP打印超过后隐藏内容样式里面提到了overflow:hidden;控制超出后隐藏,但是前面那篇用的是div,如果是在table中,由于table默认的table-layout是auto自动,虽然设置了超出隐藏,也设置了具体的td单元格宽度,设置了table的具体宽度,但是因为这个able-layout是auto还在,内容超过设置的宽度,表格宽度也会发生变化,设置的具体的td的宽度也没有完全按照设置的宽度进行布局. 前面还有篇是介绍固定table宽高

margin+absolute布局:右栏固定主内容自适应 demo

margin+absolute布局:右栏固定主内容自适应 demo 头部 Aside侧边栏区域 Main主内容区域 底部 #demo{width:80%;margin:auto;height:300px;} #hd2,#ft2{height:50px;background-color:#aaa;} #bd2{position:relative;margin:10px 0;} #aside2{position:absolute;top:0;right:0;width:200px;backgroun

基于超声波的四轴定高控制简析

笔者是来自武汉理工的小青同学,接下来为大家讲一下基于超声波的定高问题,鉴于笔者能力有限,所以如有错误请多指教,且很多仅仅是工程上的近似化应用,没有做过仿真模拟. 我讲的东西更加偏重于实践,可以帮助你切实的实现这个应用! 基于超声波的定高主要有如下几个问题: 硬件和安装技巧? 超声波测距的算法(如何编程,如何处理结果)? 是用什么样子的PID算法? 如何调试更加快捷? 实际开发将会遇到哪些棘手问题? 定高控制如何实现较为稳定为起降? 笔者做定高用了一个星期,而且参考了别的算法,实现比较简单,但是真

BaseRecyclerAdapter之添加不同布局(头部尾部)

最近写了个Android开源库「BaseRecyclerViewAdapterHelper」集成了很多常见需求的解决方案,希望大家多多star哦~! 效果如何? 如何使用? 多个不同布局 public class MultipleItemAdapter extends BaseQuickAdapter<String> { private final int TEXT_TYPE = 1; private int mTextLayoutResId; public MultipleItemAdapt

phpcms后台管理基本操作(头部尾部的替换)

phpcms是一款非常便捷的网站管理软件,从网上下载好软件后放在wamp的www目录下,然后通过路径一步步安装就好了.数据库要写上自己数据库的名字和密码,如果没有密码则不写,登录后就是这个后台页面: 1.要做网站的话注意两个文件夹,phpcms里的templates是放自己新建的模板,在模板文件夹下建一个content子文件,把写好的html文件都放在content里边并且修改名字.statics里要放自己写的css.js.images,最好分门别类的放在各自的文件夹里. 2.创建好文件后回到后

table表格某一td内容太多导致样式混乱的解决方案

在开发过程难免遇到这样那样的问题.对于有很多条目的数据,我们通常采用table元素来快速实现.如果某一个td的内容太多的话就会出现下面的情况,导致样式混乱难看. 解决方案 要让table的宽度固定我们可以给table元素设置table-layout:fixed;样式,但这样表格的宽度问题是解决了,但是里面的内容并不会自动换行.我们还需要给td设置word-break: break-all; word-wrap:break-word;即可完美解决. http://www.7kxs.com/4gsh