ホームページ制作のためになるTopics

CSSのみで!画像を使わないボタンアイコン

CSS3と擬似要素を使って、普段リンクボタンなどでよく使う「▶」などのアイコンを画像を使わずに簡単実装する方法です。
元のボタンを形成するCSSとアイコンのCSSを分けて制作しておくと重宝します。

まずは、コピペで!

ボタンを形成するCSS

/* 角丸 */
.Radius5 {  
    border-radius: 5px;        /* CSS3草案 */  
    -webkit-border-radius: 5px;    /* Safari,Google Chrome用 */  
    -moz-border-radius: 5px;   /* Firefox用 */  
}
/* ボタン共通 */
.Button {
	overflow: hidden;
	width: 250px;
	height: 50px;
	margin: 0;
	padding: 0;
}
.Button a {
	display: block;
	position: relative;
	z-index: 100;
	text-align:center;
	background: #00a0e9;
	color: #fff;
	font-size: 14px;
	line-height: 50px;
	text-decoration:none;
}
.Button a:hover {
	background: #3ab2e9;        /* マウスオーバーカラー */  
}

上記のボタンを形成するCSSは、これから紹介するボタン全て共通で読み込んでいます。

では、さっそくボタンを作っていきましょう。

[1]「く」の字矢印アイコン

HTML

<div class="Button Radius5" id="IconList1">
<a href="#">くの字矢印ボタン</a>
</div>

IconList1というIDでアイコンのCSSを制作します。

アイコン(IconList1)のCSS

.IconList1 a:before {        /*白いひし型 */  
	display: block;
	content: "";
	position: absolute;
	-webkit-transform: rotate(45deg);
	transform: rotate(45deg);
	top: 50%;
	left: 20px;
	width: 8px;
	height: 8px;
	margin-top: -4px;
	background: #fff;
}
.IconList1 a:after {        /*バックグラウンドと同じ色のひし型をずらして「before要素」を隠す */  
	display: block;
	content: "";
	position: absolute;
	-webkit-transform: rotate(45deg);
	transform: rotate(45deg);
	top: 50%;
	left: 15px;
	width: 8px;
	height: 8px;
	margin-top: -4px;
	background: #00a0e9;
}
.IconList1 a:hover:after {        /*「after要素」のマウスオーバー(カラーを合わせる) */  
	background: #3ab2e9;
}

beforeで白い三角形を形成し、afterでバックグラウンドと同じ色で白い三角を隠しています。
マウスオーバー時のカラーもお忘れなく。

[2]普通の三角アイコン

サンプル

HTML

<div class="Button Radius5" id="IconList2">
<a href="#">三角ボタン</a>
</div>

上記の「く」の字矢印アイコン と差別化するためにIconList2というIDでアイコンのCSSを制作します。

アイコン(IconList2)のCSS

#IconList2 a:before {
	display: block;
	content: "";
	position: absolute;
	top: 50%;
	left: 25px;
	width: 0;
	height: 0;
	margin-top: -5px;
	border: 5px solid transparent;        /*top right bottom を透明化 */ 
	border-left: 5px solid #fff;
}
#IconList2 a:hover:before {
	left: 27px;        /*マウスオーバーで三角をずらす */ 
}

transparentで「top」「right」「bottom」を透明化して三角形を形成しています。
今回マウスオーバーで、少し三角の位置をずらしてみました。

[3]丸の中に三角アイコン

HTML

<div class="Button Radius5" id="IconList3">
<a href="#">丸の中に三角ボタン</a>
</div>

最後はIconList3というIDでアイコンのCSSを制作します。

アイコン(IconList3)のCSS

#IconList3 a:before {        /*白い丸 */ 
	display: block;
	content: "";
	position: absolute;
	top: 50%;
	left: 19px;
	width: 16px;
	height: 16px;
	margin-top: -8px;
	border-radius: 50%;        /* CSS3草案 */  
    -webkit-border-radius: 50%;    /* Safari,Google Chrome用 */  
    -moz-border-radius: 50%;   /* Firefox用 */  
	background: #fff;
}
#IconList3 a:after {        /*「after要素」で三角 */ 
	display: block;
	content: "";
	position: absolute;
	top: 50%;
	left: 25px;
	width: 0;
	height: 0;
	margin-top: -5px;
	border: 5px solid transparent;        /*top right bottom を透明化 */ 
	border-left: 5px solid #00a0e9;
}
#IconList3 a:hover:after {        /*「after要素」のマウスオーバー(カラーを合わせる) */  
	border-left: 5px solid #3ab2e9;
}

丸の中に三角も「before」「after」「transparent」の応用です。

まとめ

今まで、単純なボタンでも画像アイコンを使用していたかと思いますが、ちょっとしたボタンならCSSで実装できるので、効率よく作業が出来るかと思います。
ボタンだけではなく、ナビゲーションにも使えますので応用して制作してください。
アイコンだけのCSSを作っておくと、後々便利に使えます。

その他のTopics