2017-12-30 76 views
0

私はJSP Webプロジェクトで作業しています。私はテーブルの高さよりも多くのデータを含むことができるテーブルを持っています。だから私はテーブルに垂直スクロールを追加したい。これどうやってするの?私はここで見た他の解決策を試しましたが、悲しいことに私にはうまくいかなかったのです。CSS - htmlテーブルに垂直スクロールを追加するには

私が望むのは、ヘッダーをスクロールしても表示されたままにしておく必要があることです。私は、データ行だけをスクロールダウンしたい。以下

私のJSPコードとCSS

JSPです(私は私のテーブルが懸念されるところの一部を含む)

<div id="rightColumn" class="columns"> 
       <table id="timeTable"> 
        <tr> 
         <th>Customer</th> 
         <th>Balance Time</th> 
         <th>Date</th> 
        </tr> 
        <c:forEach items="${timeProp}" var="_timeProp"> 
         <tr> 
          <td><c:out value="${_timeProp.tb_customername}"/></td> 
          <td><c:out value="${_timeProp.tb_time}"/></td> 
          <td><c:out value="${_timeProp.tb_date}"/></td> 
         </tr> 
        </c:forEach> 
       </table> 
      </div> 

CSS:(同じはここに行く)

#rightColumn { 
    width: 75%; 
    min-height: 388px; 
} 

.columns { 
    border: 1px solid gray; 
    margin: 10px 0px 10px 10px; 
    float:left; 
    padding: 0px; 
    font-size: 20px; 
} 

#timeTable 
{ 
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; 
    border-collapse: collapse; 
    width: 100%; 
    text-align: left; 
} 

#timeTable th 
{ 
    background-color: #4CAF50; 
    padding: 5px 5px 5px 5px; 
    color: white; 
    padding: 8px; 
} 

#timeTable td, #timeTable th 
{ 
    border: 1px solid black; 
} 

#timeTable tr:nth-child(even) 
{ 
    background-color: #f2f2f2; 
} 

#timeTable tr:hover 
{ 
    background-color: #ddd; 
} 

table tr.active {background: #ccc;} 

#timeTable td 
{ 
    padding: 2px 0px 2px 5px; 
} 

ありがとうございます。あなたが私をここで助けてくれることを願っています。

+0

あなたはすでに試した他のソリューションでしたか?誰かがもう一度それを提案するかもしれない。 'overflow-y:auto'のような' overflow'ルールを持つ 'table'のような包含要素に明示的な' height'値を設定するだけで十分ですが、あなたは固定テーブルヘッダも望むように思えます。その場合は、質問のタイトルを明確にし、https://stackoverflow.com/search?q=fixed+table+headerのような固定ヘッダーソリューションを検索する必要があります。 – UncaughtTypeError

+0

テーブルを2つに分けることができます。スクロール時に残す必要があるすべてのヘッダーパーツに対して1を、関連するすべてのデータに対して2を設定し、テーブル2に 'height'と' overflow'を宣言します。 – UncaughtTypeError

答えて

1
.columns { 
    border: 1px solid gray; 
    margin: 10px 0px 10px 10px; 
    float:left; 
    padding: 0px; 
    font-size: 20px; 
    overflow: auto; /* add this*/ 
} 

Overflowあなたのdivの内容が適合しない場合は、自動でスクロールバーが表示されます。

そして、あなたはあなたがそれを positionを与える必要がスクロールしたときに、ヘッダーの場所に滞在したい場合:fixed;

+0

こんにちは、垂直スクロールが現れ、動作しています。しかし、私がスクロールするとヘッダーが消えます。私は位置を追加します:固定; #timeTable thで#timeTableでも試しましたが、動作しません。私はどこにそれを追加する必要がありますか? – HjReyes

+0

@HjReyesあなたは場所にとどまりたい要素に 'position:fixed'を追加する必要があります。ヘッダーなどで別のdivがあると思います。コードを編集してヘッダを追加することもあります。 – SomeBeginner

+0

#timeTableに追加しても問題ありませんでした。それの幅は減少する。それは沈む。他のヘッダーテキストは切り取られた。それはうまくいきましたが、期待通りでした。どうすれば修正できますか? – HjReyes

1

overflow-yを設定してみましたか?

EDIT:

が親divのためのあなたのheightoverflow-yを設定します。

+0

どこに追加しますか? – HjReyes

+0

#timeTableに追加しても動作しません。 – HjReyes

+0

親divの高さとオーバーフローを設定してください。 – Siphalor

関連する問題