一. 通过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. 关于导入excel问题

    关于导入excel问题: 在VS中可以导入,部署在IIS上无法导入的原因: 1.可能部署IIS上发布的文件设置为只读,没有写入权限.解决方法为:设置程序发布的文件夹,添加写入权限,以及asp.net ...

  2. glusterfs 4.0.1 rpc 分析笔记2 (socket.so 模块)

    socket.c在4000行位置定义了一组结构函数,我们可以从这里开始找到入口,如果是客户端则需要调用connect, 如果是服务端则需要调用listen, struct rpc_transport_ ...

  3. 干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 云+导语:4月22日,由腾讯云和 Kafka 社区主办.开源中国协办的腾讯云+社区技术沙龙 Kafka Meetup 深圳站在腾讯大厦举行, ...

  4. Safari 3D transform变换z-index层级渲染异常

    (猛戳来源:http://www.zhangxinxu.com/wordpress/?p=5569)

  5. spring的@Transactional(rollbackFor=Exception.class)的使用

    Spring框架的事务基础架构代码将默认地只在抛出运行时和unchecked exceptions时才标识事务回滚. 也就是说,当抛出个RuntimeException 或其子类例的实例时.(Erro ...

  6. angularjs中关于跨域设置白名单

    在config中注入$sceDelegateProvider服务使用resourceUrlWhitelist([])方法添加白名单 跨域时将method的属性设置为"jsonp"就 ...

  7. mongo索引

    索引自动创建和手工创建 db.stu.drop(); db.stu.insert({"name":"张三","sex":"男&qu ...

  8. FJUT第四周寒假作业之第一集,临时特工?(深度优先搜索)

    原网址:http://210.34.193.66:8080/vj/Contest.jsp?cid=163#P2 第一集,临时特工? TimeLimit:1000MS  MemoryLimit:128M ...

  9. 存出和载入Docker镜像

    存出镜像 如果要导出镜像到本地文件,可以使用 docker save 命令. $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL ...

  10. Android简易实战教程--第五十话《动画扫描》

    祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...