webデザイン解決!FaceBookやG+のウィジェットをレスポンシブにするJavascript

  • 2014.07.29(Tue) 18:30
  • WEB制作
FBやG+のウィジェットをレスポンシブにする方法の写真

例えばレスポンシブ対応のブログなんかを作っている時、サイドバーに設置したGoogle+やFacebookのウィジェットって厄介じゃありませんか?

ウィジェットの横幅を大きくしたらスマホビューでは画面をはみ出ちゃうし、小さくしたらPCビューでかっこ悪い…。かといってPHPでユーザーエージェントを取得して出力タグを振り分けるというのも…。「各ブラウザはもっとユーザーエージェントを分かりやすくしろよ!!!」と作業5分後には叫んでいることでしょう。

今回は、ほんの少しのスタイルシートと数行のJavascriptを追加するだけで、ウィジェットをPCビュー、スマホビューともにフィットさせることができる小技を紹介します。

どんなのかイメージが湧かない人のためにデモを用意しました。下記がレスポンシブに対応した、Google+とFacebookのウィジェットです。ウィンドウを広げた状態、縮めた状態、それぞれでページを再読み込みしてみて下さい。どちらのウィンドウサイズにも、ウィジェットの横幅がフィットするはずです。

Google+のバッジ(ウィジェット)は、最大横幅が450pxです。

「HTML5」タイプの埋め込みコード(divタグ)を利用しています。「iframe」の場合は、スタイルシートにmax-width:100%を設定するだけなので簡単ですね。

「これ使ってみてもいいかも…」と思った人のために、その方法を紹介します。実装も取り外しも簡単で、既存のデザインに影響を与えることがありません。気軽に試してみて下さいね。

デモを見る

まず、下記のJavascriptを、〜.jsという名前で保存して読み込んで下さい。なお、jQueryを利用しているので別途読み込んでおいて下さいね。すっかりjQueryの虜になっている奴←。

$(function(){
	$('.responsive-widget-syncer').each(function(){
		$(this).children('div').attr({'data-width':$(this).outerWidth({margin:true})});
	});
});

続いて、下記のスタイルシートを既存のファイルに加えて下さい。

.responsive-widget-syncer{
	width:100%;
	max-width:100%;
}

最後に、このレスポンシブ化を適用したいウェジェットの埋め込みコードを、responsive-widget-syncerというクラス名が付いたdivタグで囲むだけです。サンプルのように複数のウィジェットをまとめたり、コンテナが何カ所あっても大丈夫です。

<div class="g-person">〜</div> <div class="fb-like-box">〜</div>

前章のものでは物足りない人のために、カスタマイズ版を紹介します。Javascriptだけを差し替えて下さいね。

通常だと横幅いっぱいにフィットさせる仕様ですが、デザイン上、「最大幅を制限したい」というケースがあるかもしれません。そんな人はこちらをご利用下さい。3〜4行目を設定して下さいね。デフォルトでは最大幅500pxになっています。

デモを見る

$(function(){

	//最大幅を設定
	var MaxWidthWidgeSyncer = '500';

	$('.responsive-widget-syncer').each(function(){
		var WidthWidgetSyncerThis = $(this).outerWidth({margin:true});
		if(WidthWidgetSyncerThis > MaxWidthWidgeSyncer) WidthWidgetSyncerThis = MaxWidthWidgeSyncer;
		$(this).children('div').attr({'data-width':WidthWidgetSyncerThis});
	});
});
Google+バッジのサンプル(縦型と横型)
Google+バッジのサンプル(縦型と横型)

これはGoogle+のバッジ(ウィジェット)を利用する場合なんですが、PCビューの時はダイナミックな縦型タイプを、スマホビューの時は控えめな横幅タイプを出力することができます。3〜4行目を設定して下さい。デフォルトでは480pxを境に、タイプを変更するようになっています。

デモを見る

$(function(){

	//ブレイクポイントを指定
	var BreakWidthWidgetSyncer = '480';

	$('.responsive-widget-syncer').each(function(){
		var WidthWidgetSyncer = $(this).outerWidth({margin:true});
		var LayoutWidgetSyncer = (WidthWidgetSyncer>BreakWidthWidgetSyncer) ? '': 'landscape';
		$(this).children('div').attr({'data-width':WidthWidgetSyncer,'data-show-faces':'true','data-layout':LayoutWidgetSyncer});
	});
});

元々、ウィジェットはJavascriptを利用して表示するものなので、「ユーザーがJavascriptをOffにしてたら…」なんて考える必要はありませんよね。当ブログでは、今回のように「スタイルシートでは設定できない要素」はJavascriptを使ってレスポンシブ化しちゃってます。…それにしても、各端末がユーザーエージェントなどに機種の横幅、縦幅などの情報を記録してくれたら どんなにweb作成が楽になるか…とか妄想してしまいますよね。

WEB制作

ソーシャルのJavascriptを1つにまとめて、非同期化処理を加える方法
自動でショートムービーを作成するアプリ「Qwiki」がブログにも埋め込めて超便利!
Googleリッチスニペット対策!初心者向けSchema.org解説!
表示速度が改善!CDNサービスのCloudFlareの登録手順をまとめました!
Instagramのハッシュタグ検索システム(日本語対応)
意外と簡単!早くやればよかったJavascript/CSSのgzip圧縮!
PHPとJSでソーシャルカウントを取得する方法まとめ(全9サイト)
初心者でも分かる!なjQuery「TOPへ戻るボタン」の作り方
スマホのUI向上!?ニョローっとGoogle Mapsを広げるJavascriptを作ってみたよ!
webサービス 40サイトの公式ロゴ配布ページまとめ
解説記事で使える!プログラムの公式ロゴ素材の配布ページまとめ
Off→Onにするだけ!HTMLの転送量を減らす超簡単なphp.iniの設定!
初心者でも分かる!な「モーダルウィンドウ」の作り方
たった数分!ページ高速化のためhtaccessでキャッシュ設定は絶対やっておこう!
【スマホ対応】クリックすると音が鳴る!「あいさつボタン」の設置方法
HashgramからInstagramのURLと埋め込みコードを呼び出すwebサービス

この記事へのコメント

感想、ご指摘などお気軽にお寄せ下さい。「関連記事を書いた」という方はご報告いただければリンクします。

コメントを書き込む

  • コメント

※Twitter、Facebook、はてな、いずれかのアカウントをお持ちの方は、本人認証(ログイン)を行なうことができます。
※本人認証をすることで、書き込みの待ち時間なし、画像アップロード、アイコンなどが利用できます。
※認証時にサービスと連携しますが、名前とアイコン以外の情報を読み込んだり、また書き込みを行なうことはありません。連携で要求する権限は「公開情報の読み取り」のみです。

コメントは、0件です。

記事の更新履歴

  • 記事を公開しました。
    2014/07/29 18:30

ブログの著者について

あらゆ

Yuta Arai(あらゆ)

足立区竹ノ塚在住の1982年生まれ。ウェブとラーメンが大好きです。
info@syncer.jp

あいさつボタン