border-radius
、div
、およびbackground-color
CSS属性が適用されたborder
を考えます。
<div style="background-color:#EEEEEE; border-radius:10px; border: 1px black solid;">
Blah
</div>
次に、同様のレイアウトを検討しますが、background-color
をinner-divで指定します。
<div style="border-radius:10px; border: 1px black solid;">
<div style="background-color:#EEEEEE;">
Blah
</div>
</div>
innerbackground-color
の<div>
がouter<div>
。
これは、問題の簡単なサンプルです。実際には、<table>
を行の色が交互に変わる内部要素として使用しています。 <div>
はborder-radius
要素では機能しないようであるため、外側の要素として<table>
を使用しています。 これはjsfiddleです この問題のサンプルです。
誰かが解決策を提案していますか?
overflow:hidden
外側のdiv
:
<div style="border-radius:10px; border: 1px black solid; overflow: hidden">
<div style="background-color:#EEEEEE;">
Blah
</div>
</div>
これらのCSSルールを追加します。
tr:first-of-type td:first-child {
border-top-left-radius: 5px;
}
tr:first-of-type td:last-child {
border-top-right-radius: 5px;
}
tr:last-of-type td:first-child {
border-bottom-left-radius: 5px;
}
tr:last-of-type td:last-child {
border-bottom-right-radius: 5px;
}
更新された fiddle を参照してください。
これを修正するには、overflow: hidden;
を境界線のある要素に適用します。もっときれいな方法だと思う。
テーブルを使用する必要がありますか? DIVを使用した例を次に示します。 http://jsfiddle.net/6KwGy/1/
HTML:
<div id="container">
<div class="row">
<div class="leftHalf">
<p>data 1</p>
</div>
<div class="rightHalf">
<p>data 2</p>
</div>
</div>
<div class="row">
<div class="leftHalf">
<p>data 1</p>
</div>
<div class="rightHalf">
<p>data 2</p>
</div>
</div>
<div class="row">
<div class="leftHalf">
<p>data 1</p>
</div>
<div class="rightHalf">
<p>data 2</p>
</div>
</div>
</div>
CSS:
.container {
width: 100%;
}
.leftHalf {
float:left;
width:50%;
}
.rightHalf {
float:left;
width:50%;
}
.row {
float: left;
width: 100%;
}
#container .row:nth-child(odd) {
background-color: #EEEEEE;
}
#container .row:first-child {
border-top: 1px solid black;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
-webkit-border-radius-topleft: 5px;
-webkit-border-radius-topright: 5px;
}
#container .row:last-child {
border-bottom: 1px solid black;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
-webkit-border-radius-bottomleft: 5px;
-webkit-border-radius-bottomright: 5px;
}
#container .row {
border-left: 1px solid black;
border-right: 1px solid black;
}
子要素にもborder-radiusを追加できます。
<div style="border-radius:10px; border: 1px black solid;">
<div style="background-color:#EEEEEE; border-radius:10px;">
Blah
</div>
</div>
パディングを追加するか、外側の要素に背景色を付けます
Divに小さなパディングを与えることは受け入れられますか?そうすれば、背景色が競合することはありません。