2017-06-28 12 views
2

私はhtmlとcssで美しいテーブルを作成しようとしています。だからここに私は一瞬のためにやっているものです:https://jsfiddle.net/mrg0szzt/テーブルの本文をスクロール可能に表示

あなたが見ることができるように、私は問題を抱えている:

  • 私はTBODYにdisplay:blockを置けば、私は最初の列に整列すべてのデータを持っています..私はdisplay:table-header-group;overflow-y: auto;ストップ作業を置けば。

  • ...

/* IT's just for the style, please jump to line 44 */ 
 

 
.gestion-table { 
 
    background: white; 
 
    margin: auto; 
 
    width: 90%; 
 
    border-collapse: collapse; 
 
} 
 

 
.gestion-table th { 
 
    color: #D5DDE5; 
 
    background: #1b1e24; 
 
    font-size: 18px; 
 
    padding: 10px; 
 
    vertical-align: middle; 
 
    border-right: 1px solid white; 
 
} 
 

 
.gestion-table tr { 
 
    color: #666B85; 
 
    font-size: 16px; 
 
} 
 

 
.gestion-table tr:hover td { 
 
    background: #4E5066; 
 
    color: #FFFFFF; 
 
} 
 

 
.gestion-table tr:nth-child(odd) td { 
 
    background: #EBEBEB; 
 
} 
 

 
.gestion-table tr:nth-child(odd):hover td { 
 
    background: #4E5066; 
 
} 
 

 
.gestion-table td { 
 
    background: #FFFFFF; 
 
    padding: 10px; 
 
    font-size: 16px; 
 
    border-right: 1px solid #C1C3D1; 
 
} 
 

 

 
/* HERE STARTS THE PROBLEM */ 
 

 
//Switch between the two display methods on the tbody and see the result 
 
//I'm searching for scrollable tbody with max-height of 150px for example 
 
.gestion-table thead { 
 
    display: table-header-group; 
 
    width: 100%; 
 
} 
 

 
.gestion-table tbody { 
 
    //display:table-header-group; 
 
    display: block; 
 
    overflow-y: auto; 
 
    width: 100%; 
 
    max-height: 150px; 
 
}
<table class="gestion-table"> 
 
    <thead> 
 
    <tr> 
 
     <th style="width: 15%;">Field 1 </th> 
 
     <th style="width: 45%;">Field 2 </th> 
 
     <th style="width: 10%;">Field 3 </th> 
 
     <th style="width: 15%;">Field 4 </th> 
 
     <th style="width: 15%;">Field 5 </th> 
 
    </tr> 
 
    </thead> 
 
    <tbody class="table-hover"> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Element 1</td> 
 
     <td>Element 2</td> 
 
     <td>Element 3</td> 
 
     <td>Element 4</td> 
 
     <td>Element 5</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

私は何か良いCSSのみのソリューションを見つけることができませんでしたので、私はおそらく2つのテーブルに1つずつに分割します同じ列の幅で残りの1つを選択します。そしておそらく、下の表の 'overflow-y:scroll;'のラッピングdiv。その他のさまざまな回避策があります:[表示方法] - [スクロールバー----- HTMLテーブル](https://stackoverflow.com/questions/8232713/how-to-display-scroll-bar-onto -a-html-table) – ippi

答えて

0

これは完璧なソリューションではありませんが、それは表には、スクロール可能な取得用量。

https://jsfiddle.net/mrg0szzt/2/

HTML:

<div class="container"> 
    <div class="sub-container"> 
     <table class="gestion-table"> 
      <thead> 
      <tr> 
       <th style="width: 15%;">Field 1 </th> 
       <th style="width: 45%;">Field 2 </th> 
       <th style="width: 10%;">Field 3 </th> 
       <th style="width: 15%;">Field 4 </th> 
       <th style="width: 15%;">Field 5 </th> 
      </tr> 
      </thead> 
      <tbody class="table-hover"> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

CSS:

/* IT's just for the style, please jump to line 44 */ 
.container{ 
    display: flex; 
    justify-content: center; 
} 
.sub-container{ 
    height:192px; 
    overflow-y: scroll; 
    width: 90%; 
} 
.gestion-table { 
    background: white; 
    //margin: auto; 
    //width: 90%; 
    border-collapse: collapse; 
} 

.gestion-table th { 
    color:#D5DDE5; 
    background:#1b1e24; 
    font-size: 18px; 
    padding:10px; 
    vertical-align:middle; 
    border-right: 1px solid white; 
} 

.gestion-table tr { 
    color:#666B85; 
    font-size:16px; 
} 

.gestion-table tr:hover td { 
    background:#4E5066; 
    color:#FFFFFF; 
} 

.gestion-table tr:nth-child(odd) td { 
    background:#EBEBEB; 
} 

.gestion-table tr:nth-child(odd):hover td { 
    background:#4E5066; 
} 

.gestion-table td { 
    background:#FFFFFF; 
    padding:10px; 
    font-size:16px; 
    border-right: 1px solid #C1C3D1; 
} 

/* HERE STARTS THE PROBLEM */ 
//Switch between the two display methods on the tbody and see the result 
//I'm searching for scrollable tbody with max-height of 150px for example 

.gestion-table thead { 
    display:table-header-group; 
    width: 100%; 
} 

.gestion-table tbody { 
    display:table-row-group; 
    //display: block; 
    overflow-y: auto; 
    width: 100%; 
    max-height: 150px; 
} 
0

これはトリックを行います、私は2つのテーブルにテーブルを分割することになりました。

スクロールがオンになっていない場合、ヘッダテーブルとボディテーブルが異なる場合があります。margin-rightをデータ長でgestion-table-headに変更したクラスを追加することができます。またはページ高さによるメディアクエリであってもよい。

https://jsfiddle.net/mrg0szzt/6/

HTML:

<div class="container"> 
    <table class="gestion-table gestion-table-head "> 
     <thead> 
     <tr> 
      <th style="width: 15%;">Field 1 </th> 
      <th style="width: 45%;">Field 2 </th> 
      <th style="width: 10%;">Field 3 </th> 
      <th style="width: 15%;">Field 4 </th> 
      <th style="width: 15%;">Field 5 </th> 
     </tr> 
     </thead> 
    </table> 
    <div class="sub-container"> 
     <table class="gestion-table"> 
      <tbody class="table-hover"> 
      <tr> 
       <td style="width: 15%;">Element 1</td> 
       <td style="width: 45%;">Element 2</td> 
       <td style="width: 10%;">Element 3</td> 
       <td style="width: 15%;">Element 4</td> 
       <td style="width: 15%;">Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr>  <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      <tr> 
       <td>Element 1</td> 
       <td>Element 2</td> 
       <td>Element 3</td> 
       <td>Element 4</td> 
       <td>Element 5</td> 
      </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

はCSS:

/* IT's just for the style, please jump to line 44 */ 
.container{ 
    width: 90%; 
    margin: auto; 
} 
.sub-container{ 
    height:192px; 
    overflow-y: auto; 
// width: 90%; 
} 
.gestion-table { 
    background: white; 
    //margin: auto; 
    //width: 90%; 
    border-collapse: collapse; 
} 

.gestion-table-head { 
    margin-right: 15px; 
} 

.gestion-table th { 
    color:#D5DDE5; 
    background:#1b1e24; 
    font-size: 18px; 
    padding:10px; 
    vertical-align:middle; 
    border-right: 1px solid white; 
} 

.gestion-table tr { 
    color:#666B85; 
    font-size:16px; 
} 

.gestion-table tr:hover td { 
    background:#4E5066; 
    color:#FFFFFF; 
} 

.gestion-table tr:nth-child(odd) td { 
    background:#EBEBEB; 
} 

.gestion-table tr:nth-child(odd):hover td { 
    background:#4E5066; 
} 

.gestion-table td { 
    background:#FFFFFF; 
    padding:10px; 
    font-size:16px; 
    border-right: 1px solid #C1C3D1; 
} 

/* HERE STARTS THE PROBLEM */ 
//Switch between the two display methods on the tbody and see the result 
//I'm searching for scrollable tbody with max-height of 150px for example 

.gestion-table thead { 
    display:table-header-group; 
    width: 100%; 
} 

.gestion-table tbody { 
    display:table-row-group; 
    //display: block; 
    overflow-y: auto; 
    width: 100%; 
    max-height: 150px; 
}