[DIV+CSS] 绘制2重交叉表

几年前曾有过 在Web上生成交叉表的需求,不过由于当时CSS+Div 尚未盛行, 以至于table+table的在页面上折腾. 最后也只能到2重交叉表的程度, 然而通用性,可读性都很差, 还不易于维护. 于是随着Css+Div布局潮流,重写了交叉表(2重,3重...多重) 并在项目中运用了. 在这整理一下.

先说下2重交叉表

首先确立结构:

<div class="table tableContainer">

<div class="theadL">&nbsp;</div>

<div ></div>

<div >

<div >

</div>

先说下scrollDiv 方法主要是为了实现表体滚动的时候表侧和表头能同时跟着滚动. 代码很简单.

function scrollDiv() {

document.getElementById('theadR').scrollLeft = document.getElementById('tbodyR').scrollLeft;

document.getElementById('tbodyL').scrollTop = document.getElementById('tbodyR').scrollTop;

}

定义好结构以后就是css定制了.

首先给最外层table 定义边距 margin-left:20px;margin-bottom:15px;

然后是内部4块

左上部分表头最简单,但是也很重要, 他的高度对应着右表头的的高度,宽度对应着表侧的宽度. 至于外边框则根据需要加了.

.table .theadL{top:0px;left:0px;width:300px;height:103px;background:Silver;border-top:solid 1px black;border-left:solid 1px black;}

右上部分表头主要是为了和表体部分竖线对齐, 所以列宽全部设死, 列内设置div 并且设置 overflow:hidden.

表侧也同理 并且设置高度和表体部分列高一样.

表侧部分的样式就简单了 只要设置下列内div 高度宽度 和overflaw:hidden 保证内容不益处就好了.

.table .tbodyL{top:103px;left:0px;width:300px;height:250px;border-bottom:solid 1px black;border-right:solid 1px black;}

.table .theadR{top:0px;left:299px;width:500px;height:103px;border-top:solid 1px black;border-top:solid 1px black; }

.table .tbodyR{top:103px;left:300px;width:517px;height:267px;}

效果如下:

[DIV+CSS] 绘制2重交叉表

还有更复杂的交叉表,也是差不多处理. 总而言之,DIV+CSS布局确实可以把很多复杂WEB设计问题简单化.

继续学习中....