はてなブログ用の軽量・高速自作ソーシャルボタンの LINE付き、各ソーシャルボタン選択可能版です。
01概要
改訂版をいくつも公開していますので整理しますと次の通りです。
-
はてなブックマーク、Facebook、Twitter、Google+ 記事下固定版
【はてなブログ高速化】自作ソーシャルボタン・シェアボタンで軽量化 -
はてなブックマーク、Facebook、Twitter、Google+ 記事上下表示可能版
はてなブログ/軽量・高速ソーシャルボタン・シェアボタン改訂版 -
上記2+LINE、各ボタン表示選択可能版
この記事 作成過程の説明記事
02ボタンの見た目
ボタンの見た目は、 CSSで自由に変更できます。デフォルトは次の通りです。
スマートフォンの場合
レスポンシブデザインのテーマを使用していない場合はスマートフォンでは表示されません。レスポンシブデザインのテーマを使用している場合は次のように表示されます。
03利用方法
事前準備(Facebook、Twitter 使用の場合は必須)
Facebook と Twitter のシェアカウントを取得するために次の2つの登録が必要です。
- Facebook アプリID
「【はてなブログ高速化3】Facebookシェアダイアログでシェアする/Facebook SDK for JavaScript – IMUZA.com」を参考にアプリID を取得し、以下の挿入コードの42行目「Facebook のアプリID」を自分のアプリID に変更してください。 - count.jsoon への登録
「widgetoon.js & count.jsoon | digitiminimi」でサイトを登録してください。
カスタマイズ > フッタ への挿入コード
- 不要なソーシャルボタンは、それぞれ
<li></li>
を削除してください - Facebook は、事前準備で取得したアプリIDを42行目「Facebook のアプリID」と差し替えてください
- Facebook 不要の場合は、ひとつ目の
<script></script>
も不要です
<ul id="tmplShareButtons"> <!-- 不必要な場合は各リストアイテムを削除 --> <!-- はてなブックマーク --> <li class="hatena"> <a class="hatena-bookmark-button" data-hatena-bookmark-layout="simple"> <span class="hatena-bookmark-count share-count"></span> <i class="blogicon-bookmark lg"></i><span class="share-label">ブックマーク</span></a> </li> <!-- Facebook --> <li class="facebook"> <a href="javascript:void(0)" class="facebook-share-button"> <span class="facebook-count share-count"></span> <i class="blogicon-facebook lg"></i><span class="share-label">シェア</span></a> </li> <!-- Twitter --> <li class="twitter"> <a class="twitter-button"> <span class="twitter-count share-count"></span> <i class="blogicon-twitter lg"></i><span class="share-label">ツイート</span></a> </li> <!-- Google+ --> <li class="googleplus"> <a class="googleplus-button"> <span class="googleplus-count share-count"></span> <i class="blogicon-plus lg"></i> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" width="36px" height="22px" viewBox="-14 -8 72 44" class="u7 uzlpSb"><path d="M32 8.2h-3v4h-4V15h4v4h3v-4h4v-2.9h-4V8.2zm6-2V8h3v15h3V4l-6 2.2z"></path><path d="M11.4 11.3v4.5h6c-.4 2.6-2.7 4.5-6 4.5-3.6 0-6.6-3.1-6.6-6.7s2.9-6.7 6.6-6.7c1.7 0 3.1.5 4.3 1.7l3.2-3.2c-2-1.8-4.5-2.9-7.5-2.9C5.3 2.5.3 7.5.3 13.6s5 11.1 11.1 11.1c6.5 0 10.7-4.6 10.7-10.9 0-.8-.1-1.7-.2-2.5H11.4z"></path></svg></a> </li> <!-- LINE --> <li class="line"> <a class="line-button"> <span class="share-count"><i class="blogicon-share lg"></i></span> <span class="line-label">LINE</span></a> </li> </ul> <script> // Facebook 削除の場合は、この<script></script>も削除可 window.fbAsyncInit = function() { FB.init({appId:'Facebook のアプリID',xfbml:true,version:'v2.7'}); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <!-- 以下は削除不可 --> <script>!function(){var e=function(e,t){var n="https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ",o=new XMLHttpRequest;o.onreadystatechange=function(){if(4===o.readyState&&200===o.status){var e=JSON.parse(o.responseText);t(e.result.metadata.globalCounts.count)}else t(0)},o.open("post",n,!0),o.setRequestHeader("Content-Type","application/json"),o.send(JSON.stringify(e))},t=function(e,t,n){var o=document.createElement("script");o.type="text/javascript";var a="ExternalCallback_"+t;window[a]=function(e){o.parentNode&&o.parentNode.removeChild(o);try{delete window[a]}catch(t){window[a]=null}n(e)},o.src=e+"&callback="+a,document.body.appendChild(o)},n=function(e,t){var n=new XMLHttpRequest;n.open("get",e,!0),n.onreadystatechange=function(){if(4===n.readyState&&200===n.status){var e=JSON.parse(n.responseText),o="share"in e?e.share:{},a="share_count"in o?o.share_count:0;t(a)}else t(0)},n.send(null)},o=0,a=document.getElementById("tmplShareButtons");a.removeAttribute("id"),Array.prototype.forEach.call(document.getElementsByClassName("hentry"),function(s){var r=s.getElementsByClassName("bookmark")[0],l=r.getAttribute("href"),i=r.textContent;Array.prototype.forEach.call(s.getElementsByClassName("social-buttons"),function(s){var r=a.cloneNode(!0);if(a.getElementsByClassName("hatena").length){var c=r.getElementsByClassName("hatena-bookmark-button")[0];c.setAttribute("href","http://b.hatena.ne.jp/entry/"+l),c.setAttribute("data-hatena-bookmark-title",i);var m="http://api.b.st-hatena.com/entry.count?url="+encodeURIComponent(l);t(m,o,function(e){c.getElementsByClassName("hatena-bookmark-count")[0].textContent=e}),o++}if(a.getElementsByClassName("facebook").length){var u=r.getElementsByClassName("facebook-share-button")[0];u.addEventListener("click",function(){FB.ui({method:"share",href:l},function(){})});var m="https://graph.facebook.com/?id="+encodeURIComponent(l);n(m,function(e){u.getElementsByClassName("facebook-count")[0].textContent=e})}if(a.getElementsByClassName("twitter").length){var p=r.getElementsByClassName("twitter-button")[0];p.setAttribute("href","http://twitter.com/intent/tweet?url="+encodeURIComponent(l)+"&text="+i);var m="http://jsoon.digitiminimi.com/twitter/count.json?url="+encodeURIComponent(l);t(m,o,function(e){p.getElementsByClassName("twitter-count")[0].textContent=e.count}),o++}if(a.getElementsByClassName("googleplus").length){var d=r.getElementsByClassName("googleplus-button")[0],h=500,g=500,f=(window.screen.width-h)/2,y=(window.screen.height-g)/2;d.setAttribute("href","javascript:void(window.open('https://plus.google.com/share?url="+encodeURIComponent(l)+"', '_blank', 'width="+h+",height="+g+",left="+f+",top="+y+"'))");var C={method:"pos.plusones.get",id:"p",params:{nolog:!0,id:l,source:"widget",userId:"@viewer",groupId:"@self"},jsonrpc:"2.0",key:"p",apiVersion:"v1"};e(C,function(e){d.getElementsByClassName("googleplus-count")[0].textContent=e})}if(a.getElementsByClassName("line").length){var m="http://line.me/R/msg/text/?"+i+"%0D%0A"+encodeURIComponent(l);r.getElementsByClassName("line-button")[0].setAttribute("href",m)}s.appendChild(r)})}),a.parentNode.removeChild(a)}();</script>
カスタマイズ > デザインCSS への挿入コード
.social-buttons ul { padding: 0; margin: 0; } .social-buttons ul li { display: inline-block; margin: 0; padding: 0; list-style-type: none; width: 15%; border-radius: 3px; vertical-align: text-top; } .social-buttons ul li a { width: 100%; display: inline-block; color: #fff; text-decoration: none; position: relative; text-align: center; } .social-buttons ul li a span.share-count { display: inline-block; width: 100%; color: #000; background: #fff; line-height: 2rem; border-radius: 3px 3px 0 0; opacity: 1; -webkit-transition: opacity 0.4s, transform 0.4s; transition: opacity 0.4s, transform 0.4s; } .social-buttons ul li a i { padding: 0 5px; } .social-buttons ul li a i.blogicon-plus { color: #dd5144; } .social-buttons ul li a svg { position: absolute; left: 0; right: 0; margin: 0 auto; } .social-buttons ul li a svg path { fill: #fff; } .social-buttons ul li a span.share-label { font-size: .7rem; } .social-buttons ul li a span.line-label { font-size: .7rem; line-height: 1.2rem; } .social-buttons ul li a:hover span.share-count { opacity: 0.8; } .social-buttons ul li.hatena { background: #00a4de; border: solid 1px #00a4de; } .social-buttons ul li.facebook { background: #3e59a5; border: solid 1px #3e59a5; } .social-buttons ul li.twitter { background: #1b95e0; border: solid 1px #1b95e0; } .social-buttons ul li.googleplus { background: #dd5144; border: solid 1px #dd5144; } .social-buttons ul li.line { background: #00b900; border: solid 1px #00b900; } .social-buttons ul li.line span.share-count i { color: #00b900; } @media (max-width: 767px) { .social-buttons ul li a span.share-label { display: none; } }
以上です。
04免責等
- 本ツール使用によって発生した問題について責任は負い兼ねますので自己責任でご使用ください
- ただし、対応可能な問題については可能な限りお答えしますのでコメント欄にお願いします
- また、バグや各ソーシャルボタンの仕様変更等による問題はお知らせいただければ助かります