2

下のような、上下の中央に切り欠きのある箱を作ることはできますか?(ボーダーインセットを含む?)

ここに画像の説明を入力

4

3 に答える 3

2

これがテスト済みの実用的なフィドル です: Ie10 、FF、Chrome、Safari

.Contentdiv内にコンテンツを配置するだけです。(あらゆるサイズのコンテンツをサポートする必要があります)

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 に答える