動画
video source
HTML5 ネイティブの動画再生要素。複数の source でフォーマットフォールバックが可能。 ブラウザが対応している最初のフォーマットを使用する。
video 属性一覧デモ
controls
ブラウザ標準のUIコントロール(再生・音量など)を表示する。
autoplay
ページ読み込み時に自動再生。muted との組み合わせが必須。
muted
音声をミュートにする。autoplay 時はブラウザポリシーで必須。
loop
動画を繰り返し再生する。背景動画などに使用。
playsinline
iOS Safariでインライン再生する(フルスクリーン抑制)。必須。
poster
再生前に表示するサムネイル画像のURL。
preload
none / metadata / auto。デフォルトはブラウザ依存。
width / height
表示サイズ。CLS 防止のため指定推奨。
コード例
<!-- 基本的な動画(複数フォーマット対応)-->
<video
controls
width="800"
height="450"
poster="/videos/thumbnail.jpg"
preload="metadata"
>
<source src="/videos/movie.webm" type="video/webm" />
<source src="/videos/movie.mp4" type="video/mp4" />
<p>お使いのブラウザは video 要素に対応していません。</p>
</video>
<!-- 背景動画(自動再生・ループ・無音)-->
<video
autoplay
muted
loop
playsinline
width="1920"
height="1080"
aria-hidden="true"
>
<source src="/videos/bg.webm" type="video/webm" />
<source src="/videos/bg.mp4" type="video/mp4" />
</video>
<!-- モダン属性:PiP 無効・コントロールのダウンロードボタン非表示 -->
<video
controls
disablepictureinpicture
controlslist="nodownload nofullscreen"
width="640"
height="360"
>
<source src="/videos/lesson.mp4" type="video/mp4" />
</video>モダン属性:disablepictureinpicture / controlslist
disablepictureinpicture
ピクチャーインピクチャー(PiP)機能を無効化する。DRM コンテンツや画面収録防止に使用。Chrome / Edge 対応。
controlslist
標準コントロールの一部を非表示にする。
nodownload— ダウンロードボタンを非表示nofullscreen— フルスクリーンボタンを非表示noremoteplayback— リモート再生を無効化
比較:controls 属性 vs カスタム JS コントロール
| 方式 | 実装コスト | デザイン自由度 | アクセシビリティ | 適用場面 |
|---|---|---|---|---|
| controls 属性 | 低(属性一つ) | 低(ブラウザ依存) | ブラウザが保証 | 一般的なコンテンツ動画 |
| カスタム JS | 高(ARIA 含む) | 高(完全自由) | 自前で実装が必要 | ブランドに合わせたプレーヤー |
カスタムコントロールには role="button"、aria-label、キーボード操作の実装が必要。
Tips
- autoplay は muted が必須:ブラウザポリシーにより、ミュートなしの自動再生はほぼすべてのモダンブラウザでブロックされる。
- playsinline は iOS で必須:この属性がないと iOS Safari は動画を強制フルスクリーンで開く。背景動画では特に重要。
- WebM を先に、MP4 をフォールバックに:WebM は圧縮効率が高い。ブラウザは最初に対応したフォーマットを使用する。
- poster 画像を必ず設定:初期フレームが表示されるまでのブランク状態を防ぎ、UX を向上させる。
- 背景動画には aria-hidden="true":装飾目的の動画はスクリーンリーダーに読み上げられないようにする。
🤖 AIプロンプトテンプレート
以下について、AIへの質問プロンプト例を示します。 - `<video autoplay>` がモダンブラウザでブロックされる理由と、`muted` との組み合わせが必須な理由を教えてください。 - `<source>` を複数指定して WebM と MP4 にフォールバックする仕組みと、順番が重要な理由を教えてください。 - iOS Safari で背景動画をインライン再生するために `playsinline` が必要な理由を教えてください。 - `preload="none"`・`preload="metadata"`・`preload="auto"` の違いと、パフォーマンスへの影響を教えてください。 - 装飾目的の背景動画に `aria-hidden="true"` を付けるべき理由と、カスタム JS コントロールにアクセシビリティを追加する方法を教えてください。
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。