2017-05-09 36 views
-1

當我這裏有一個的jsfiddle - https://jsfiddle.net/4eohzxwn/1/使用Javascript - 修復表欄滾動

$("div").scroll(function(){ 
     $('.static').css({ 
     "position": "absolute", "top": 0 

     }); 
    }); 

我需要左靜態列被固定在TABEL滾動的其餘部分。

我認爲jquery/javascript是唯一的選擇。

是否可以將紅色靜態元素保留在位置並滾動表格的其餘部分。

我還需要不斷的行高,當它滾動因此它不只是去一行

+0

[看看](http://stackoverflow.com/questions/1312236/how-do-i-create-an-html-table-with-fixed-frozen-left-column-and -scrollable-body) –

+2

[水平滾動的HTML表格(第一列固定)]的可能的重複](http://stackoverflow.com/questions/3402295/html-table-with-horizo​​ntal-scrolling-first-column-fixed) –

+0

https://jsfiddle.net/b1dkjfso/14/ – User6667769

回答

0

你可以用簡單的html和css來做到這一點,無需爲此寫jquery。請參考下面的代碼。

table{ 
 
    width: 600px; 
 
} 
 

 
.static{ 
 
    border: 1px solid red; 
 
    width: 100px; 
 
    word-wrap: break-word; 
 
    position:absolute; 
 
      width:5em; 
 
      left:0; 
 
      top:auto; 
 
} 
 

 
.scroll{ 
 
    border: 1px solid green; 
 
    width: 500px; 
 
} 
 

 
#outerdiv { 
 
      position: absolute; 
 
      top: 0; 
 
      left: 0; 
 
      right: 5em; 
 
     } 
 
     #innerdiv { 
 
      width: 100%; 
 
      overflow-x:scroll; 
 
      margin-left: 5em; 
 
      overflow-y:visible; 
 
      padding-bottom:1px; 
 
     } 
 
     .headcol { 
 
      position:absolute; 
 
      width:5em; 
 
      left:0; 
 
      top:auto; 
 
      border-right: 0px none black; 
 
      border-top-width:3px; 
 
      /*only relevant for first row*/ 
 
      margin-top:-3px; 
 
      /*compensate for top border*/ 
 
     }
<div id="outerdiv"> 
 
    <div id="innerdiv"> 
 
    <table> 
 
    <tbody> 
 
     <tr> 
 
     <td class="static">Staticdfxc</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</div> 
 
</div>

+0

請檢查這個片段,希望這有助於.. –

2

試試這個代碼中使用,而不是

translateposition

$("#wrap").scroll(function(){ 
 
    var translate = "translate("+this.scrollLeft + "px,0)"; 
 
    $('.static').css('transform',translate); 
 
});
table{ 
 
    width: 600px; 
 
} 
 

 
.static{ 
 
    border: 1px solid red; 
 
    width: 100px; 
 
    word-wrap: break-word; 
 
    background-color:#fff; 
 
} 
 

 
.scroll{ 
 
    border: 1px solid green; 
 
    width: 500px; 
 
} 
 

 
#wrap{ 
 
    border: 1px solid blue; 
 
    width: 400px; 
 
    overflow: scroll; 
 
    position: relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="wrap"> 
 
    <table> 
 
    <tbody> 
 
     <tr> 
 
     <td class="static">Staticdfxcvzx 
 
     cvzxcvzxcv</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</div>

0

$("#wrap").scroll(function(){ 
 
    var translate = "translate("+this.scrollLeft + "px,0)"; 
 
    $('.static').css('transform',translate); 
 
});
table{ 
 
    width: 600px; 
 
} 
 

 
.static{ 
 
    border: 1px solid red; 
 
    width: 100px; 
 
    word-wrap: break-word; 
 
} 
 

 
.scroll{ 
 
    border: 1px solid green; 
 
    width: 500px; 
 
} 
 

 
#wrap{ 
 
    border: 1px solid blue; 
 
    width: 400px; 
 
    overflow: scroll; 
 
    position: relative; 
 
} 
 
.static 
 
{ 
 
background-color:#fff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="wrap"> 
 
    <table> 
 
    <tbody> 
 
     <tr> 
 
     <td class="static">Staticdfxcvzx 
 
     cvzxcvzxcv</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
     <tr> 
 
     <td class="static">Static</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     <td class="scroll">scroll</td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</div>