6

CSSのみを使用して、この画像の左側のようにリボンの端を描画するにはどうすればよいですか? ここに画像の説明を入力してください

CSSのコーナーが留め継ぎされているという事実を利用できるのでdiv、サイズ0の境界線と他の境界線を大きくして三角形を作成できます。1つだけでこれを行う方法はありdivますか?または、いくつかの三角形を積み重ねる必要がありますか?divユーザーがこれについて考える必要がなく、CSS:before疑似要素を使用してこれを挿入できるように、1を使用することを強くお勧めします。これを実装するための最良の方法は何ですか?

IE9+および他のブラウザの最新バージョンのみをサポートする必要があります。

4

2 に答える 2

5

HTML

<div class="ribbon">
   <strong class="ribbon-content">Everybody loves ribbons</strong>
</div>​

CSS

    .ribbon {
     font-size: 16px !important;
     width: 50%;
     position: relative;
     background: #ba89b6;
     color: #fff;
     text-align: center;
     padding: 1em 2em; /* Adjust to suit */
     margin: 2em auto 3em; 
    }
    .ribbon:before {
     content: "";
     position: absolute;
     display: block;
     bottom: -1em;
     border: 1.5em solid #986794;
     z-index: -1;
    }
    .ribbon:before {
     left: -2em;
     border-right-width: 1.5em;
     border-left-color: transparent;
    }

.ribbon .ribbon-content:before {
 content: "";
 position: absolute;
 display: block;
 border-style: solid;
 border-color: #804f7c transparent transparent transparent;
 bottom: -1em;
}
.ribbon .ribbon-content:before {
 left: 0;
 border-width: 1em 0 0 1em;
}

デモを見る

参照

于 2012-11-12T09:53:24.520 に答える
2

これを行う方法を示す多くのリソースがウェブ上にあります。非常に優れたチュートリアルがオンラインの css-tricks にありますhttp://css-tricks.com/snippets/css/ribbon/

また、ここでhttp://jsfiddle.net/WqNQU/で遊ぶために jsfiddle に貼り付けました

<h1 class="ribbon">
   <strong class="ribbon-content">Everybody loves ribbons</strong>
</h1>



.ribbon {
 font-size: 16px !important;
 /* This ribbon is based on a 16px font side and a 24px vertical rhythm. I've used em's to position each element for scalability. If you want to use a different font size you may have to play with the position of the ribbon elements */

 width: 50%;

 position: relative;
 background: #ba89b6;
 color: #fff;
 text-align: center;
 padding: 1em 2em; /* Adjust to suit */
 margin: 2em auto 3em; /* Based on 24px vertical rhythm. 48px bottom margin - normally 24 but the ribbon 'graphics' take up 24px themselves so we double it. */
}
.ribbon:before, .ribbon:after {
 content: "";
 position: absolute;
 display: block;
 bottom: -1em;
 border: 1.5em solid #986794;
 z-index: -1;
}
.ribbon:before {
 left: -2em;
 border-right-width: 1.5em;
 border-left-color: transparent;
}
.ribbon:after {
 right: -2em;
 border-left-width: 1.5em;
 border-right-color: transparent;
}
.ribbon .ribbon-content:before, .ribbon .ribbon-content:after {
 content: "";
 position: absolute;
 display: block;
 border-style: solid;
 border-color: #804f7c transparent transparent transparent;
 bottom: -1em;
}
.ribbon .ribbon-content:before {
 left: 0;
 border-width: 1em 0 0 1em;
}
.ribbon .ribbon-content:after {
 right: 0;
 border-width: 1em 1em 0 0;
}
于 2012-11-12T09:49:57.877 に答える