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

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

    先说下2重交叉表
    首先确立结构:
     <div class="table tableContainer">
       <div class="theadL">&nbsp;</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设计问题简单化.
继续学习中....
   

posted on 2008-06-25 23:30  neil-zhao  阅读(482)  评论(1编辑  收藏  举报

导航