CSS3をちょこちょこと使う機会が増えてきたように思います。
対応しているブラウザも増えてきていますし。
特にこれまで画像切り出して使っていた角丸だったり、グラデーションだったりの部分が、CSSだけで表現できるようになってるのは、すごい時間短縮になりますよね。
そこで今回はCSSだけで、それっぽいボタン作ってみました。
- 参考サイト
- How To Create a Stylish Button Entirely with CSS3
- 仕様ツール
-
- テキストエディタ
目次
HTMLファイルを作成
ボタンだけの簡単なHTMLファイルを作ります。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>CSS3で作るボタン</title> <link href="./css/css3-button.css" rel="stylesheet" type="text/css" media="screen" /> </head> <body> <div id="page"> <a href="#" class="btn">sriproot</a> </div> </body> </html>
ほとんどサンプルサイトと同じです。
一部、個人的によく使用するクラス名に変更してありますが、今回のチュートリアルでは関係ないです。
ブラウザで見ても

なんとも寂しい…。
リンクテキストがあるだけです。
ブロック要素にする
いよいよCSSだけでボタンを作っていきます。
まずはボタンとして成り立たせるために、ブロック要素にして高さと幅を与えてあげます。
a.btn {
display: block;
width: 450px;
height: 60px;
padding: 30px 0 0 0;
margin: 0 auto;
}
まだ背景とかなんにも設定してないので

まだそんな変わったところはありません。
中央によったかな?くらいですね。
背景を設定
これまでは色が付いてないのでわかりにくかったですね。
では、背景色をつけてみましょう。
a.btn {
background: #87e0fd; /* Old browsers */
background: -moz-linear-gradient(top, #87e0fd 0%, #05abe0 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#87e0fd), color-stop(100%,#05abe0)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #87e0fd 0%,#05abe0 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #87e0fd 0%,#05abe0 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #87e0fd 0%,#05abe0 100%); /* IE10+ */
background: linear-gradient(to bottom, #87e0fd 0%,#05abe0 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#87e0fd', endColorstr='#05abe0',GradientType=0 ); /* IE6-9 */
}
さて、背景色を追加しましたが、
background: #87e0fd; /* Old browsers */
これは、コメントで「old browsers」とあるように、CSS3を反映しないブラウザ向け。
そして、その下の部分で各ブラウザ向けに、グラデーションの背景を指定しています。
グラデーションの背景は、ネタ元でも紹介している『Ultimate CSS Gradient Generator – ColorZilla.com』ここで作成しました。
なんだかいろいろ大変ですよね…
背景がついても

まだボタンっぽくない…。
シャドウと角丸
ここから少しずつボタンぽくなっていきます。
CSS3といえばshadowかな。というイメージが強かったりするんですけど、そのシャドウを与えていきます。
a.btn {
box-shadow: inset 0px 0px 6px #fff;
-webkit-box-shadow: inset 0px 0px 6px #fff;
border: 1px solid #077A9E;
border-radius: 10px;
}
box-shadowも、text-shadowも同じで、「横方向 下方向 ぼかし 色」という順番で並んでいます。
border-radius: 10px;
これが使えるだけで、いろいろと苦労していた角丸ボックスが楽になりますよね。
やはり角丸になると

ボタンっぽく見えてきた。
完成!
最後の仕上げ。
ボタンの外枠はできたので、今度はフォントの設定。
a.btn {
font: bold 55px/25px Helvetica, Sans-Serif;
text-align: center;
text-transform: uppercase;
text-decoration: none;
color: #2477A2;
text-shadow: 0px 1px 2px #ADCBD1;
}
これ、フォントサイズのところが[ 55px/25px ]ってなってるの、なんででしたっけ?
まぁ、これでようやくボタンっぽくなって、完成ー!

これが画像を一枚も使ってない。Photoshopを一度も起動せずここまでできるなんて、ほんと感動…。
でも、もっとできるんです。
おまけ
おまけと言ってはいけませんが、ここまでやるといいよね。ってところ。
hover時の設定です。
a.btn {
-moz-transition: color 0.25s ease-in-out;
-webkit-transition: color 0.25s ease-in-out;
transition: color 0.25s ease-in-out;
}
a.btn:hover {
color: #fff;
-moz-transition: color 0.25s ease-in-out;
-webkit-transition: color 0.25s ease-in-out;
transition: color 0.25s ease-in-out;
}
ここで出てきた[ transiton ]。
これもThe CSS3な感じですけど、アニメーションですね。
transitionは、[ アニメーションさせるプロパティ(今回はcolor) どのくらいの秒数で変化するか 変化の度合い ]という、慣れないとちょっとわかりにくい部分です。
ということで、おまけもつきました。
マウスオンすると、白文字に変化!

画像だとまったくわかりませんね…。
ということで、DEMOページ。
全てCSS3で作るスタイリッシュなボタンチュートリアルのデモ
もちろん、CSS3対応のブラウザでご覧ください。
いやぁ、ほんとCSS3を使うだけで修正とかも楽チンですよねぇ。
そいぎ~。




