zoukankan      html  css  js  c++  java
  • 表格列固定

    <!doctype html>
    <html dir="ltr" lang="zh-CN">
      <head>
        <meta charset="utf-8"/>
        <title>类似excel的滚动机制,当移动滚动条时固定table的第一行和第一列</title>
        <style type="text/css">
          #table-container{650px;height:250px;overflow: auto;margin: 50px;border: 1px solid #DDD;}
          #table-container table{ 100%;border- 0;border-collapse: collapse;}
          #table-container table td{padding: 0;border-right: 1px solid #DDD;border-bottom: 1px solid #DDD;background: #FFF;}
          #table-container .table-top td, #table-container .table-lt td, #table-container .table-left td{background: green;}
      
          #table-container .table-top td:last-child{border-right: 0px solid #DDD;}
          #table-container .table-right td:last-child{border-right: 0px solid #DDD;}
          #table-container .table-right tr:last-child td{border-bottom: 0px solid #DDD;}
          #table-container .table-left tr:last-child td{border-bottom: 0px solid #DDD;}
        
          #table-container td div{display: inline-block;max- 200px;margin:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align: left;line-height: 24px;}
            
          #table-container .table-lt{position: fixed;z-index:3;}
          #table-container .table-top{position: fixed;overflow:hidden;z-index:2;}
          #table-container .table-left{position: fixed;overflow:hidden;z-index:2;}
          #table-container .table-right{position: relative;z-index:1;}
          #table-container .table-mask{position: relative;}
            
        </style>
        <script type="text/javascript" src="jquery-1.7.1.js"></script>
      </head>
      <body>
      
        <div id="table-container">
          <div class="table-lt">
            <table>
              <tbody>
                <tr>
                  <td>
                    <div>
                      header-left-top
                    </div>
                  </td>
                </tr>
              </tbody>
            </table>
          </div>
          <div class="table-top">
            <div class="table-mask">
              <table>
                <tbody>
                  <tr>
                    <td>
                      <div>topTitle1</div>
                    </td>
                    <td>
                      <div>topTitle2</div>
                    </td>
                    <td>
                      <div>topTitle3</div>
                    </td>
                    <td>
                      <div>topTitle4</div>
                    </td>
                    <td>
                      <div>topTitle5</div>
                    </td>
                  </tr>
                </tbody>
              </table>
            </div>
          </div>
          <div class="table-left">
            <div class="table-mask">
              <table>
                <tbody>
                  <tr>
                    <td>
                      <div>leftTitle1</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle2</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle3</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle4</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle5</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle6</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle7</div>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <div>leftTitle8</div>
                    </td>
                  </tr>
                </tbody>
              </table>
            </div>
          </div>
          <div class="table-right">
            <table>
              <tbody>
                <tr>
                  <td>
                    <div>uoifdfdfuiuiouiouuoifdfdfuiuiouiouuoifdfdfuiuiouiouuoifdfdfuiuiouioud</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiouuoifdfdfuiuiouiouuoifdfdfuiuiouiouuoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div>uoiuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoifdfdfuiuiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiufdsfsdfiouiou</div>
                  </td>
                  <td>
                    <div>uoiuiusiouiou</div>
                  </td>
                </tr>
              </tbody>
            </table>
          </div>
      
        </div>
      
        <script type="text/javascript">
          $(document).ready(function(argument) {
            var container = $("#table-container"),
                ltTable = container.find(".table-lt"),
                topTable = container.find(".table-top"),
                leftTable = container.find(".table-left"),
                rightTable = container.find(".table-right"),
      
                containerWidth = 0,
                containerHeight =0,
      
                ltTableWidth = 0,
                ltTableHeight = 0,
      
                widthJson = {},
      
                timerLT = null;
      
            ltTableWidth = ltTable.width();
            ltTable.width(ltTableWidth);
            topTable.css("marginLeft",ltTableWidth);
            leftTable.width(ltTableWidth);
            rightTable.css("marginLeft",ltTableWidth);
            ltTableHeight = ltTable.height();
            leftTable.css("marginTop",ltTableHeight+"px");
            rightTable.css("marginTop",ltTableHeight+"px");
      
            containerHeight = container.height();
            containerWidth = container.width();
            topTable.width(containerWidth - ltTableWidth - (container.innerWidth() - container[0].clientWidth));
            leftTable.height(containerHeight - ltTableHeight - (container.innerHeight() - container[0].clientHeight));
      
            // figure out the width of each DIV in TD  --start
            function setDivWidth(obj){
              $(obj).find("div").each(function(index){
                if(!widthJson[index]){
                  widthJson[index] = 0;
                }
                if(widthJson[index]<$(this).width()) {
                  widthJson[index] = $(this).width();
                }
              });
            }
            topTable.find("tr").each(function(){
              setDivWidth(this);
            });
            rightTable.find("tr").each(function(){
              setDivWidth(this);
            });
      
            topTable.find("tr:first div").each(function(index){
              $(this).width(widthJson[index]);
            });
            rightTable.find("tr:first div").each(function(index){
              $(this).width(widthJson[index]);
            });
            // figure out the width of each DIV in TD  --end
      
            container.scroll(function(){
              var currentScrollTop = $(this).scrollTop(),
                  currentScrollLeft = $(this).scrollLeft();
              topTable.find(".table-mask").css("left", -currentScrollLeft+"px");
              leftTable.find(".table-mask").css("top", -currentScrollTop+"px");
      
            });
      
            $(document).scroll(function(){
              var currentScrollTop = $(this).scrollTop(),
                  currentScrollLeft = $(this).scrollLeft();
              ltTable.css("marginTop", -currentScrollTop+"px");
              ltTable.css("marginLeft", -currentScrollLeft+"px");
              topTable.css("marginTop", -currentScrollTop+"px");
              topTable.css("marginLeft", ltTableWidth - currentScrollLeft+"px");
              leftTable.css("marginTop", ltTableHeight - currentScrollTop+"px");
              leftTable.css("marginLeft", -currentScrollLeft+"px");
      
            });
      
            // for IE, when window's scrollbar is moved, keep ltTable,leftTable,topTable in the correct position
            $(window).resize(function(){
              $(document).scroll();
            });
      
            //reset the width of topTable and the height of leftTable when container's size is changed, if container's size is fixed, you can skip the code below.
            timerLT = setInterval(function(){
              if(containerWidth != container.width() || containerHeight != container.height()){
                topTable.width(container.width() - ltTableWidth - (container.innerWidth() - container[0].clientWidth));
                leftTable.height(container.height() - ltTableHeight - (container.innerHeight() - container[0].clientHeight));
      
                containerWidth = container.width();
                containerHeight = container.height();
      
                container.scroll();// for IE
                  
              };
                         
            },0);
      
          });
        </script>
      
      </body>
    </html>
    

      

  • 相关阅读:
    用Latex编辑数学公式
    《利用Python进行数据分析》学习笔记之Matplotlib : pandas中的绘图函数
    《利用Python进行数据分析》学习笔记之Pandas基础
    splice()使用
    markdown语法
    【Docker】Docker 镜像
    【Docker】Docker 命令
    【Docker】Docker 安装
    【Docker】Docker 简介
    【MySQL 高级】知识拓展
  • 原文地址:https://www.cnblogs.com/shixingwen/p/6206092.html
Copyright © 2011-2022 走看看