アダプティブ Web デザインの手法 (モバイル フォンでの優れたアクセス エクスペリエンス)

アダプティブ Web デザインの手法 (モバイル フォンでの優れたアクセス エクスペリエンス)

1. HTML ヘッダーにビューポート タグを追加します。

ウェブサイトの HTML ファイルの先頭にビューポート メタ タグを追加して、ビューポートの幅がデバイスの画面の幅と等しく、初期スケーリングは実行されないことをブラウザに伝えます。コードは次のとおりです。


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

<meta name="viewport" content="width=デバイス幅、初期スケール=1" />


このコードは Chrome、Firefox、IE9 以上をサポートしていますが、IE8 および IE8 より前のブラウザはサポートしていません。

2. CSS ファイルの最後に、さまざまな画面解像度のルールを追加します。

たとえば、次のコードを使用すると、画面幅が 480 ピクセル未満のデバイス (iPhone など) で、Web ページのサイドバーを非表示にし、中央のコンテンツ バーの幅を自動的に調整できます。以下のコードは Z-Blog 用であり、WordPress 関連のタグ名のみを変更する必要があります。


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

@media screen および (最大デバイス幅: 480px) {
#divメイン{
フロート: なし;
幅:自動;
}
#divサイドバー{
表示:なし;
}
}


3. レイアウトの幅には相対的な幅を使用します。

ウェブページの全体的なフレームでは絶対幅を使用できますが、コンテンツ フレームと下のサイドバーでは相対幅を使用する方が、さまざまな解像度に合わせて変更するのに便利です。もちろん、相対的な幅を使用することもできますが、その場合は、@media screen と (max-device-width: 480px) で小さい画面の各 div の幅を追加する必要があり、実際にはより面倒になります。

4. ページ上で相対フォントを使用する

HTML ページでは絶対フォント (px) を使用せず、相対フォント (em) を使用します。ほとんどのブラウザでは、em = px/16 が通常使用されます。たとえば、16px は 1em に相当します。

上記の点を踏まえて、ブログの CSS にいくつか変更を加えたところ、iPhone からより快適にページを閲覧できることがわかりました。ただし、解決されていない問題が 1 つあります。それは、上部のナビゲーション バー navbar の表示に問題があることです。改行後、以下の記事で説明されています。この問題をより適切に解決する方法がわかりません (更新: ネットユーザーのヒントによると、ナビゲーション バー divNavbar のスタイルに overflow:hidden; を追加すると、この問題を解決できます)。

下の画像は iPhone を使用してアクセスしたものです。CSS を変更して Moonlight Blog のホームページをアダプティブ Web ページにすると、最適化されていない元のページよりも見栄えがずっと良くなります。

つまり、上記の 4 つの手順に沿って修正すれば、Web サイトを複数のデバイスで閲覧するのに適したページに簡単に修正できます。これは、モバイルから Web サイトにアクセスするユーザーにとっては非常にありがたいことです。

より詳しい補足情報は以下の通りです。

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。

モバイル デバイスは、インターネットにアクセスするための最も一般的な端末としてデスクトップ デバイスを上回りつつあります。したがって、Web デザイナーは、異なるサイズのデバイスで同じ Web ページをどのように表示するかという難しい問題に直面する必要があります。

携帯電話の画面は比較的小さく、幅は通常 600 ピクセル未満です。一方、PC の画面幅は一般的に 1000 ピクセル以上 (現在主流の幅は 1366×768) で、2000 ピクセルに達するものもあります。異なるサイズの画面に同じコンテンツを満足のいく形で表示するのは簡単ではありません。

多くの Web サイトの場合、解決策は、モバイル バージョンや iPhone/iPad バージョンなど、デバイスごとに異なる Web ページを提供することです。確かに効果は保証されますが、手間がかかり、複数のバージョンを維持する必要があります。さらに、Web サイトに複数のポータルがある場合は、アーキテクチャ設計の複雑さが大幅に増加します。

そこで、同じ Web ページが異なるサイズの画面に自動的に適応し、画面の幅に応じてレイアウトを自動調整できるように、「一度設計してすべてに適用する」ことが可能ではないかと長い間想像してきた人もいるのではないでしょうか。

1. 「アダプティブウェブデザイン」の概念

2010 年に、イーサン・マルコットは、画面の幅を自動的に識別し、それに応じて調整できる Web デザインを指す「レスポンシブ Web デザイン」という用語を提案しました。

彼は『シャーロック・ホームズの冒険』の主要登場人物 6 人の肖像画を使ったサンプルを作成しました。画面の幅が 1300 ピクセルを超える場合は、6 つの画像が一列に配置されます。

画面幅が600px〜1300pxの場合、6つの画像は2行に分割されます。

画面の幅が 400 ピクセルから 600 ピクセルの場合、ナビゲーション バーは Web ページのヘッダーに移動します。

画面幅が 400 ピクセル未満の場合、6 つの画像は 3 行に分割されます。

mediaqueri.es にこの例がさらにあります。

解像度の異なる画面のテスト結果を一つのウェブページに表示できるテストツールもここにあります。インストールすることをお勧めします。

2. ウェブページの幅を自動的に調整できるようにする

「アダプティブ Web デザイン」はどのように機能しますか?実はそれほど難しいことではありません。

まず、Web ページ コードの先頭にビューポート メタ タグの行を追加します。

<meta name="viewport" content="width=デバイス幅、初期スケール=1" />

ビューポートは、Web ページのデフォルトの幅と高さです。上記のコード行は、Web ページの幅がデフォルトで画面の幅 (width=device-width) と等しく、元のスケーリング比 (initial-scale=1) が 1.0 であることを意味します。つまり、Web ページの初期サイズは画面領域の 100% を占めます。

IE9 を含むすべての主要ブラウザがこの設定をサポートしています。古いブラウザ (主に IE6、7、8) の場合は、css3-mediaqueries.js を使用する必要があります。

<!--[IE 9の場合]>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

3. 絶対幅を使わない

Web ページは画面の幅に応じてレイアウトを調整するため、絶対幅のレイアウトや絶対幅の要素は使用できません。これはとても重要です。

具体的には、CSS コードではピクセル幅を指定できません。

幅:xxx ピクセル;

パーセンテージ幅のみ指定できます:

幅: xx%;

または

幅:自動;

4. 相対的なフォントサイズ

フォントのサイズは絶対サイズ (px) では設定できず、相対サイズ (em) でのみ設定できます。

体 {
フォント: 標準 100% Helvetica、Arial、sans-serif;
}

上記のコードは、フォント サイズがページのデフォルト サイズ (16 ピクセル) の 100% になることを指定しています。

h1 {
フォントサイズ: 1.5em;
}

h1 のサイズは、デフォルト サイズの 1.5 倍、つまり 24 ピクセル (24/16 = 1.5) になります。

小さい
フォントサイズ: 0.875em;
}

小さい要素のサイズは、デフォルト サイズの 0.875 倍、つまり 14 ピクセル (14/16 = 0.875) になります。

5. 流動的なグリッド

「流動的なレイアウト」とは、各ブロックの位置が固定ではなく、浮動していることを意味します。

。主要 {
フロート: 右;
幅: 70%;
}

.leftBar{
フロート: 左;
幅: 25%;
}

float の利点は、幅が小さすぎて 2 つの要素を収容できない場合、後者の要素は前者の要素の下部まで自動的にスクロールされ、水平方向にオーバーフローしないため、水平スクロール バーが表示されなくなることです。

また、絶対位置指定(position: absolute)を使用する場合は、細心の注意を払う必要があります。

6. CSSの読み込みを選択

「アダプティブ Web デザイン」の中核となるのは、CSS3 で導入されたメディア クエリ モジュールです。

つまり、画面の幅を自動的に検出し、対応する CSS ファイルを読み込むということです。

<link rel="スタイルシート" type="text/css"
media="screen および (max-device-width: 400px)"
href="tinyScreen.css" />

上記のコードは、画面の幅が 400 ピクセル未満 (max-device-width: 400px) の場合、tinyScreen.css ファイルを読み込むことを意味します。

<link rel="スタイルシート" type="text/css"
media="screen かつ (最小幅: 400px) かつ (最大デバイス幅: 600px)"
href="smallScreen.css" />

画面の幅が 400 ピクセルから 600 ピクセルの場合、smallScreen.css ファイルが読み込まれます。

HTML タグを使用して CSS ファイルを読み込むだけでなく、既存の CSS ファイルに読み込むこともできます。

@import url("tinyScreen.css") 画面と (max-device-width: 400px);

7. CSS @mediaルール

同じ CSS ファイル内で、異なる画面解像度に応じて異なる CSS ルールを適用することもできます。

@media screen および (最大デバイス幅: 400px) {

。カラム {
フロート: なし;
幅:自動;
}

#サイドバー {
表示:なし;
}

}

上記のコードは、画面の幅が 400 ピクセル未満の場合、列ブロックはフロート解除され (float:none)、幅は自動的に調整され (width:auto)、サイドバー ブロックは表示されない (display:none) ことを意味します。

8. イメージ適応(流動的なイメージ)

「レスポンシブ Web デザイン」では、レイアウトとテキストに加えて、画像の自動スケーリングも実現する必要があります。

これには CSS が 1 行だけ必要です:

画像 { 最大幅: 100%;}

このコード行は、Web ページに埋め込まれたほとんどのビデオでも機能するため、次のように記述できます。

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

古いバージョンの IE は max-width をサポートしていないため、次のように記述する必要があります。

画像の幅: 100%;

さらに、Windows プラットフォームで画像を拡大縮小すると、画像の歪みが発生する可能性があります。現時点では、IE 独自のコマンドを使用してみることができます。

img { -ms 補間モード: バイキュービック; }

あるいは、Ethan Marcotte による imgSizer.js を使用します。

addLoadEvent(関数() {

var imgs = document.getElementById("content").getElementsByTagName("img");

imgSizer.collat​​e(画像);

});

ただし、条件が許せば、画面サイズに応じて異なる解像度の画像を読み込むのが最適です。これを行うには、サーバー側とクライアント側の両方で多くの方法があります。

<<:  この記事ではMySQLのNULLについて説明します。

>>:  JavaScriptを使って動的にテーブルを生成するケースの詳しい説明

推薦する

MySQL プロジェクトでトランザクション分離レベルを選択する方法

導入コンテンツから始めましょう。誰もが次のような面接のシナリオに遭遇したことがあると思います。インタ...

MySQL は SQL ステートメントの最新のレコードをクエリします (最適化)

最悪の選択肢は、結果を時間順に並べ替えて最初のものを取ることです。 *から選択 ここで、create...

vue3 の setUp とリアクティブ関数の使用方法の詳細な説明

1. いつsetUpを実行するかvue3 ではメソッドを正常に使用できるようになったことは誰もが知っ...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

JavaScript スコープチェーンの基本原理のグラフィカルな説明

目次序文範囲1. スコープとは何ですか? 2. [[スコープ]] プロパティ3. スコープチェーン4...

アイデア展開Tomcatサービス実装プロセス図

まずプロジェクトの成果物を構成するスタートアップ項目の設定 Tomcatサービスを作成する開始したい...

nestjs からフロントエンドに返されるデータ形式のカプセル化実装

通常、開発プロセスでは、インターフェイス要求の成功または失敗は httpcode に基づいて決定され...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...

別の種類の「キャンセル」ボタン

「キャンセル」ボタンは必要な操作プロセスの一部ではなく、デザイン上の主要な要素として表示されません...

Vue のループフォーム項目例の詳細な説明

場合によっては、ユーザーがボタンをクリックして同様のフォームを追加し、クリックごとに 1 回追加でき...

JavaScript におけるシリアル操作と並列操作

目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...

Vue3 での Teleport の使用に関する詳細な説明

目次テレポートの目的テレポートの仕組みこの記事では、以下の内容を取り上げます。テレポートの目的テレポ...

MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明

序文MySQL テーブルの主キーと外部キーを作成するときは、次の点に注意する必要があります。主キーと...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...