CSSだけで作るアイコン付きボタンの作り方
こんにちは、鴨田です。
近頃はボタンのデザインに限らず、CSSで実現できるものは、
グラフィックにせず 、CSSだけで書いています。
ボタンデザインに限らず、HTML/CSSで書いた方が効率的なこもあって、
最近はあまりPhotoshopを開くこともなくなってきています。
ということで、本日はCSSだけで作るアイコン付きボタンの作り方です。
アイコン付きというのがポイントです。
● アイコンなしボタン
とりあえず、アイコンなしで作りましょう。
HTML
<body>
<a href="#" class="button normal">ボタン</a>
</body>
CSS
body {
font-family: "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "MS Pゴシック", "MS PGothic", sans-serif;
margin: 0;
padding: 0;
}
a {
/* サイズ指定 */
width: 200px;
height: 50px;
display: block;
box-sizing: border-box;
margin: 20px;
/* 縦横中 央揃え */
text-align: center;
line-height: 50px;
/* 色指定 */
background-image: -webkit-linear-gradient(top, #FC0, #F60);
border: 2px solid #F33;
color: #FFF;
/* 角丸 */
border-radius: 25px;
/* シャドウ / ベベル */
box-shadow: 0 1px 5px 1px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(255, 255, 255, 0.9) inset, 0 -1px 3px rgba(0, 0, 0, 0.1) inset;
/* その他 */
text-decoration: none;
font-size: 24px;
}
a:hover {
/* 反転 */
background-image: -webkit-linear-gradient(top, #F60, #FC0);
}
こんな感じでしょうかね。
ボタンとしては十分に機能していると思います。
● アイコン付きボタン その1
単純に文字の横に、アイコンを置きたい場合はimgタグで表現したり、
spanタグを使ってもいいと思います。
<body>
<a href="#" class="button normal"><a href="https://www.asial.co.jparrow.png &mode=1" class="popupimg"><img src="https://www.asial.co.jparrow.png"></a>IMGタグ</a>
<a href="#" class="button normal"><span class="arrow">></span>SPANタグ</a>
</body>
CSS
a img.arrow {
width: 24px;
height: 24px;
display: inline-block;
/* 位置合わせ用 */
vertical-align: middle;
margin: 0 10px 5px 0;
}
a span.arrow {
width: 24px;
height: 24px;
background-image: url(arrow.png);
background-size: 24px 24px;
display: inline-block;
text-indent: -9999px;
/* 位置合わせ用 */
vertical-align: middle;
margin: 0 10px 5px 0;
}
imgとかspanで入れた際に、微妙にずれるので、ちょっと位置合わせする必要があります。
また、この方法で作った場合の問題点として、
アイコン+文字でのセンター揃えなので、アイコンの位置が変わっ てしまい、
ボタンを縦に並べる様なデザインだと、統一感がなくなるということがあり得ます。
なので、次はアイコンの位置を固定したい場合を考えてみます。
● アイコン付きボタン その2
アイコンを左位置に固定したいと思います。
<body>
<a href="#" class="button i-left1">ボタン</a>
<a href="#" class="button i-left2">ボタン</a>
</body>
CSS
a.button.i-left1 {