SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

tableで、しましましたい

問題

よくある表の表示で偶数行がグレー、奇数行が白みたいな、縞々の表示がしたいけど、どうするのがよい?

table-striped

答え

10年前なら、サーバー側で見た目のことも考慮して、あとは表示するだけのHTMLを出力したものですが、

<table>
<?php
$line_no = 0;
foreach ($data as $k => $v) {
    ++$line_no;
    if ($line_no % 2) {
        //奇数行はこのクラスを付与
        $class_name = "darkLine";
    } else {
        //偶数行はこのクラスを付与
        $class_name = "lightLine";
    }
?>
    <tr class="<?= $class_name ?>">
        <td>

今なら、ブラウザ(JavaScript、CSS)にお任せするのもありですね。

HTMLはこんな感じで、tableにクラスでも付与しておくだけにして、

<table class="table-striped">
<?php foreach ($data as $k => $v) { ?>
    <tr>
        <td>
            <!-- ブラウザ側でやるから、見た目なんて気にしないで! -->

しましまは、対応ブラウザ IE9以降でよければ、CSS3で。

.table-striped tbody tr:nth-child(even) {background:#eee;}
.table-striped tbody tr:nth-child(odd) {background:#fff;}

IE8を考慮するなら、今はJavaScriptで。

//偶数行と奇数行にそれぞれclassを付与
$('.table-striped').each(function(){
    $('tbody tr:even', this).addClass('darkLine');
    $('tbody tr:odd', this).addClass('lightLine');
});

関連するメモ

コメント