下のような、上下の中央に切り欠きのある箱を作ることはできますか?(ボーダーインセットを含む?)
質問する
2023 次
3 に答える
2
これがテスト済みの実用的なフィドル です: Ie10 、FF、Chrome、Safari
.Content
div内にコンテンツを配置するだけです。(あらゆるサイズのコンテンツをサポートする必要があります)
HTML:
<div class="SpecialBox">
<div class="TopTriangle">
<div class="Gray Border">
<div class="Black Border">
<div class="White Border"></div>
</div>
</div>
</div>
<div class="Content">
Some Content
<br />
And another line of Content
</div>
<div class="BottomTriangle">
<div class="Gray Border">
<div class="Black Border">
<div class="White Border"></div>
</div>
</div>
</div>
</div>
CSS:
*
{
margin: 0;
padding: 0;
}
.SpecialBox
{
background-color: black;
-webkit-box-shadow: inset 0 0 0 5px black, inset 0 0 0 6px gray;
box-shadow: inset 0 0 0 5px black, inset 0 0 0 6px gray;
display: inline-block;
color: white;
overflow: hidden;
position: relative;
}
.Content
{
padding: 20px;
}
.Border
{
width: 0;
border-left: 35px solid transparent;
border-right: 35px solid transparent;
position: absolute;
}
.Gray
{
position: relative;
margin: 0 auto;
}
.TopTriangle .Gray
{
border-top: 25px solid gray;
}
.BottomTriangle .Gray
{
border-bottom: 25px solid gray;
top: -1px;
}
.Black
{
left: -35px;
}
.TopTriangle .Black
{
border-top: 25px solid black;
top: -27px;
}
.BottomTriangle .Black
{
border-bottom: 25px solid black;
top: 1px;
}
.Black:before
{
content: '';
position: absolute;
left: -35px;
width: 70px;
height: 6px;
background-color: black;
}
.TopTriangle .Black:before
{
top: -24px;
}
.BottomTriangle .Black:before
{
top: 19px;
z-index: 1;
}
.White
{
left: -35px;
}
.TopTriangle .White
{
border-top: 25px solid white;
top: -30px;
}
.BottomTriangle .White
{
border-bottom: 25px solid white;
top: 6px;
z-index: 2;
}
注意: おそらく DOM 内の少数の要素で実行できます (より多くの疑似要素を使用)。
于 2013-09-27T09:08:39.773 に答える
1
最小限のマークアップ、およびノッチとインセット透明でそれを実行しようとしています:
CSS
.test {
position: absolute;
width: 200px;
height: 400px;
top: 40px;
left: 40px;
background-image: linear-gradient(-135deg, transparent 30px, black 30px),
linear-gradient(135deg, transparent 30px, black 30px),
linear-gradient(-45deg, transparent 30px, black 30px),
linear-gradient(45deg, transparent 30px, black 30px),
radial-gradient(200px 5px ellipse at 50% 50%, transparent 70px,
black 73px);
background-size: 50% 20%, 50% 20%, 50% 72%, 50% 72%, 100% 10%;
background-position: left top, right top, left bottom, right bottom, left 20%;
background-repeat: no-repeat;
}
そして、約束通り、単純な HTML
<div class="test"></div>
フィドル
注: この例では、最新のグラデーション構文を使用しています。複数の背景をサポートする任意のブラウザーで動作するように作成でき、グラデーション構文を適応させることができます
于 2013-09-27T21:09:47.583 に答える