June 2018  |  01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

ソーシャルアイコンをWebフォントで表示する方法を色々ご紹介

twitterやFacebookなどのソーシャルメディア関連のアイコンを表示しているサイトはよく見かけますが、そのほとんどは画像だと思います。

今回、Webフォントを使って表示する方法を紹介しますので参考になればと思います。

実物は別サーバーにアップしていますので、こちらでご確認ください。

今回はWeb Symbols typefaceさんのアイコンを使わせていただきました。

で、まず最初にアイコン形式のフォントを読み込む設定をします。

01 @font-face {
02     font-family'WebSymbolsRegular';
03     srcurl('websymbols-regular-webfont.eot');
04     srcurl('websymbols-regular-webfont.eot?#iefix'format('embedded-opentype'),
05          url('websymbols-regular-webfont.woff'format('woff'),
06          url('websymbols-regular-webfont.ttf'format('truetype'),
07          url('websymbols-regular-webfont.svg#WebSymbolsRegular'format('svg');
08     font-weightnormal;
09     font-stylenormal;
10 }

次からは実際にアイコンを表示していく設定になります。

最初

まずは普通に並べてみます。

1 <div id="social-icon">f g k r v</div>

HTMLはこのようにアルファベットを並べただけになります。

1 #social-icon {
2     font-size:50px;
3     font-family'WebSymbolsRegular';
4 }

CSSで最初に読み込んだアイコン形式のフォントを指定すると、そのアルファベットに該当するアイコンが表示されます。

リンクにしてみる

リンクにしないと意味がないのでリンクを指定してみます。すると当然青くなって下線が入ります。

1 <div id="social-icon">
2   <a href="#">f</a>
3   <a href="#">g</a>
4   <a href="#">k</a>
5   <a href="#">r</a>
6   <a href="#">v</a>
7 </div>

先ほどと同じようにHTMLはこのようにアルファベットを並べただけになります。コードを見ただけだとアイコンだと分かりませんし、検索エンジン様に誤解を与えるかもしれません。解決方法は次で紹介します。

アイコンごとに色を付けてみる

アイコンごとに色を付けてみます。さらに、表示したいアイコンに該当するアルファベットをHTMLではなくCSSで記述します。

1 <div id="social-icon">
2   <a href="#" class="facebook"></a>
3   <a href="#" class="google-plus"></a>
4   <a href="#" class="twitter"></a>
5   <a href="#" class="feed"></a>
6   <a href="#" class="hatena"></a>
7 </div>

HTMLはこのように空のリンクになります。この先色々変形させていきますが、HTMLは変えずにCSSを変えていきます。

そして、それぞれのアイコンに該当するアルファベットはCSSで指定します。セレクタが長くなっていますが、別にクラス名だけでも大丈夫です。

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     padding0 5px;
07 }
08 #social-icon a.facebook:before {color#3b5998content"f";}
09 #social-icon a.google-plus:before {color#c53727content"g";}
10 #social-icon a.twitter:before {color#00a1e9content"k";}
11 #social-icon a.feed:before {color#ff8c00;content"r";}
12 #social-icon a.hatena:before {color#0075c2;content"v";}

個人的にほとんど使うことがない「:before擬似要素」を使っています。「.facebook:before {content: "f";}」だとfacebookというクラス名がついた要素の前にアルファベットの「f」が挿入されることになります。

テキストシャドウを使ってみる

テキストシャドウを使ってみます。これがあるとかなり見栄えが良くなります。

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #000,2px 2px 2px #aaa;
07     padding0 5px;
08 }
09 #social-icon a.facebook:before {color#3b5998content"f";}
10 #social-icon a.google-plus:before {color#c53727content"g";}
11 #social-icon a.twitter:before {color#00a1e9content"k";}
12 #social-icon a.feed:before {color#ff8c00;content"r";}
13 #social-icon a.hatena:before {color#0075c2;content"v";}

オンマウスで色を変えてみる

最初は白くてマウスを乗せたときに色が変わるようにします。アルファベットと色を別々に指定することになるので、ちょっと長くなります。

01 #social-icon a {
02     font-size:50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #000,2px 2px 2px #aaa;
07     padding0 5px;
08 }
09 #social-icon a.facebook:before {content"f";}
10 #social-icon a.google-plus:before {content"g";}
11 #social-icon a.twitter:before {content"k";}
12 #social-icon a.feed:before {content"r";}
13 #social-icon a.hatena:before {content"v";}
14 #social-icon a.facebook:hover {color#3b5998;}
15 #social-icon a.google-plus:hover {color#c53727;}
16 #social-icon a.twitter:hover {color#00a1e9;}
17 #social-icon a.feed:hover {color#ff8c00;}
18 #social-icon a.hatena:hover {color#0075c2;}

transitionを使ってみる

先ほどとほぼ一緒ですがtransitionを使って滑らかに色が変わるようにします。

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #000,2px 2px 2px #aaa;
07     padding0 5px;
08     -moz-transition-duration: 0.3s;
09     -webkit-transition: 0.3s;
10 }
11 #social-icon a.facebook:before {content"f";}
12 #social-icon a.google-plus:before {content"g";}
13 #social-icon a.twitter:before {content"k";}
14 #social-icon a.feed:before {content"r";}
15 #social-icon a.hatena:before {content"v";}
16 #social-icon a.facebook:hover {color#3b5998;}
17 #social-icon a.google-plus:hover {color#c53727;}
18 #social-icon a.twitter:hover {color#00a1e9;}
19 #social-icon a.feed:hover {color#ff8c00;}
20 #social-icon a.hatena:hover {color#0075c2;}

transitionについては、ChromeやSafariのWebKit系とFirefoxがベンダープレフィックス付きで対応しています。また、WebKit系は一括指定できますが、Firefoxは一括指定できませんので、「-moz-transition-duration」で指定しています。

transitionについてはこの画像をご参考に。

RGBaカラーを使ってみる

元の色にRGBaカラーを使っています。サンプルのように背景に画像を使っているときなどに効果的です。RGBaカラーに対応していないブラウザのために、「color: #fff;」は残しています。

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     color: rgba(0,0,0,0.1);
06     text-decorationnone;
07     padding0 5px;
08     -moz-transition-duration: 0.3s;
09     -webkit-transition: 0.3s;
10 }
11 #social-icon a.facebook:before {content"f";}
12 #social-icon a.google-plus:before {content"g";}
13 #social-icon a.twitter:before {content"k";}
14 #social-icon a.feed:before {content"r";}
15 #social-icon a.hatena:before {content"v";}
16 #social-icon a.facebook:hover {color#3b5998;}
17 #social-icon a.google-plus:hover {color#c53727;}
18 #social-icon a.twitter:hover {color#00a1e9;}
19 #social-icon a.feed:hover {color#ff8c00;}
20 #social-icon a.hatena:hover {color#0075c2;}

オンマウスで大きくしてみる

マウスを乗せたときにアイコンが大きくなります。単純ですがtransitionを使うと滑らかに大きくなり印象はぐっと良くなります。

01 #social-icon a {
02     font-size42px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #0002px 2px 2px #aaa;
07     padding0 3px;
08     -moz-transition-duration: 0.3s;
09     -webkit-transition: 0.3s;
10     vertical-align:text-top;
11 }
12 #social-icon a.facebook:before {color#3b5998content"f";}
13 #social-icon a.google-plus:before {color#c53727content"g";}
14 #social-icon a.twitter:before {color#00a1e9content"k";}
15 #social-icon a.feed:before {color#ff8c00;content"r";}
16 #social-icon a.hatena:before {color#0075c2;content"v";}
17 #social-icon a:hover {
18     font-size60px;
19 }

オンマウスでくるっと回る

0.3秒かけてくるっと回ります。

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #000,2px 2px 2px #aaa;
07     padding0 10px;
08     -moz-transition-duration: 0.3s;
09     -webkit-transition: 0.3s;
10     displayblock;
11     floatleft;
12 }
13 #social-icon a.facebook:before {color#3b5998content"f";}
14 #social-icon a.google-plus:before {color#c53727content"g";}
15 #social-icon a.twitter:before {color#00a1e9content"k";}
16 #social-icon a.feed:before {color#ff8c00;content"r";}
17 #social-icon a.hatena:before {color#0075c2;content"v";}
18 #social-icon a:hover{
19     -moz-transform: rotate(360deg);
20     -webkit-transform: rotate(360deg);
21 }

もっと回してみる

先ほどと一緒ですが、今度は2秒かけて20回転します

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #000,2px 2px 2px #aaa;
07     padding0 10px;
08     -moz-transition-duration: 2s;
09     -webkit-transition: 2s;
10     displayblock;
11     floatleft;
12 }
13 #social-icon a.facebook:before {color#3b5998content"f";}
14 #social-icon a.google-plus:before {color#c53727content"g";}
15 #social-icon a.twitter:before {color#00a1e9content"k";}
16 #social-icon a.feed:before {color#ff8c00;content"r";}
17 #social-icon a.hatena:before {color#0075c2;content"v";}
18 #social-icon a:hover{
19     -moz-transform: rotate(7200deg);
20     -webkit-transform: rotate(7200deg);
21 }

めくってみる

最後はめくれるように回ります。

01 #social-icon a {
02     font-size50px;
03     font-family'WebSymbolsRegular';
04     color#fff;
05     text-decorationnone;
06     text-shadow0 0 1px #000,2px 2px 2px #aaa;
07     padding0 10px;
08     -moz-transition-duration: 1s;
09     -webkit-transition: 1s;
10     displayblock;
11     floatleft;
12 }
13 #social-icon a.facebook:before {color#3b5998content"f";}
14 #social-icon a.google-plus:before {color#c53727content"g";}
15 #social-icon a.twitter:before {color#00a1e9content"k";}
16 #social-icon a.feed:before {color#ff8c00;content"r";}
17 #social-icon a.hatena:before {color#0075c2;content"v";}
18 #social-icon a:hover{
19     -moz-transform: rotateY(360deg);
20     -webkit-transform: rotateY(360deg);
21 }
pagetop