レスポンシブWebデザイン学習(2) — 動画をレスポンシブにすることはできるのか?

レスポンシブWebデザイン学習(2) — 動画をレスポンシブにすることはできるのか?

前回のエピソードレビュー:

昨日は、ページがさまざまなデバイス サイズにどのように対応するかについて説明しました。主に使用される方法は、@media コマンドサイズのパーセンテージです。

前回のエピソードの補足:

このうち、画像や動画のサイズがデバイス画面の幅を超えないようにするには、次の CSS 設定を使用します。

コードをコピー
コードは次のとおりです。

画像、オブジェクト{
最大幅:100%;
}

このステートメントは通常、@media screen と (max-width:481) の判定に追加され、主に携帯電話ユーザーが Web ページを閲覧する際に携帯電話の画面よりも大きな画像が表示されないようにします。

この手法は、「Head First Mobile Web」では「 Fluid Image Technique 」と呼ばれています。

動画をレスポンシブにすることはできますか?

写真に加えて、マルチメディアのもう 1 つの一般的な形式はビデオです。ウェブデザインでは、必要に応じて動画をページに追加することがあります。一般的に、動画は YouTube、Tudou/Youku、Sina などのウェブサイトにアップロードされ、リンクの形でウェブページに追加されます。

なぜiPhoneでYouTube動画を視聴できないのでしょうか? (海外)

iOSでウェブ動画を視聴する場合、iPhoneのブラウザがAdobe Flashをサポートしていないため、脱獄してプラグインをインストールしないとFlash形式の動画を視聴できません。これはAppleなどの企業の商業競争政策に関係しており、私たちにはどうしようもありません。この問題に対して、YouTube ビデオ ソースを使用した Web デザインには、Web ページに埋め込まれたオブジェクト埋め込み形式の元のコード スニペットを新しいコード スニペットに置き換えるという解決策があります。

たとえば、古いページのネストされたコード スニペットは次のとおりです。

コードをコピー
コードは次のとおりです。

<object width="230" height="179" type="application/x-shockwave-flash" data="http://www.youtube.com/v/O-jOEAufDQ4?fs=1&amp;h1=en_US&amp;rel=0"><embed src=... /></object>

次のように置き換えます:

コードをコピー
コードは次のとおりです。

<iframe src="http://www.youtube.com/embed/O-jOEAufDQ4" style="max-width:100%"></iframe>

ご覧のとおり、2 つのビデオの出力パスは実際には異なります。YouTube は、モバイル デバイスで表示するための埋め込みビデオを埋め込みディレクトリに配置するため、ほとんどのモバイル デバイスでビデオを正常に視聴できます。

<iframe> を使用して国内のビデオを入手できますか?

それぞれ Tudou と Sina から埋め込まれたビデオ コードの一部を傍受することによって、オブジェクト埋め込みメソッドが使用されていることがわかります。

じゃがいも:

コードをコピー
コードは次のとおりです。

<埋め込み
src="....swf"
タイプ="application/x-shockwave-flash"
allowscriptaccess="常に"
フルスクリーンを許可する="true"
wmode="不透明"
幅="480" 高さ="400"></embed>

シナ:

コードをコピー
コードは次のとおりです。

<div><object id='sinaplayer' 幅='480' 高さ='370' >
<パラメータ名='allowScriptAccess' 値='always' />
<embed pluginspage='http://www.macromedia.com/go/getflashplayer'
src='....swf'
タイプ='application/x-shockwave-flash'
allowScriptAccess='常に'
フルスクリーンを許可する='true'
名前='シナプレイヤー'
幅='480' 高さ='370'></embed>
</オブジェクト></div>

両者のパラメータ設定は似ていますが、Tudou のコードははるかにシンプルです。

ここで、Tudou ビデオ アドレスを <iframe> コード ブロックで囲み、テスト ページに配置すると、問題が発生します。

これは写真です…

フルスクリーンにできない…これは再生アドレスが別途キャプチャされ、 allowFullScreenなどのフラッシュ関連の設定が破棄されるためです。 iframe メソッドを使用すると、明らかに 2 つの問題が発生します。

まず、映画のソース形式は変更されておらず、依然としてswf形式であるため、Adobe Flashをサポートしていない携帯電話では再生できません。

2 つ目の理由は、フラッシュ プレーヤーのパラメータ設定が失われ、一部の機能が失われることです。

これは明らかに受け入れられないことです。

1 点目については、ハードウェア メーカー間の商業競争による副作用を回避するために、ビデオ Web サイトがより汎用的なビデオ フォーマットを使用することを期待するしかありません。2 点目については、モバイル フォンでフラッシュ フォーマットが表示されないユーザーがさまざまなクラックやプラグインを見つけてそれを補っているため、オブジェクト埋め込み方式を引き続き使用します。そのため、より汎用的なフィルム ソース フォーマットがない場合、Web デザイナーは以前の方法を使用し続ける必要があります。

しかし、動画フォーマットのサイズは一般的に固定されており、JavaScript を使用せずに CSS のみを使用してデバイスのサイズやブラウザの現在のサイズに応じて動的に変更することは困難です。ビデオの幅については、パーセンテージで設定できます。たとえば、コンテナの 80% に設定すると、ビデオは常にコンテナの幅の 80% を占めます。ただし、ほとんどの人はブラウザ ウィンドウを比例して拡大縮小しないため、高さは設定できません。絞り込むか、短くしてください。したがって、ビデオ サイズのスケーリングを保証するためにパーセンテージに頼るのは現実的ではありません。

この前提の下では、ビデオは一定のサイズを維持し、Web ページの残りの部分はブラウザのサイズに応じてレイアウトが動的に変更されることを期待します。

ビデオに示されているように:

ブラウザをプルするプロセス全体を通じて、ビデオのサイズは変化しないことがわかります。ビデオの幅は、ブラウザの幅がビデオの幅よりも小さくなるまで減少しません (上記のFluid Image Techniqueを使用)。

全体の効果を生み出すための新しいテクニックはなく、CSS のサイズ判定を 2 から 3 に増やすだけです。詳細についてはデモコードをご覧ください。

[デモコードはこちらからダウンロード]

要約:

CSS だけで動画サイズを適応させることは不可能のようです。モバイル デバイスでページ ビデオを正常に視聴できるようになることを期待しています。また、ビデオ Web サイトでは、Flash ではなく、より汎用的なビデオ形式が使用されることを期待しています...

最後に、この本に出てくる公式で締めくくりましょう。RWD =流動グリッドレイアウト+ CSSメディアクエリ+流動イメージ/メディア+ 心状態

一般的な考え方はレスポンシブデザイン=流動的なグリッドレイアウト+ @mediaステートメント+流動的な画像/メディア+デザイナーの意識です。

<<:  サーバーのDockerコンテナへのvscodeリモート接続を設定する方法

>>:  MySQLデータベースでサポートされているストレージエンジンの比較

推薦する

インデックスを使用して数千万のデータを持つ MySQL のクエリ速度を最適化する

1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...

CentOS VPS に SSH 経由で MySQL をインストールする方法

yum install mysql-serverと入力します。続行するにはYを押してくださいインスト...

Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例

背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

10 HTML テーブル関連タグ

実際、多くの人が「テーブルは絶対に使用すべきではないと聞いたことがある」と言いますが、これは絶対に間...

Zabbix が MySQL のマスター/スレーブ状態を監視する方法の詳細な説明

MySQLマスタースレーブを設定した後、スレーブの状態が正常かどうかわからないことが多く、例外が発生...

CentOS 起動時にカーネルモジュール overlayfs 操作を自動的にロードする

CentOS でカーネル モジュールを自動的にロードするには、/etc/sysconfig/modu...

トランジションコンポーネントのアニメーション効果を使用した Vue サンプルコード

トランジションドキュメントアドレスは、フェードインとフェードアウト効果を実現するための背景ポップアッ...

CSSマスクのフルスクリーン中央揃えを実装する方法

具体的なコードは次のとおりです。 <スタイル> #トーストローダーフルスクリーン{ 高さ...

MySQL 5.7 のキーワードと予約語の詳細な説明

序文MySQL と Oracle のキーワードはまったく同じではありません。Oracle データベー...

Vueはechartを使用してラベルと色をカスタマイズします

この記事では、参考までに、echartを使用してタグと色をカスタマイズするVueの具体的なコードを紹...

vue3 統合 API における vue2 の $refs の代替方法についての簡単な説明

vue2 プロジェクト開発の経験があれば、$refs に精通しているでしょう。 vue3 の急激なア...

MySQL のデータ型とフィールド属性の原理と使用法の詳細な説明

この記事では、MySQL のデータ型とフィールド属性について説明します。ご参考までに、詳細は以下の通...

CentOS 7にMySQLをインストールする詳細な手順

CentOS7では、MySQLをインストールすると、MariaDBもデフォルトでインストールされます...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...