久しぶりにちょっとだけクリエイティブなお話を紹介します。タイトルにもあるとおり、CSS3とWebフォントだけでステキなボタンをつくる方法を紹介します。画像は本当につかいません。でも、かなりステキです。
Webフォントをダウンロード
まずは、Webフォントをダウンロードします。今回使うのはFontelloというサイトです。
このFontelloは、自分の気に入ったアイコンだけを選んでダウンロードできるんです。なので、使わないような余計なものが含まれないので、ちょっとだけですが、軽くすることができます。
Fontelloの使い方
では、Fontelloの使い方です。
まずは、好きなアイコンを選びます。クリックするだけです。選択しているアイコンは赤い枠で囲まれます。
ダウンロードしたいアイコンを選択したら、左上にある【Edit codes】をクリックします。
文字の割り当ても終わったら、いよいよダウンロードです。右上の【Download webfont (4)】をクリックします。
これでWebフォントの準備ができました。次はCSSでデザインしていきます。
CSSでボタンをデザイン
では、ボタンを並べるという設定にして、さっそくつくっていきます。
HTML
当たり前ですが、単純なリストで問題ありません。でも、それぞれにクラスをもたせてください。
<ul class="nav">
<li><a href="#" class="icon-twi"></a></li>
<li><a href="#" class="icon-mail"></a></li>
<li><a href="#" class="icon-clip"></a></li>
<li><a href="#" class="icon-rss"></a></li>
</ul>
これだけでOKです。
CSS(Webフォント部分)
次に、Webフォントを使うよ!ってのをCSSで書きます。
で、肝心のコードです。
@font-face {
font-family: 'fontello';
src: url("../font/fontello.eot");
src: url("../font/fontello.eot?#iefix") format('embedded-opentype'), url("../font/fontello.woff") format('woff'), url("../font/fontello.ttf") format('truetype'), url("../font/fontello.svg#fontello") format('svg');
font-weight: normal;
font-style: normal;
}
.icon-twi:after { content: "t" ; }
.icon-mail:after { content: "m" ; }
.icon-clip:after { content: "c" ; }
.icon-rss:after { content: "r" ; }
after擬似要素を使うことで、HTMLソースに「t」とか「m」とかの意味不明な文字が入るのを回避しています。このfontelloの使い方はこちらを参考にしました。
参考
もうアイコン画像はいらない! Webフォントを使って、iOS風タブバーとアイコンを作成する方法アシアルブログ
CSS(デザイン部分)
CSSのプロパティについては、いろんなサイトで解説されてますし、プロパティなんかわかんなくてもそれっぽいのがつくれてしまうジェネレータもあるんで、その辺はご自由にやってください。みはらのコピペでもぜんぜんかまいませんけど。
.nav {
list-style: none;
text-align: center;
}
.nav li {
position: relative;
display: inline-block;
margin-right: -4px;
}
.nav a {
font-family: 'fontello';
font-size: 2.8em;
display: block;
background-color: #f3f3f3;
background-image: -webkit-gradient(linear, left top, left bottom, from(#f3f3f3), to(#e7e7e7));
background-image: -webkit-linear-gradient(top, #f3f3f3, #e3e3e3);
background-image: -moz-linear-gradient(top, #f3f3f3, #e3e3e3);
background-image: -ms-linear-gradient(top, #f3f3f3, #e3e3e3);
background-image: -o-linear-gradient(top, #f3f3f3, #e3e3e3);
color: #bbb;
margin: 20px;
width: 80px;
height: 80px;
position: relative;
text-align: center;
text-decoration: none;
line-height: 80px;
border-radius: 5%;
box-shadow: 0px 3px 8px #aaa, inset 0px 2px 3px #fff;
}
.nav a:before {
content: "";
display: block;
border-top: 2px solid #ddd;
position: absolute;
top: -10px;
left: -10px;
bottom: -10px;
right: -10px;
z-index: -1;
border-radius: 5%;
box-shadow: inset 0px 8px 40px #dedede;
}
こちゃこちゃ書いてますが、ジェネレータから吐き出されたコードでOKですので、安心してジェネレータ使ってください。
これで基本形はできましたが、せっかくなのでというか実際に使うときにはhoverしたときに何かしらのアクションがないと、ボタンとしては機能しませんね。ですので、いくつかアニメーションをつけてみます。
hover時のアニメーションもCSSで
では、hover時のアニメーションです。これも、いろんなサイトで紹介されているので、その中から代表的なものを2つ紹介します。1つは動きがあるもの、もう1つは色が変化するものです。
hover時にクルっと回転させるCSS
まずはコードから。コピペするだけでだいじょぶです。
.nav a:hover{
text-shadow: none;
color: #888;
transform: rotate(360deg);
-o-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
}
rotateプロパティの値を変えてやると、回転する角度が変えられます。このままだと360°回転します。
hover時に色が変化するCSS
こちらもまずはコードから。こっちもコピペでだいじょぶです。
.nav a:hover{
text-shadow: #3399ff 0px 0px 1px;
color: #3399ff;
background: #f5f5f5;
transition: .5s;
-moz-transition: .5s;
-webkit-transition: .5s;
}
CSS3っぽくというか、現代っぽいのは、ふわっと色が変わるあたりでしょうか?transition
プロパティだけで指定できますので、これだけでなく、ぜひ取り入れたいとこですね。
番外編:ガタガタさせる
hover時に、ボタンをガタガタ震わせることもjQueryを使えばできます。こちらの記事を参考にどうぞ。
[み]オブジェクトをガタガタ震わせるjQueryプラグイン“jRumble”の使い方
デモページ
今回作成したボタンは実際にマウスオーバーしてもらったほうがわかりやすいと思います。ということで、まずはデモページでマウスオーバーしてみてくださいね:)
あ、デモページみるときはCSS3対応のブラウザで見てください。じゃないと、ぜんぜん別物になってしまいますので…
参考
デモ:[み]画像は使わない!CSS3とWebフォントだけでステキなボタンをつくる方法
※追記
デモページを確認したら、回転しないですね… どうしてだろう… たぶん、単なる凡ミスだと思うんですが、わかる方教えてくださいませ。とりあえず、色が変わるほうだけでもお試しください。