【入門編】 :picture-in-picture ピクチャーインピクチャー疑似クラス – CSS実践ガイド

やあ、こんにちは!CSSの世界へようこそ。私はこれまで数えきれないほどのウェブサイトを設計し、時に複雑すぎるコードと格闘してきたフロントエンド・アーキテクトです。

今日は、初心者の方が「えっ、そんなことまでCSSで制御できるの?」と驚くような、ちょっとした魔法のような機能をご紹介します。それが、`:picture-in-picture`(ピクチャー・イン・ピクチャー)疑似クラスです。

「名前が長くて難しそう……」なんて思わなくて大丈夫。実はこれ、皆さんが普段スマホやPCでYouTubeを見ているとき、無意識に使っている「あの機能」に関連したものなんです。

—

1. そもそも「ピクチャー・イン・ピクチャー」って何?

まずは、言葉のイメージから整理しましょう。
お料理をしているとき、リビングの大きなテレビを見るのは大変ですよね。でも、手元のタブレットやスマホで、小さな画面を「ポコン」と浮かせて、他のアプリを使いながら動画を見たことはありませんか?

あの、「動画がページから飛び出して、画面の隅っこで小さく浮いている状態」。これがピクチャー・イン・ピクチャー(PiP)です。

今回紹介する `:picture-in-picture` というのは、「今、この動画は外に飛び出していますよ!」という状態をCSSが察知するためのスイッチのようなものなんです。

—

2. なぜこの「スイッチ」が必要なの?(アーキテクトの視点)

ここで少しだけ、現場のリアルな話をさせてください。

動画が外に飛び出す(PiPになる)と、もともと動画があった場所はどうなるでしょうか?
ただの「真っ黒な四角」が残ったり、ぽっかりと穴が空いたように見えたりすることがあります。これは、ユーザーからすると「あれ、壊れたかな?」と不安にさせてしまうポイントなんです。

そこで、この疑似クラスの出番です。
「動画が飛び出している間だけ、元の場所を少し薄くしよう」とか「『再生中…』という文字を出そう」といった、ユーザーへの優しい気遣いをCSSだけで表現できるようになります。

—

3. 実際に書いてみよう!

では、具体的なコードを見ていきましょう。難しく考えず、「もし動画が外に出ていたら(`:picture-in-picture`)、こうしてね」という書き方をするだけです。

現在、ミニプレーヤーで再生中です…

/ — 通常時のスタイル — /

video {
transition: all 0.5s ease; / 変化をふわっとさせる魔法の1行 /
border: 4px solid #eee;
border-radius: 12px;
}

/ メッセージは普段は隠しておきます /
.pip-message {
display: none;
color: #666;
font-weight: bold;
}

/ — ここが本番!動画がPiPモードになった時の指定 — /

video:picture-in-picture {
/ 動画が飛び出している間、元の場所にある動画を半透明にします /
opacity: 0.3;
filter: blur(4px); / ちょっとオシャレにぼかしてみたり /
border-color: #3498db; / 「動いてるよ」と伝えるために色を変える /
}

/
現場のテクニック:
動画がPiP状態の時だけ、メッセージを表示させる合わせ技
(隣接セレクタを使っています)
/
video:picture-in-picture + .pip-message {
display: block;
}

コードのポイント解説

  • `video:picture-in-picture`: これが「動画が飛び出している状態」を指し示す魔法の合言葉です。
  • `opacity: 0.3`: 元の場所にある動画を薄くして、「今はここが主役じゃないよ」と視覚的に伝えています。
  • `transition`: 状態が変わる時に「パッ」と切り替わるのではなく、「じわ〜っ」と変化させることで、高級感と安心感を与えます。

—

4. つまずきやすいポイント(大丈夫、怖くないよ)

ここで、初心者の皆さんが「あれ?動かないぞ?」となりやすいポイントを、現場の知恵として共有しておきますね。

1. ブラウザの右クリックで試してみて!
PiPモードにするには、通常はJavaScriptという別のプログラムが必要なのですが、多くのブラウザ(Chromeなど)では、動画の上で「右クリックを2回」すると「ピクチャー イン ピクチャー」というメニューが出てきます。まずはそれで試してみてください。
2. すべてのブラウザで完璧ではない
実はこの機能、比較的新しいものなので、古いブラウザでは反応しないことがあります。「書いたのに動かない!」と思ったら、それはあなたのせいではなく、ブラウザがまだ追いついていないだけかもしれません。
3. 浮いている方の「小窓」はデザインできない
ここが一番の勘違いポイントです! `:picture-in-picture` でデザインできるのは、あくまで「元のページに残っている動画要素」の見た目です。画面の隅っこで浮いている「小窓」自体の色や形は、ブラウザにお任せする決まりになっています。

—

5. 最後に:CSSは「おもてなし」の心

いかがでしたか? `:picture-in-picture` は、一見地味な機能かもしれません。
でも、こうした細かい状態(ステート)に気を配れるようになると、あなたの作るサイトはぐっと「使いやすい」「気が利いている」という評価に変わります。

ウェブサイトを作ることは、お家にお客さんを招くのと似ています。
「動画を外に出して見ていても、元の場所が寂しくないようにしておいたよ」という、あなたのちょっとした優しさが、コードを通じてユーザーに伝わるはずです。

最初は完璧に理解できなくても大丈夫。まずはこのコードをコピーして、自分のエディタで動かしてみることから始めてみてください。その「動いた!」という感動こそが、最高峰のスペシャリストへの第一歩ですから。

応援していますよ!また次のレッスンでお会いしましょう。

コメント

タイトルとURLをコピーしました