
すっかり寒くなりましたね。次回の更新は暖かくなるころだと思いますはい。
今回はtableの角を丸くしてみよー!
結論からお話させていただくとtableをborder-collapse:collapse;してあるとできません。
reset.cssを使うケースが殆んどだと思いますが、このreset.cssには大抵border-collapse:collapse;が記述してありますよね。お手製のreset.cssの場合も含めて。
border-collapse:seprate;してやれば比較的うまくいくはずです。
まずは完成しているtableの角丸から
See the Pen XmeEVg by mitsuki sagayama (@sagayama) on CodePen.
scssじゃなくてcssはこちら
table {
width: 300px;
border: 1px solid #000;
border-radius: 10px;
border-spacing: 0;
border-collapse: separate;
}
table tr td {
padding: 0.5em;
border-left: 1px solid #000;
border-top: 1px solid #000;
}
table tr td:first-child {
border-left: none;
}
table tr:first-child td {
border-top: none;
}scssまたはcssをご覧のとおりtableセレクタにborder-collapse:separate;が記述してあるのが分かると思います。
実はこのtableの角丸は、角を丸くするのが面倒なんじゃなくて丸した後のborderの処理が面倒なんです。
その辺を図解してみました。

まずはtdに対してborder-leftとborder-bottomを設定します。
border-rightとborder-topじゃダメなの?と思うかもですがダメなんです。IE対策なんです。詳しくは次で。

border-collapse:collapse;じゃないので左と下のボーダーが2重に見えてしまいます。
そこで擬似クラス:first-childを使って左と下のボーダーを消します。
ここでlast-childじゃなくてfirst-childを使いたかったから左と下だったんですね。
first-childはIE7から対応してますがlast-childはIE9からしか対応してません。選択肢は1つですね。
以上で角丸tableの完成です。
まとめ
良かれと思って使ったreset.cssが障害になってたtableの角丸はborder-collapse: separate;で難なく解決!
その後のボーダーの処理が意外と面倒っていうお話でした。
tdだけじゃなくthも入ってくるともう少しボリューム増えますけど、このページの情報を抑えておけば大丈夫!たぶん。

