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

画像ナシ!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...

CSS3でアニメーションを作ってみよう(理論編)

こんにちは、クリエイティブフレークです。 Windows XPのサポートが終了してから、国内のIE10のシェア率が急激に高まり、Chromeも急伸しています。 これまでどうしてもIEの古いバージョンのユーザーのことを考慮すると、完全CSS3はまだ先かなと思うところでしたが、そろそろ勉強し始めどきかもしれません。 今回はCSS3だけで動くアニメーションの簡単なサンプルを。 【デモ : DEMO】 CSS3だけでアニメーション そもそも、アニメーションといえば、 ・gif(Photoshopなどでタイムラインでコマ送り。あくまで画像なのでパラパラ漫画と同じ理論。) ・Flash(タイムラインもしくはプログラミングで制御。見るにはFlash Playerのインストールが必要。) ・jQuery(JavaScript言語を使用して動的に制御。) 時代ごとに移り変わってきましたね。 では、こんなにアニメーションは存在するのに、なんでCSS3を使いたがるの? ・gifの欠点 gifアニメーションの欠点は細かく動かすとファイル容量が大きくなります。 また、滑らかな動きには向いていません。 ・Flashの欠点 FlashはFlash Playerが必要なので、インストールしていないPCや、スマートフォンには対応していません。 ・jQueryの欠点 jQueryはプログラミング可能なので、細かく動作を指示できますが、jQueryを使用する場合、JavaScript単体とjQuery本体の組み合わせで、ファイルは大きくなります。 ここで登場するのがCSS3。以前ならマークアップ言語で動作の指示ができるなんて思ってもみませんでした。 今回の目標 ・CSSで丸や四角などの図形を描く ・CSSで回転させる ・CSSでフェードさせる 【デモ : DEMO】 CSS3だけでアニメーション ▲こんなかんじ 今回のデモのソースコードはすべてHTML内に記述してあります。 ソースコードが長いので、ここでは解説だけを記載します。 サンプルソースコードの解説 div { position: absolute !important; top: calc(50% - 100px); left...