[CSS]画像やパネルに斜めにしたリボンを重ねるスタイルシート
Post on:2012年5月10日
「New」「新着」などのちょっとした情報を単に矩形で添えるのではなく、斜めにしたリボンで添えるスタイルシートを紹介します。
Creating CSS3 Image Ribbon Tags
[ad#ad-2]
デモ
元記事ではimg要素にリボンが添えられており、当方でdiv要素のパネルのデモを作成しました。
まずは、img要素の画像から。
[ad#ad-2]
続いて、div要素のパネルです。
デモページ:div要素
※当方作成
実装
実装はimg要素もdiv要素もほぼ同じです。
HTML:img要素版
リボンのテキストはimg要素と並列に配置し、div要素で内包します。
<div class="side-corner-tag"> <img src="1.jpg" alt="" /> <p><span>newest</span></p> </div>
CSS:img要素版
このエフェクトの要点はラッパーの「overflow: hidden;」と「padding: 5px;」です。そして、displayをinline-blockにする必要があります。
.side-corner-tag { position: relative; color: #fff; display: inline-block; padding: 5px; overflow: hidden; font-family: Arial, sans-serif; font-weight: 900; } .side-corner-tag p { display: inline; }
リボンのp要素のスタイルです。
リボンの幅を指定し、斜めに傾け、シャドウをつけます。
.side-corner-tag p span { position: absolute; display: inline-block; right: -25px; box-shadow: 0px 0px 10px rgba(0,0,0,0.2), inset 0px 5px 30px rgba(255,255,255,0.2); text-align: center; text-transform: uppercase; top: 22px; background: #d93131; width: 100px; padding: 3px 10px; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); }
最後に:before, :afterを使用して、リボンが立体的に見えるように三角形を作成します。
.side-corner-tag p:before { content: ""; width: 0; height: 0; position: absolute; top: -17px; right: 69px; z-index: -1; border: 17px solid; border-color: transparent transparent #662121 transparent; } .side-corner-tag p:after { content: ""; width: 0; height: 0; position: absolute; top: 74px; z-index: -1; right: -10px; border: 17px solid; border-color: #662121 transparent transparent transparent; }
ついでに、div要素版のコードも。
HTML:div要素版
l.2のimg要素がdiv要素に変わっただけです。
div要素内は空ですが、テキストでも画像でも何でも配置できます。
<div class="side-corner-tag"> <div class="box"></div> <p><span>リボン</span></p> </div>
CSS:div要素版
スタイルシートはdiv要素の定義とリボンのカラーを変更しただけです。
div要素の指定はサイズとカラーのみです。
.box{ width:300px; height:270px; border:1px solid #dadada; background-color:#fff; }
sponsors