いままであまり気にしていなかったのですが、このサイトでYoutubeなどの動画を貼った記事をスマートフォンで見たときに、動画が綺麗に収まらないという状態になっていました。
実際には綺麗に収まらないのではなく、上下に無駄に黒いスペースが発生するという状態。これはCSSで「width:100%」を指定していたためです。このせいで横幅だけは可変になっていたのですが、縦幅は変わらず、結果として無駄なスペースが発生していました。
これを修正するにはfitvidsというjQueryを使うと簡単なのですが、あまり余計なスクリプトを読ませるのも嫌だったので、CSSのみで対応してみました。
CSSだけで動画をレスポンシブにする
ネットで調べるといくつか書き方が見つかったのですが、今回は一番わかりやすかった下記を参考にしました。
YouTubeなどiframe要素をレスポンシブデザイン対応する方法 | nishi19 breaking news
CSSの記述はほぼそのまま下記のようにしました。
#vid { position:relative; width:100%; padding-top:56.25%; } #vid iframe { position:absolute; top:0; left:0; width:100%; height:100%; }
挿入するYoutubeの埋め込みコードは下記のように<div id=”vid”>で囲みます。
<div id="vid"> <iframe width=~ > </div>
これだけでのことで貼り付けたYoutubeの動画がレスポンシブになります。
jQueryを使って過去記事も対応する
さて、新規に投稿するものはこれで構いませんが、過去に投稿した記事にある動画は#vidで囲まれていないのでレスポンシブにはなりません。一つずつ手で修正していってもいいのですがあまりにも面倒なので、結局jQueryに頼ります。
jQuery(document).ready(function(){ jQuery(".content>p>iframe").wrap(""); });
「”.content>p>iframe”」の部分は「”iframe”」だけでも良かったのですが、手動で#vidを付けた場合にかぶってしまうのでこのようにしました。
これで過去記事の動画もレスポンシブになりました(なったはず。全部は確認してないですけど……)。