はてブ、Twitter、Facebook、Google+ のソーシャルボタンをシンプルに表示する jQuery プラグイン

Easy Social Buttons は、はてブ、Twitter、Facebook、Google+ のソーシャルボタンをシンプルなデザインで表示することのできる jQuery プラグインです。各サービスが提供しているソーシャルボタンより動作が軽いので投稿記事一覧画面などで大量にボタンを表示したいような場合に向いています。jQuery Sitekit の一機能として、もしくは単独の jQuery プラグインとして使用することができます。

変更履歴

  • v0.1.1
    • IE7 以下で動作しない不具合を修正しました。

使い方

jQuery、Social Info、Easy Social Buttons(または jQuery Sitekit)の JS/CSS ファイルを読み込みます。

  1. <link href="jquery.easy-social-buttons.css" type="text/css" rel="stylesheet">
  2. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  3. <script src="jquery.social-info.js"></script>
  4. <script src="jquery.easy-social-buttons.js"></script>

ソーシャルボタンを表示する場所を記述し

  1. <div class="social-btn"></div>

easySocialButtons() メソッドを実行します。

  1. $('div.social-btn').easySocialButtons();

表示してるページのソーシャルボタンが表示されます。

表示してるページのソーシャルボタンを表示する

指定した URL のソーシャルボタンを表示する

url パラメータを指定することで任意の url のソーシャルボタンを表示することができます。

  1. $('div.social-btn').easySocialButtons({
  2. url : 'http://www.google.com'
  3. });

指定した URL のソーシャルボタンを表示する

指定要素の URL 属性値のソーシャルボタンを表示する

href、data-href、data-url といった属性値を持つの要素に対し、easySocialButtons() メソッドを実行した場合、その属性値のソーシャルボタンを表示します。ソーシャルボタンの挿入先は、対象要素の後ろになります。

  1. <ul class="links">
  2. <li>
  3. <a href="http://d.hatena.ne.jp/cyokodog/20081016/jquerylinks01">
  4. jQuery 関連記事まとめ - Cyokodog :: Diary</a>
  5. </li>
  6. <li>
  7. <span data-href="http://d.hatena.ne.jp/cyokodog/20090224/jQueryPosSet01">
  8. jQuery の位置・サイズ関連メソッドまとめ - Cyokodog :: Diary</span>
  9. </li>
  10. <li>
  11. <span data-url="http://cyokodog.tumblr.com/post/38835740744/ie-version">
  12. IE のレンダリングバージョンの指定と判定方法の自分なりまとめ - CYOKOLOG</span>
  13. </li>
  14. </ul>

  1. $('ul.links li > *').easySocialButtons();

指定要素の URL 属性値のソーシャルボタンを表示する

ソーシャルボタンを任意の場所に表示する

ソーシャルボタンを任意の場所に表示するには、autoAdd パラメータを false にしソーシャルボタンの自動挿入を止め、callback パラメータで挿入処理を記述します。

以下のような記事一覧のマークアップにおいて、h4 要素の後ろにソーシャルボタンを表示しようとした場合、

  1. <div class="article">
  2. <h4>
  3. <a href="http://d.hatena.ne.jp/cyokodog/20081016/jquerylinks01">
  4. jQuery 関連記事まとめ - Cyokodog :: Diary</a>
  5. </h4>
  6. <p>contents...</p>
  7. </div>
  8. <div class="article">
  9. <h4>
  10. <a href="http://d.hatena.ne.jp/cyokodog/20090224/jQueryPosSet01">
  11. jQuery の位置・サイズ関連メソッドまとめ - Cyokodog :: Diary</a>
  12. </h4>
  13. <p>contents...</p>
  14. </div>
  15. <div class="article">
  16. <h4>
  17. <a href="http://cyokodog.tumblr.com/post/38835740744/ie-version">
  18. IE のレンダリングバージョンの指定と判定方法の自分なりまとめ - CYOKOLOG</a>
  19. </h4>
  20. <p>contents...</p>
  21. </div>

以下のように記述します。

  1. $('div.article h4 a').easySocialButtons({
  2. autoAdd:false,
  3. callback : function( api ){
  4. // a の親 h4 を取得し、その後ろにボタンを挿入
  5. $(this).parent().after(api.getButtons());
  6. }
  7. });

ソーシャルボタンを任意の場所に表示する

ブランドカラーを使用せず単色で表示する

useBrandColor パラメータに false を指定すると単色(薄いグレイ)で表示されます。

  1. $('ul.links a').easySocialButtons({
  2. useBrandColor : false
  3. });

ブランドカラーを使用せず単色で表示する

inverseColor パラメータに false を指定すると濃いグレイで表示されます。

  1. $('ul.links a').easySocialButtons({
  2. useBrandColor : false,
  3. inverseColor: true
  4. });

ブランドカラーを使用せず単色で表示する

一部のボタンを非表示にし、表示順を変更する

orders パラメータで、表示するボタンの種類、表示順を指定できます。以下例では、はてブを非表示にし、Facebook、Twitter、Google+ の順で表示してます。

  1. $('ul.links a').easySocialButtons({
  2. orders : ['facebook', 'twitter', 'googleplus']
  3. });

一部のボタンを非表示にし、表示順を変更する

デザインをカスタマイズする

template パラメータに以下ルールで、ボタンのマークアップを記述できます。

  • esb-label クラスを持つ要素には innerText にサービス名がセットされる。
  • esb-counter クラスを持つ要素には innerText に共有数がセットされる。
  • esb-entry クラスを持つ要素には href 属性に各サービスの共有画面 url がセットされる。
  • esb-search クラスを持つ要素には href 属性に各サービスの検索結果画面 url がセットされる。
  • 上記要素は esb クラスを持つ要素にラップされてる必要がある。

例えば、Twitter Bootstrap の btn-group を利用したデザインにするには、以下のように記述します。

  1. $('h4 a').easySocialButtons({
  2. autoAdd:false,
  3. callback : function( api ){
  4. $(this).parent().after(api.getButtons());
  5. },
  6. tempalte : '<div class="esb my-custom">' +
  7. '<h4 class="esb-label"></h4>' +
  8. '<div class="btn-group">' +
  9. '<a class="esb-counter btn btn-default"></a>' +
  10. '<a class="esb-entry btn btn-default">Share</a>' +
  11. '<a class="esb-search btn btn-default">Search</a>' +
  12. '</div>' +
  13. '</div>',
  14. hatebu : {
  15. label : 'Hatebu!'
  16. },
  17. twitter : {
  18. label : 'Twitter'
  19. },
  20. facebook : {
  21. label : 'Facebook'
  22. },
  23. googleplus : {
  24. label : 'Google+',
  25. tempalte : '<div class="esb my-custom">' +
  26. '<h4 class="esb-label"></h4>' +
  27. '<div class="btn-group">' +
  28. '<a class="esb-entry btn btn-default">Share</a>' +
  29. '<a class="esb-search btn btn-default">Search</a>' +
  30. '</div>' +
  31. '</div>',
  32. }
  33. });

label パラメータには表示サービス名を指定できます。各サービス毎に異なる値を設定したい場合は、サービス名(hatebu / twitter / facebook / googleplus) : パラメータ(json)の形式でパラメータを指定します。上記例では、Google+ のみ共有数を取得する API が提供されてないのでマークアップを変えてます。

デザインをカスタマイズする(Bootstrap Button Group)

以下は Bootstrap の定義カラーを流用したマークアップです。

  1. $.esb.hatebu.defaults.label = 'Hatebu!';
  2. $.esb.twitter.defaults.label = 'Twitter';
  3. $.esb.facebook.defaults.label = 'Facebook';
  4. $('h4 a').easySocialButtons({
  5. tempalte :
  6. '<div class="btn-group esb">' +
  7. '<a class="esb-label esb-entry btn btn-xs btn-primary"></a>' +
  8. '<a class="esb-counter esb-search btn btn-xs btn-default"></a>' +
  9. '</div>',
  10. twitter : {
  11. tempalte :
  12. '<div class="btn-group esb">' +
  13. '<a class="esb-label esb-entry btn btn-xs btn-info"></a>' +
  14. '<a class="esb-counter esb-search btn btn-xs btn-default"></a>' +
  15. '</div>',
  16. },
  17. googleplus : {
  18. label : 'Google+',
  19. tempalte :
  20. '<div class="btn-group esb">' +
  21. '<a class="esb-label esb-entry btn btn-xs btn-danger"></a>' +
  22. '</div>'
  23. }
  24. });

esb.サービス名.defaults.パラメータ名 = 値 と記述することでパラメータの初期値を変更することもできます。

デザインをカスタマイズする(Bootstrap Color Button)

パラメータ

プラグイン実行時、下記パラメータを指定できます。

  1. defaults : {
  2. autoAdd : true, // true でボタンの自動挿入を行う
  3. addMethod : 'insertAfter', // ボタンの挿入メソッドを指定
  4. callback : function(api ){}, // プラグイン実行後のコールバック処理
  5. orders : ['hatebu','twitter', 'facebook', 'googleplus'], // ボタンの表示順
  6. labels : { // サービスの表示名
  7. 'hatebu' : 'B!',
  8. 'twitter' : 't',
  9. 'facebook' : 'f',
  10. 'googleplus' : 'G+'
  11. },
  12. url : '',
  13. entryTitle : '投稿する', // esb-entry クラスを持つ要素に割り当てる title 属性値
  14. searchTitle : '検索する', // esb-search クラスを持つ要素に割り当てる title 属性値
  15. waitCounter : '<span>&nbsp;</span>', // Web API の取得結果待ち時に表示するマークアップ
  16. tempalte : '<span class="esb"><a class="esb-label esb-search" target="_blank"></a><a class="esb-counter esb-entry" target="_blank"></a></span>', // ボタンのテンプレート
  17. useBrandColor : true, // ブランドカラーの使用
  18. inverseColor : false // ブランドカラー未使用時の配色の反転
  19. },

API

API オブジェクトを使用し、下記メソッドを実行できます。

  1. getButtons : function(){ // ボタンの取得

ダウンロード