固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>
 
 
先上图例
 

&


无论多少数据……都完美!

背景:由于我司行业方向,需要很多数据报表,则table是当仁不让的首选,一般的数据,普通的table即可满足需求;涉及到,数据过多时候,要左右可以滚动查看数据,且头部要锁定。则需要深入开发一下了!
 

 A:单一table来实现需求
  html结构如下
  <table  class="form-table">
       <thead class="fixed-thead"></thead>
   <tbody class="scroll-tbody"></tbody>
   <tfoot class="fixed-tfoot"></tfoot>
  </table>
thead、tfoot设置display: block;
tbody设置display: block;overflow: auto;and 固定高度数值;
为了使得上中下方对齐,在给thead、tfoot设置padding-right: 17px;(17px为滚动条的宽度)
以及给td设置width: 25%;(100%/X)值为td的列数
so,这样既可实现完美对齐的效果.而且,这版也实现了td内容多了,会自适应撑开,左右居中,垂直居中对齐
ps:前面几个版本中,破坏了tr  td默认的属性值,来来回回写了很多float,block,现在这个版本,最为精简.
不管结构还是样式,都做到了,目前的最简!
但是,这样得写死td的固定宽度,应用到项目中,还需根据需求js来计算td数量,在重新计算td宽度,来实现,分配!
另:此版只兼容 IE10+

B:可以说是3个table来实现
html结构如下
<div class="container">
   <table class="form-table fixed-thead"></table>
   <div class="scroll-box">
       <table class="form-table"></table>
   </div>
   <table class="form-table fixed-tfoot"></table>
</div>
那么,为什么,需要给第二层 中间的内容,嵌套一层 div呢?是为了解决,IE下没有滚动条的兼容性问题.
至于头部和尾部,这里可以使用div,可以使用table,ul等

C:flex实现table表头固定
  html结构如下
  <table  class="form-table">
       <thead class="fixed-thead"></thead>
   <tbody class="scroll-tbody"></tbody>
   <tfoot class="fixed-tfoot"></tfoot>
  </table>
只是使用了display: -webkit-flex;属性,就可以完美兼容了谷歌等高级浏览器,在移动端,效果最佳.
前途很美好,明媚!如此,世界很安静了。
但是,均分了,相当于写死单元格td宽度了。

D:div模拟表格
 搜索了很多业界的写法,很多div模拟的表格。不能说对与错吧。我司是使用table标准的领跑者。
 但是也做了一个demo,详情可见附件

F:最终版
​然而上面所述的实现上有个条件是要提前设置单元格的大小,如果不设置, 就会错位!

当前我们的zui框架里面采取的是,js计算tbody的td单元格宽度,在赋值给thead,当列多了,会有点丝丝错位

经过国庆佳节的打磨,融汇出了一个完全自适应宽度,且始终对齐的 “数据表格”版本!
这个运用了css3中的transform,相当于是复制了份出来,然后transform的计算速度也够快。用这个做这个功能非常合适,还要加点js用于监听滚轮。

结构如下
<div class="table-cont">
<table>
   <thead>
      <tr><th></th></tr>
   </thead>
    <tbody>
      <tr><td></td></tr>
   </tbody>
</table>
</div>

剩余的交给css去实现吧
css关键点

thead th{
position: relative;
}

.table>tbody>tr>td,
.table>tbody>tr>th,
.table>tfoot>tr>td,
.table>tfoot>tr>th,
.table>thead>tr>td,
.table>thead>tr>th {
white-space: nowrap;
}

(详情可参考附件文件夹:success-单列.rar、success-多列.rar)是为最简洁的版本!
 
 下载地址:https://files.cnblogs.com/files/leshao/table%E6%95%B0%E6%8D%AE%E8%A1%A8%E6%A0%BC.rar
 合并单元格也可以零错位:https://files.cnblogs.com/files/leshao/%E6%95%B0%E6%8D%AE%E8%A1%A8%E6%A0%BC-%E5%9B%BA%E5%AE%9A%E3%80%81%E8%87%AA%E9%80%82%E5%BA%94v1.0.rar

如上详情,分析对应的demo效果,附件文件夹都有,详情可自行下载查看。

虽然,写的不怎么样,作为一个储备库吧,日后会不断完善,更新,避免再次填坑。

以上是我目前网络搜寻书籍参考结合实践后的理解总结。仅作为备忘录而已。
如有错误,请不吝赐教;如有疑问,欢迎讨论;如有帮助,万分荣幸;如有雷同,握个手吧…………
 
 感谢 午夜,面包,小武,一棵树,大侠,lost ,石头等集思广益,精益求精  。
 
 

固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>的更多相关文章

  1. 表格单元格td设置宽度无效的解决办法 .

    http://zzstudy.offcn.com/archives/11366 在做table页面时,有时对td设置的宽度是无效的,td的宽度始终有内部的内容撑开,可以设置padding,但直接设置w ...

  2. Java导出Excel表,POI 实现合并单元格以及列自适应宽度(转载)

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...

  3. POI 实现合并单元格以及列自适应宽度

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...

  4. JAVA操作Excel时文字自适应单元格的宽度设置方法

    使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...

  5. asp.net使用控件datagrid实现表头单元格合并

    合并的要点: 1.datagid的单元格合并原理是table中tr,td的布局实现; 2.合并的时机实在其datagridcreate事件中实现; 3.认识一个对象TableCellCollectio ...

  6. (zz)设置单元格的宽度和高度

    (zz)设置单元格的宽度和高度 博客分类: POI生成Excel   在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致.所以要设置单元格的宽度,我们就得从列 ...

  7. 在一个Excel单元格内输入多行内容

    有时候,我们想在一个Excel单元格中输入多行内容,可以根据不同情况选择下面的方法来实现: 方法一:如果有大量的单元格需要这样做,采取此种设置格式的方法,选中需要这种格式的单元格,执行“格式→单元格” ...

  8. ie固定table单元格宽度

    <table border="0" style="width:690px; table-layout:fixed;"> <tr> < ...

  9. css对html中表格单元格td文本过长的处理

    参考 http://www.cnblogs.com/lekko/archive/2013/04/30/3051638.html http://www.zhangxinxu.com/wordpress/ ...

随机推荐

  1. Solr7.1---数据库导入并建立中文分词器

     这里只是告诉你如何导入,生产环境不要这样部署你的solr服务. 首先修改solrConfig.xml文件 备份_default文件夹 修改solrconfig.xml 加入如下内容 官方示例:< ...

  2. java poi 导入日期为空

    如上两图,如果是第一种的话,可以导入,,但,如果是第二种的话,导入为空查看,导入的文件,有这么一条 debugger发现 它把2017-11-01转为Double,转不了,出错了,所以,我在catch ...

  3. Cocos2d-x 3.0 Android改动APK名、更改图标、改动屏幕方向、改动版本,一些须要注意的问题

    非常多新手程序员做出一个游戏后,编译成apk安装在手机上.却发现安装程序名和游戏图标都是Cocos2dx默认的,并且默认屏幕方向是横向.那么须要怎么才干改动为自己想要的呢? 打开你创建的project ...

  4. .Net 5分钟搞定网页实时监控

    一.为什么会用到网页实时监控 LZ最近在无锡买房了,虽然在上海工作,但是上海房价实在太高无法承受,所以选择还可以接受的无锡作为安身之地.买过房的小伙伴可能知道买房的流程,买房中间有一步很重要的就是需要 ...

  5. spring mvc对静态资源的访问

    如果我们的项目使用的是springmvc,在web.xml中会有一段这的配置. <servlet> <servlet-name>springMvc</servlet-na ...

  6. WebAPI返回JSON

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  7. 串String(1):串的实现(定长顺序存储结构)

    前言 PS:本文相关头文件.预编译以及typedef如下,阅读一遍以便于下面的理解: #include <stdio.h> #include <stdlib.h> #inclu ...

  8. iOS UIAlertController在Tableview中显示缓慢,迟钝,延迟

    在UITableViewCell中弹窗Alert延迟.在cellForRow中:cell.selectionStyle = UITableViewCellSelectionStyleNone; 或者在 ...

  9. python变量字符拼接

    cpu = instances['vcpus_current'] cpu1 = str(cpu) + '核' memory = instances['memory_current'] / 1024 m ...

  10. BSGS离散对数(Baby-Step-Giant-Step)

    BSGS离散对数(Baby-Step-Giant-Step) 题目: 给定\(x,y,p,\)求最小的自然数\(k\)满足\(x^k=y(\mod p)\)\(p\le2^{31}\)(满足一定有答案 ...