2016-05-04 4 views
0

AngularJS、HTML、JS、CSS、さらにはWeb開発の新機能です。数日の間、私はシナリオを実装しようとしていました。AngularJS指示文の水平および垂直スクロール付きの貼り付けテーブルの列とヘッダー

私はテーブルに列が動的な幅を持っています。最初の2つの列だけでなく、テーブルのヘッダーを貼り付ける(または常に画面に表示する)必要があります。テーブルは水平方向と垂直方向にスクロールできる必要があります。

私がやったことにはいくつかの問題があります。私はこれを初めて知っているので、私はここにこだわっています。私は貼り付けられたヘッダーを実装することができます。または貼り付けられた最初の2つの列は実装できますが、両方は実装できません。彼らはまた、一緒に配線されていません。

ここに私がしたことがあります。 CSSは主に別のスカーフのものです。

function StickController($scope) { 
 
    $scope.dataset = { 
 
     \t tabledata: [ 
 
     { 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4 Lorem Lorem Lorem Lorem Lorem Lorem ', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12 Lorem Lorem Lorem Lorem Lorem', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8 Lorem Lorem Lorem Lorem Lorem', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4 Lorem LoremLoremLorem Lorem Lorem LoremLorem ', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     },{ 
 
     col1: 'col1', 
 
     col2: 'col2', 
 
     col3: 'col3', 
 
     col4: 'col4', 
 
     col5: 'col5', 
 
     col6: 'col6', 
 
     col7: 'col7', 
 
     col8: 'col8', 
 
     col9: 'col9', 
 
     col10: 'col10', 
 
     col11: 'col11', 
 
     col12: 'col12', 
 
     col13: 'col13' 
 
     } 
 
     ] 
 
    }; 
 
}
table { 
 
    display: block; 
 
    overflow-x: auto; 
 
    height: 200px; 
 
    white-space: nowrap; 
 
} 
 

 
.stick-table { 
 
    border: none; 
 
    border-right: solid 1px #DDEFEF; 
 
    border-collapse: separate; 
 
    border-spacing: 0; 
 
    font: normal 13px Arial, sans-serif; 
 
} 
 
.stick-table thead th { 
 
    background-color: #DDEFEF; 
 
    padding-right: 3px; 
 
    padding-left: 3px; 
 
    border: none; 
 
    color: #336B6B; 
 
    height: 20px; 
 
    text-align: center; 
 
    text-shadow: 1px 1px 1px #fff; 
 
    white-space: nowrap; 
 
    font-size: 12px; 
 
    font-family: "Bookman", Georgia, "Times New Roman", serif; 
 
} 
 
.stick-table tbody td { 
 
    color: #333; 
 
    text-align: center; 
 
    height: 20px; 
 
    text-shadow: 1px 1px 1px #fff; 
 
    white-space: nowrap; 
 
    font-size: 12px; 
 
    font-family: "Bookman", Georgia, "Times New Roman", serif; 
 
    border: solid 1px #DDEFEF; 
 
} 
 
.stick-wrapper { 
 
    position: relative; 
 
} 
 
.stick-scroller { 
 
    margin-left: 160px; 
 
    overflow-y: visible; 
 
    padding-bottom: 5px; 
 
} 
 
.stick-table .stick-sticky-col { 
 
    border-left: solid 1px #DDEFEF; 
 
    left: 30px; 
 
    position: absolute; 
 
    text-align: center; 
 
    top: auto; 
 
    height: 20px; 
 
    width: 90px; 
 
} 
 
.stick-table .stick-sticky-col-kat { 
 
    border-left: solid 1px #DDEFEF; 
 
    left: 120px; 
 
    position: absolute; 
 
    text-align: center; 
 
    top: auto; 
 
    height: 20px; 
 
    width: 40px; 
 
} 
 
.stick-table .stick-sticky-col-edit { 
 
    border-left: solid 1px #DDEFEF; 
 
    left: 0; 
 
    position: absolute; 
 
    top: auto; 
 
    height: 20px; 
 
    width: 30px; 
 
} 
 
.stick-scroller-client { 
 
    margin-left: 30px; 
 
    overflow-y: visible; 
 
    padding-bottom: 5px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script> 
 
<div ng-app ng-controller='StickController'> 
 
<p> 
 
This content should not be scrolled either way. 
 
</p> 
 
<div class="stick-wrapper"> 
 
     <div class="stick-scroller"> 
 
      <table class="stick-table"> 
 
       <thead> 
 
       <tr> 
 
        <th class="stick-sticky-col">SCol1</th> 
 
        <th class="stick-sticky-col-kat">SCol2</th> 
 
        <th>Col3</th> 
 
        <th>Col4</th> 
 
        <th>Col5</th> 
 
        <th>Col6</th> 
 
        <th>Col7</th> 
 
        <th>Col8</th> 
 
        <th>Col9</th> 
 
        <th>Col10</th> 
 
        <th>Col11</th> 
 
        <th>Col12</th> 
 
        <th>Col13</th> 
 
       </tr> 
 
       </thead> 
 
       <tbody> 
 
       <tr ng-repeat="data in dataset.tabledata"> 
 
        <td class="stick-sticky-col">{{ data.col1 }}</td> 
 
        <!--<td>{{ car.allapot }}</td>--> 
 
        <td class="stick-sticky-col-kat">{{ data.col2 }}</td> 
 
        <td>{{ data.col3 }}</td> 
 
        <td>{{ data.col4}}</td> 
 
        <td>{{ data.col5 }}</td> 
 
        <td>{{ data.col6 }}</td> 
 
        <td>{{ data.col7 }}</td> 
 
        <td>{{ data.col8 }}</td> 
 
        <td>{{ data.col9 }}</td> 
 
        <td>{{ data.col10 }}</td> 
 
        <td>{{ data.col11 }}</td> 
 
        <td>{{ data.col12}}</td> 
 
        <td>{{ data.col13 }}</td> 
 
       </tr> 
 
       </tbody> 
 
      </table> 
 
     </div> 
 
    </div> 
 
    </div>

私は今午前どこそれはだ、フィドルを作成しました。 ここにあります:https://jsfiddle.net/Lt7aP/2590/

私はjQueryを使ったことはありません。この問題はCSSでのみ解決できますか? 私は以前にウェブ開発をしていないことを覚えておいてください。私はここで最善を尽くしました。ありがとうございました!あなたはjQueryの/角度は、テーブルのプラグインのいずれかを使用して例えばhttps://www.datatables.net/またはhttps://www.dynatable.comを試してみてくださいとの経験がない場合は

答えて

0

HIここで外側のdivにoverflow autoを追加しようとは、作業フィドル

Demo

0

です。

あなた自身のコードを書いてはいけませんが、関連する例の1つであるhttps://www.datatables.net/examples/indexをフォローしてみてください。 Angular/jQueryコーディングを使用すると、より速くケースを解決できます。

関連する問題