bootstrap5で、table&rowspanを使ったらborderがおかしくなる

bootstrap5

結論

bootstrap5を使って、tableを作成し、rowspanを使ったらborderがバグったので下記CSSを追加して対応。

th[rowspan="2"] {
    border-bottom: 1px double #000;
}
tr:nth-last-child(2) td[rowspan="2"] {
    border-bottom: 1px double #000;
}

経緯

bootstrap5を使って、tableを作成し、rowspanを使ったところ下記の画像のようなバグが発生。

色々とcssをいじくり倒して、cssを「後読み込みでの上書き」で対応。

HTMLデータをまるごと記載。そのままコピペしてxxx.htmlで開いたら内容が理解できるはず。

正しい修正方法かは不明。

自分用備忘録。

<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <title>bootstrapのtableを使用し、rowspanを使った時ボーダーがおかしくなる</title>
</head>

<body>
    <main role="main" class="container">
        <table class="table w-50" border="2" id="bug_table">
            <thead>
                <tr>
                    <th rowspan="2" class="align-middle">↓</th>
                    <th colspan="2">bug table title</th>
                </tr>
                <tr>
                    <td colspan="3"><small>bug table sub title</small></td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td rowspan="2" class="align-middle"> rowspan="2" </td>
                    <td>bug table content 1 </td>
                    <td rowspan="2" class=" align-middle"> rowspan="2" </td>
                </tr>
                <tr>
                    <td>bug table content 2 </td>
                </tr>
                <tr>
                    <td rowspan="2" class="align-middle"> rowspan="2" </td>
                    <td>bug table content 3 </td>
                    <td rowspan="2" class="align-middle"> rowspan="2" </td>
                </tr>
                <tr>
                    <td>bug table content 4 </td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <th> ↑ </th>
                    <td colspan="2"><small>bug table footer content</small></td>
                </tr>
            </tfoot>
        </table>
        <pre>
th[rowspan="2"] {
    border-bottom: 1px double #000;
}
tr:nth-last-child(2) td[rowspan="2"] {
    border-bottom: 1px double #000;
}
</pre>

        <style type="text/css">
            #fix_table th[rowspan="2"] {
                border-bottom: 1px double #000;
            }

            #fix_table tr:nth-last-child(2) td[rowspan="2"] {
                border-bottom: 1px double #000;
            }

        </style>

        <table class="table w-50" border="2" id="fix_table">
            <thead>
                <tr>
                    <th rowspan="2" class="align-middle">↓</th>
                    <th colspan="2">fix table title</th>
                </tr>
                <tr>
                    <td colspan="3"><small>fix table sub title</small></td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td rowspan="2" class="align-middle"> rowspan="2" </td>
                    <td>fix table content 1 </td>
                    <td rowspan="2" class=" align-middle"> rowspan="2" </td>
                </tr>
                <tr>
                    <td>fix table content 2 </td>
                </tr>
                <tr>
                    <td rowspan="2" class="align-middle"> rowspan="2" </td>
                    <td>fix table content 3 </td>
                    <td rowspan="2" class="align-middle"> rowspan="2" </td>
                </tr>
                <tr>
                    <td>fix table content 4 </td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <th> ↑ </th>
                    <td colspan="2"><small>fix table footer content</small></td>
                </tr>
            </tfoot>
        </table>
    </main>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>

</html>

コメント

タイトルとURLをコピーしました