スキップしてメイン コンテンツに移動

画像ナシ!CSSだけでリボンを描いてみよう

こんにちは、クリエイティブフレークです。



こんな風に画像を使わずに、CSSだけでリボンを描くサンプルです。

上から順番に、ひし形、リボン、右側矢印、左側矢印をそれぞれ作ってみましょう。



まずはHTML↓↓↓

<div class="diamond">Diamond</div>
<div class="ribbon">Ribbon</div>
<div class="right-arrow">Right arrow</div>
<div class="left-arrow">Left arrow</div>


そしてCSS↓↓↓

/* ここでまとめて横長の長方形を作ります */
div.diamond, div.ribbon, div.right-arrow, div.left-arrow {
 display: inline-block;
 color: #FFFFFF;
  font-size: 18px;
  line-height: 38px;
 margin: 15px 0;
 position: relative;
 width: 200px;
 text-align: center;
}

/* それぞれの長方形のbefore(前)とafter(後ろ)に大きさゼロの要素を作ります */
div.diamond:before, div.diamond:after,
div.ribbon:before, div.ribbon:after,
div.right-arrow:before, div.right-arrow:after,
div.left-arrow:before, div.left-arrow:after {
 content: "";
 border-style: solid;
 border-width: 0;
 position: absolute;
 width: 0;
 height: 0;
}

/* ひし形 */
div.diamond {
 background-color: #59C9CE;
}
div.diamond:after, div.diamond:before {
 border-color: transparent #59C9CE;
}
div.diamond:before {
 left: -19px;
 border-width: 19px 19px 19px 0;
}
div.diamond:after {
 right: -19px;
 border-width: 19px 0 19px 19px;
}

/* リボン */
div.ribbon {
 background-color: #59C9CE;
}
div.ribbon:before, div.ribbon:after {
 top: 6px;
 z-index: -15;
}
div.ribbon:before {
 border-color: #4BB5B9 #4BB5B9 #4BB5B9 transparent;
 border-width: 19px;
 left: -25px;
}
div.ribbon:after {
 border-color: #4BB5B9 transparent #4BB5B9 #4BB5B9;
 border-width: 19px;
 right: -25px;
}

/* 右側矢印 */
div.right-arrow {
 background-color: #59C9CE;
}
div.right-arrow:after, div.right-arrow:before {
 border-width: 19px 0 19px 19px;
}
div.right-arrow:before {
 border-color: #59C9CE transparent;
 left: -19px;
}
div.right-arrow:after {
 border-color: transparent #59C9CE;
 right: -19px;
}

/* 左側矢印 */
div.left-arrow {
 background-color: #59C9CE;
}
div.left-arrow:after, div.left-arrow:before {
 border-width: 19px 19px 19px 0;
}
div.left-arrow:before {
 border-color: transparent #59C9CE;
 left: -19px;
}
div.left-arrow:after {
 border-color: #59C9CE transparent;
 right: -19px;
}


ここでは長方形の前後に"before"と"after"というCSSの擬似要素を使っています。

具体的にどういうこと?を、1つ目のひし形(Diamond)を例に解説すると、

1.border : 19px; で、空の要素に上下左右それぞれ19pxのボーダーを作ります。
つまりは1辺が38pxの正方形になりますよね?

2.border-color: transparent #色番号; は、上下の枠線の色が透明で、左右の枠線の色が指定した色になることを意味します。
これで上下が切り取られたように見えることになります。

3.さらに border-width: 19px 19px 19px 0; と指定することで、左側の枠線のみなし、上下右は19pxの枠、ということになります。
これで右半分が残ることになります。



▶CSSだけでリボンを作る デモはこちら




Written by Creative Flake

コメント

このブログの人気の投稿

ブログ移転のお知らせ

いつもご覧いただきありがとうございます。 当ブログは下記URLへと引っ越しました。 http://blog2.creativeflake.com/ 今後はこちらをご覧ください!!

太字にしても文字を潰さない方法「太字に強い無料の日本語フォント」付き

PhotoshopやIllustratorなどで、太文字を書きたいとき文字がつぶれて見づらいことはありませんか? つぶれ文字の場合 文字がつぶれてしまった場合の多くは、 ・ボールド「B」で太くしている ・枠線をつけて太くしている こういうケースが多く見られます。 これは、元の文字の外側に太線をつけるため、スキマが埋められてしまうことでつぶれて見えるためです。 つぶれない文字にするには 文字をつぶさないようにするには、文字そのもののウェイトで調整します。 ウェイトというのは「太さ」という意味です。 例えば、「●●ゴシック-M」とか、「▲▲明朝-W3」などという、フォント名の最後にアルファベットや数字がついているのを見たことはありませんか? まずはフォント(文字)を選ぶ際に、ウェイトのバリエーションが存在するかどうか確認してから使うことをおすすめします。 太字にできる無料の日本語フォント そもそもどんなフォントが太字のバリエーションがあるのか、今回は無料の日本語フォントを紹介します。 M+フォント やや丸みのあるやさしいイメージのゴシックフォント。 極細から太字までフォントウェイトがあります。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Kazesawaフォント こちらも丸みのある、認識性の高いフォントです。 エクストラライトからエクストラボールドまで6種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード 源ノ角ゴシック AdobeとGoogleが共同開発したオープンソースのフォントです。 エクストラライトからヘビーまで7種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード Rounded M+ 丸ゴシックのかわいい感じなのに品のあるのフォントです。 また、「標準」、「丸さ強め」、「丸さ弱め」からも選んでダウンロードが可能です。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Written by Cr...

jQueryの基本「セレクタを理解しよう」

jQueryとJavaScriptの2回目。 今回はよく聞くけどよく分からない「セレクタ」について。 See the Pen jQuery[Basic-2] by CreativeFlake ( @creativeflake ) on CodePen . サンプル中のボタンをクリックすると、上のテキストが消えます。 JSの解説 $(document).ready(function(){ $("button").click(function(){  //buttonをクリックすると次の関数を実行 $("p").hide();        //pタグを非表示にする }); }); ここでは  「何を」=buttonタグを  「どうすると」=クリックすると  「何が」=pタグが  「どうなるのか」=非表示にする という一連の流れがあります。 「セレクタ」"Selector"は、英語で"Selection(選択)"の派生なので、何かを選んでいるんだ、という風に思ってください。 jQueryでは「任意の要素、範囲を指定する」という意味があるのがセレクタです。 ではさっきの例題を少し変えて、「ボタンがクリックされたら、ボタンが消える(テキストは変化しない)」という動作をしたい場合、どうすればよいでしょうか? セレクタ自体を動作させるには"this"を使います。 See the Pen jQuery[Basic-3] by CreativeFlake ( @creativeflake ) on CodePen . JSの解説 $(document).ready(function(){ $("button").click(function(){  //buttonをクリックすると次の関数を実行 $(this).hide();        //これ(buttonタグのこと)を非表示にする }); }); この"this"はjQueryでは頻出するので、ぜひ覚えて利用できるようになりたいですね。 ...