一. 通过css控制table y方向上滚动

html中没有滚动条,可以根据overflow属性的scroll来对table显示不完全的内容进行滚动.
只是y方向上滚动,很简单,只要设置div的height高度。然后设置overflow-y:scroll。这样当内容高度超过了height设定的高度,就会出现滚动条
css:
.scroll_y{

max-height: 200px;

/* 宽度大概比表头宽17px,具体值实际调试 */

width:531px;

overflow-y: scroll;

}
代码:

二.通过css控制table x,y方向上滚动

x方向上滚动。则必须设定表格宽度,当超过设定宽度后就显示滚动条。
1.对于表头的table  div 的overflow属性设置为hidden,height属性控制显示宽度
.top-div{

width:500px;

overflow:hidden;

}
2. 下面显示部分的table div的overflow属性设置为scroll,height属性控制显示宽度(比表头的宽度宽一个滚动条的宽度)
.right-div{

width:517px;

overflow:scroll;

max-height:200px;

}
3.javascript 中onscroll事件或jquery中scroll事件来控制当下面显示部分表格滚动条沿x方向滚动时,表头table也沿x方向滚动
<script type="text/javascript">

var $top=document.getElementById("top-div");

var $right=document.getElementById("right-div");

function scroll(){

$top.scrollLeft = $right.scrollLeft

}

$right.onscroll=scroll;

</script>
具体代码如下:

效果图

三. 表格宽度

上面两段代码是在table的设置上是有差异的:第二个例子的css 样式table.item将table-layout:fixed去除掉了。因为如果不去除掉。显示效果是下面这样的 

上面表头的table宽度设置无效了。可以看到前面合并表头【技术部】【市场部】【财务部】的宽度一致了。width属性不生效了。

1. 分析下table-layout:

默认属性是auto。设置列宽后。当表列中的所有内容长度都不超过设置的列宽。那么列宽就是设定的width值。否则列宽是此列中内容最长的宽度。也就是说列宽的确定是在加载完所有行内容之后确定。
fixed-out:设定为fixed-out后。列宽就由设定此列的width值,表格宽度来决定。表格显示与表格的内容无关。所以浏览器能够在接收到第一行就显示数据。
补充实际列宽值计算:
加入由三列 width分别设为 100px,200px.300px.而将table的宽度设为1200px.
那么实际table的各列宽度应该是 100/(100+200+300)*1200=200px ,400px,600px.
基于以上分析。当去掉table-layout:fixed属性。表格正常显示,加上则异常。说明出现上述问题的根本是列的宽度。

2.分析下colspan

   上面的表头table和下面的内容table css样式相同。为什么上面的table会出现那样的问题。而下面的table显示正常呢。
   通过将上面的table 替换成常规table,即没有列合并。发现不存在上述问题。那么说明问题的关键就是colspan了
    在1种已经分析了对于fixed-out.列宽是如何确定的。所有列宽都是由第一行确定的。所以部门下面的【技术部】【市场部】【财务部】的宽度是一样(这行是第二行了)
    到此,问题分析结束。

3.解决方案

   基于以上分析。解决方案有两个

1)去掉table-layout:fixed-out属性

2)使用colgroup提前确定好列宽。

<colgroup>

<col class="techDepartment"></col>

<col class="marketDepartment"></col>

<col class="financeDeparment"></col>

<col class="name"></col>

<col class="age"></col>

<col class="from"></col>

<col class="level"></col>

</colgroup>






CSS 控制table 滑动及调整列宽等问题总结的更多相关文章

  1. JQuery 表格拖动调整列宽效果

    类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放开鼠标,表格列宽会被调整.最近比较空闲,便自己动 ...

  2. 【Qt开发】QTableWidget设置根据内容调整列宽和行高

    QTableWidget要调整表格行宽主要涉及以下一个函数 1.resizeColumnsToContents();                      根据内容调整列宽            ...

  3. [办公应用]我的WORD文档表格操作不灵活 无法调整列宽

    最近同事的一个word文档中的表格操作非常不灵活,用鼠标直接调整列宽时总觉得很不灵活.她的操作系统为XP,office 为微软office 2003. 我首先检查了木马,检查了输入法等,结果都没有问题 ...

  4. MS WORD 表格自己主动调整列宽,自己主动变美丽,依据内容自己主动调整

    在MS WORD中,当有大量的表格出现时,调整每一个表格的的高和宽和大小将是一件很累的事情,拖来拖去,很耗时间,并且当WORD文档达到300页以上时,调整反应很的慢,每次拖拉线后,须要等待一段时间其才 ...

  5. Java使用POI为Excel打水印,调整列宽并设置Excel只读(用户不可编辑)

    本文介绍在Java语言环境下,使用POI为Excel打水印的解决方案,具体的代码编写以及相关的注意事项. 需求描述: 要求通过系统下载的Excel都带上公司的水印,列宽调整为合适的宽度,并且设置为不可 ...

  6. C# dataGridView根据数据调整列宽

    //自适应列宽 this.dgvBaoming.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.A ...

  7. 完美实现保存和加载easyui datagrid自定义调整列宽位置隐藏属性功能

    需求&场景 例表查询是业务系统中使用最多也是最基础功能,但也是调整最平凡,不同的用户对数据的要求也不一样,所以在系统正式使用后,做为开发恨不得坐在业务边上,根据他们的要求进行调整,需要调整最多 ...

  8. css控制table的td宽度

    今天发现即使设置table的td.th宽度,仍是不管用,是根据table的td的内容来适应宽度,导致其他的th.td丢失. 下图就是浏览器渲染的table,导致缺失"端口"这一列, ...

  9. 使用css控制table的cellspacing和cellpadding属性

    HTML默认的表格样式之间有间隙,每次为了解决这些问题,总要在table标签里添加cellspacing和cellpadding,你是否也很厌倦这样的写法, 那么有没有对应的CSS属性能达到相同的效果 ...

随机推荐

  1. Java8-理解Colloctor

    上一节学习了Java8中比较常用的内置collector的用法.接下来就来理解下collector的组成. Collector定义 Collector接口包含了一系列方法,为实现具体的归约操作(即收集 ...

  2. ⏰Day.js 2kB超轻量时间库 和Moment.js一样的API

    Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间.但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API.虽然 ...

  3. Linux学习之CentOS(十五)----磁盘管理之 启动挂载(转)

    启动挂载 /etc/fstab 及 /etc/mtab 刚刚上面说了许多,那么可不可以在启动的时候就将我要的文件系统都挂好呢?这样我就不需要每次进入 Linux 系统都还要在挂载一次呀!当然可以啰!那 ...

  4. logback学习二

    转载:https://www.cnblogs.com/DeepLearing/p/5663178.html 属性 : debug : 默认为false ,设置为true时,将打印出logback内部日 ...

  5. Why Helm? - 每天5分钟玩转 Docker 容器技术(160)

    本章我们将学习 Helm,Kubernetes 的包管理器. 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Hel ...

  6. python 类属性.方法 实例的基本用法

    class man(): classify = "people"# 全局属性 def __init__(self,name,age,value,):#类方法 self.name = ...

  7. Mac下安装PEAR

    The following instructions install PEAR and PECL on Mac OS X under/usr/local/. PECL is bundled with ...

  8. Node.js 控制台

    稳定性: 4 - 冻结 {Object} 用于打印输出字符到 stdout 和 stderr.和多数浏览器提供的 console 对象函数一样,Node 也是输出到 stdout 和 stderr. ...

  9. MySQL系列教程(三)

    mySQL集群(cluster) 这一章,我根本不打算写,因为mySQL 的 官方Cluster方案基本上都是bullshit,尤其是它的官方集群方案,竟然都无人维护了,而且mySQL集群完全可以用眼 ...

  10. 安卓高级EventBus使用详解

    我本来想写但是在网上看了下感觉写得不如此作者写得好:http://www.jianshu.com/p/da9e193e8b03 前言:EventBus出来已经有一段时间了,github上面也有很多开源 ...