[DIV+CSS] 绘制2重交叉表
几年前曾有过
在Web上生成交叉表的需求,不过由于当时CSS+Div 尚未盛行, 以至于table+table的在页面上折腾.
最后也只能到2重交叉表的程度, 然而通用性,可读性都很差, 还不易于维护.
于是随着Css+Div布局潮流,重写了交叉表(2重,3重...多重) 并在项目中运用了. 在这整理一下.
先说下2重交叉表
首先确立结构:
<div class="table tableContainer">
<div class="theadL"> </div>
<div id="theadR" class="theadR"></div>
<div id="tbodyL" class="tbodyL">
<div id="tbodyR" class="tbodyR" onscroll="scrollDiv();">
</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布局确实可以把很多复杂WEB设计问题简单化.
继续学习中....
先说下2重交叉表
首先确立结构:
<div class="table tableContainer">
<div class="theadL"> </div>
<div id="theadR" class="theadR"></div>
<div id="tbodyL" class="tbodyL">
<div id="tbodyR" class="tbodyR" onscroll="scrollDiv();">
</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布局确实可以把很多复杂WEB设计问题简单化.
继续学习中....