facebookの読み込みタグをレスポンシブに対応させる
参考サイトを元に指定した一例
■html
<script>(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#xfbml=1&version=v2.8";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="boxFacebook"></div>
■js
//facebook読み込み
// ページプラグインの埋め込みコードを返す。
function pagePluginCode(w) {
// 幅に応じて高さを変更する場合
if(w > 400) {
var h = 300;
} else {
var h = 200;
}
return '<div class="fb-page" data-href="https://www.facebook.com/*****" data-tabs="timeline" data-width="' + w + '" data-height="' + h + '" data-small-header="true" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="false"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/aeon.ryukyu1975"><a href="https://www.facebook.com/*****">ダミーサイト名</a></blockquote></div></div>';
}
// ページプラグインを追加する要素
var facebookWrap = $('.boxFacebook');
var fbBeforeWidth = ''; // 前回変更したときの幅
var fbWidth = facebookWrap.width(); // 今回変更する幅
var fbTimer = false;
$(window).on('load resize', function() {
if (fbTimer !== false) {
clearTimeout(fbTimer);
}
fbTimer = setTimeout(function() {
fbWidth = facebookWrap.width(); // 変更後の幅を取得
// 前回の幅から変更があった場合のみ処理
// スマホだとスクロール時にリサイズが発生することがあるため
if(fbWidth != fbBeforeWidth) {
facebookWrap.html(pagePluginCode(fbWidth)); // ページプラグインのコード変更
window.FB.XFBML.parse(); // ページプラグインの再読み込み
fbBeforeWidth = fbWidth; // 今回変更分を保存しておく
}
}, 200);
});
■css
.boxFacebook{
width: 48%;
max-width: 485px;
}
.boxFacebook > .fb-page {
width: 100%;
}
.boxFacebook > .fb-page > span,
.boxFacebook iframe {
width: 100% !important;
}
参考サイト
-
前の記事
比較演算子の『==』と『===』の違い 2017.08.18
-
次の記事
WordPressの標準インストール時に作成されるデータベーステーブルの概要図 2017.09.07