続・レスポンシブなiframe
Published at 2020-01-03
縦横比を維持して親要素いっぱいに広がる <iframe> 要素の実現については、レスポンシブな iframe で解決している。このブログでも、YouTube などの動画を埋め込むことがあるので、この方法を使って対処してきたが、いくつか改善したいポイントがあった。
<iframe>の親に、特定のクラスを付与した要素を必要とする- 縦横比に応じた
padding-topを用意し、付け替えを必要とする
これを Web Components で実装して解決した。
<fluid-iframe> 要素による単純化
<fluid-iframe> としてカスタム要素にして汎用化した。npm install fluid-iframe でもインストールできるが、直接 jsDeliver や unpkg などの CDN からモジュールスクリプトとしてインポートできる。あとは customElements.define() でカスタム要素として登録し、 <iframe> のように使うだけで良い。
<fluid-iframe
src="https://www.youtube.com/embed/EqNHSrHzSOU"
title="Santa Tracker: Out Like A Light"
aspect="16/9">
</fluid-iframe>
<script type="module">
import FluidIframe from 'https://unpkg.com/fluid-iframe';
customElements.define('fluid-iframe', FluidIframe);
</script>
<iframe is="fluid-iframe"> のように、<iframe> 要素の拡張として <iframe> 要素をフォールバックとして動作させたかったが、要素を親子関係にしないとレスポンシブを実現できないため、断念した。
タイトルと URL をコピーしました