
YouTubeなどの動画を埋め込む際、そのまま貼り付けるとスマホなどモバイルで表示した際にはみ出てしまいます。テーマによっては、レスポンシブに対応しているかと思いますが、自作した場合などはこのような対応が必要になります。
投稿時に貼り付けたiframeにdivを付与
1 2 3 4 5 6 7 8 9 10 |
function iframe_in_div($the_content) { if ( is_singular() ) { $the_content = preg_replace('/<iframe/i', '<div class="youtube"><iframe', $the_content); $the_content = preg_replace('/<\/iframe>/i', '</iframe></div>', $the_content); } return $the_content; } add_filter('the_content','iframe_in_div'); |
投稿内容を表示するthe_content();にiframeがあった場合class=”youtube”を自動的にdivで囲ってくれます。
HTMLではこのように表示。
1 2 3 4 5 6 7 |
<div class="youtube"> <iframe src="#"></iframe> </div> |
CSSはこんな感じで指定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
.youtube { position: relative; width: 100%; padding-top: 56.25%; } .youtube iframe{ position: absolute; top: 0; right: 0; width: 100%; height: 100%; } |
サンプルではYoutubeのアスペクト比16:9になるので、padding-topを9÷16×100=56.25%と計算しないといけません。
スマートではないし面倒ですね。
aspect-ratioでシンプルにアスペクト比を指定
このサイトでも同様にしてあるのですが、もっとシンプルにしたいですよね。※現在は下記内容に修正済み。
ここからが今回の本題。
aspect-ratioを使用すればもっと簡単にアスペクト比を指定できます。
1 2 3 4 5 6 7 8 9 |
.youtube { aspect-ratio: 16 / 9; } .youtube iframe{ width: 100%; height: 100%; } |
aspect-ratio: 16/9; これで16:9のアスペクト比で指定されます。
safariの対応が遅かったこともあり使用を見送ってましたが、現在はモダンブラウザにすべて対応しています。
参考としてYouTubeの動画を貼ってみます。
ブラウザのサイズに合わせて表示されているかと思います。
シンプルなコードが使えるようになってくると、不具合が出た場合も対応が楽になりますね。
前に覚えた知識を当たり前だと思わず、常にアップデートしていきましょう!
関連記事
2022/07/27
Welcart2.6から商品画像の登録方法の仕様変更があり、今まで不満だった内容が改善されました。それに伴い旧バージョンからアップデートすると、画像が表示されな...
2022/07/23
URLなど半角英数字の長すぎて要素からはみ出てしまい、デザインが崩れてしまうことがあります。レスポンシブサイトだと、モバイルなど表示幅が狭いと突き抜けて見た目も...
2022/07/22
トップページやサイドバーなどに記事一覧を表示させている事が多いかと思いますが、今回は一覧の最初の記事などを変化させる方法をご紹介します。 WordPressのル...
2022/07/21
ワードプレスに投稿された全記事を一覧で表示するやり方です。 固定ページを作成 全記事一覧を表示させる固定ページを作成しましょう。 category.phpやpa...
2022/07/16
ワードプレスでサイトマップを確認した際に、下記のようなエラーが出た場合の対処法です。 This page contains the following erro...