編集 - 元のタイトル:border-collapse:collapse
で達成する別の方法はありCSS
ますか?
表の境界線を単純に折りたたむだけでは根本的な問題は解決しないことが判明したため、議論をより反映するようにタイトルを更新しました。
プロパティを使用して角の丸いテーブルを作成しようとしてCSS3
border-radius
います。私が使用しているテーブル スタイルは次のようになります。
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
これが問題です。border-collapse:collapse
プロパティも設定したいのですが、設定すると機能しborder-radius
なくなります。border-collapse:collapse
実際に使用せずに同じ効果を得ることができる CSS ベースの方法はありますか?
編集:
ここで問題を示す簡単なページを作成しました(Firefox/Safari のみ)。
td
問題の大部分は、テーブルの角を丸くするように設定しても、コーナー要素の角に影響しないことにあるようです。テーブルがすべて 1 色の場合、これは問題にはなりませんtd
。最初の行と最後の行で、それぞれ上隅と下隅を丸くするだけでよいからです。ただし、見出しとストライプを区別するためにテーブルに異なる背景色を使用しているため、内側のtd
要素も角が丸くなっています。
提案されたソリューションの概要:
角が丸い別の要素で表を囲むことはできません。表の四角い角が「にじみ出る」からです。
境界線の幅を 0 に指定しても、テーブルは折りたたまれません。
td
セル間隔をゼロに設定した後も、下隅はまだ正方形です。
代わりに JavaScript を使用すると、問題が回避されます。
可能な解決策:
テーブルは PHP で生成されるため、外側の th/tds のそれぞれに異なるクラスを適用し、各コーナーを個別にスタイルすることができます。あまりエレガントではなく、複数のテーブルに適用するのは少し面倒なので、私はむしろこれをやりたくないので、提案を続けてください.
考えられる解決策 2 は、JavaScript (具体的には jQuery) を使用してコーナーのスタイルを設定することです。このソリューションも機能しますが、まだ探しているものとはまったく異なります (私は好き嫌いがあることを知っています)。2 つの予約があります。
- これは非常に軽量なサイトであり、JavaScript を最小限に抑えたいと考えています
- 境界半径を使用することの魅力の一部は、優雅な劣化と漸進的な強化です。すべての角を丸くするために border-radius を使用することで、CSS3 対応のブラウザーでは一貫して丸みを帯びたサイトになり、他のブラウザーでは一貫して正方形のサイトになることを願っています (IE のことです)。
今日 CSS3 でこれを行うのは不必要に思えるかもしれませんが、それには理由があります。また、この問題は w3c 仕様の結果であり、CSS3 のサポートが不十分であるため、CSS3 がより広くサポートされている場合でも、どのような解決策も関連性があり、有用であることを指摘しておきます。