max-device-widthまたはmax-widthを使用する必要がありますか?


82

CSSメディアクエリを使用max-device-widthすると、デバイス幅(iPhoneやAndroidデバイスなど)やmax-widthページ幅をターゲットにするために使用できます。

を使用する場合max-device-width、デスクトップのブラウザウィンドウのサイズを変更しても、デスクトップのサイズは変更されないため、CSSは変更されません。

を使用する場合max-width、デスクトップのブラウザウィンドウのサイズを変更すると、タッチ操作に適した要素やメニューなど、モバイル指向のスタイルが表示される場合があります。

特定のブラウザ(およびデバイス?)をターゲットにすることは非推奨になり、ターゲットするものにもう少し注意を払う必要があります。それはメディアクエリにも当てはまりますか?

なぜあなたはお互いをターゲットにするのですか?どれがお勧めですか?

これは、本番Webサイトで使用するメディアクエリの例です。

@media only screen and (min-device-width: 320px) and (max-device-width: 480px) and (min-device-height: 480px) and (max-device-height: 640px) {  
    /* Change a menu to fit the screen better, etc... */
}

私はとの両方を使用する傾向がmax-device-widthありmax-widthます。


回答:


113

TL; DR

あなたが応答ウェブサイトを作っている場合は、使用min-width/max-widthあなたのメディアクエリではなく、中min-device-width/max-device-width順番に画面サイズの広い範囲を対象とします。

2018 Media Queries Level 4仕様ドラフトによると、device-widthメディア機能は非推奨です。下位互換性のために保持されますが、避ける必要があります。

8.付録A:廃止されたメディア機能

ビューポートのサイズ(またはページメディアのページボックス)、照会するwidthheightおよびaspect-ratioメディア機能を使用しなければならない、というよりもdevice-widthdevice-heightdevice-aspect-ratioに関わらず利用可能ですどのくらいのスペースのデバイスの物理的な大きさを指し、レイアウトされているドキュメント。device-*メディア機能も時々モバイルデバイスを検出するためのプロキシとして使用されています。代わりに、作成者は、スタイリングしようとしているデバイスの側面をより適切に表すメディア機能を使用する必要があります。

注意点として、指定することを忘れないでビューポートメタタグを中に<head>あなたの文書のセクション:

<meta name="viewport" content="width=device-width, initial-scale=1">

説明

特定のデバイスが持つ可能性のある画面解像度とピクセル密度はすべて異なるため、考慮すべき点がいくつかあるため、ピクセルはピクセルではありません(ズーム、ピクセル密度、画面解像度とサイズ、デバイスの向き、アスペクト比など)。 ..)。この場合、ピクセルは実際には物理ハードウェアピクセルではなく「光学参照ユニット」と呼ばれます。

幸い、ブラウザのビューポートの幅とスケーリングを制御するために、ドキュメントのセクションでビューポートメタタグを指定できます<head>。このタグのcontent値がwidth=device-width、の場合、画面の幅はデバイスに依存しないピクセル一致し、すべての異なるデバイスがスケーリングされ、一貫して動作するようになります。

<meta name="viewport" content="width=device-width, initial-scale=1">

メディアクエリに関しては、ビューポート(現在のブラウザウィンドウ)をターゲットにし、デバイスの実際のフルスクリーンサイズ/解像度をターゲットにするため、max-widthではなくを使用することをお勧めします。max-device-widthmax-widthmax-device-width

つまり、を使用max-device-widthしている場合、デスクトップブラウザのサイズを変更するときに、異なるメディアクエリが適用されることはありません。これはmax-width、とは異なり、デバイスの実際のフルスクリーンサイズのみが考慮されるためです。ブラウザウィンドウの現在のサイズではありません。

ブラウザーのサイズを変更するとサイトが応答しないため、アダプティブレイアウトを作成しようとしている場合、これは大きな違いになります。さらに、max-device-width小さい画面のデバイスをターゲットにするために使用しているメディアクエリを使用している場合、ブラウザウィンドウのサイズを小さい画面サイズに合わせてサイズ変更しても、デスクトップには適用されません。

2018年の時点で、最新のメディアクエリ仕様ドラフトでは実際にdevice-widthメディア機能が廃止されているため、回避する必要があります。

さらに、Google Developersに関するこの記事では、次の使用を強くお勧めしますmax-device-width

Google Developers-WebFundamentals-レスポンシブCSSメディアクエリ

に基づいてクエリを作成することもできます*-device-width。ただし、この方法は強くお勧めしません

違いは微妙ですが、非常に重要です。min-widthブラウザウィンドウmin-device-widthのサイズに基づいているのに対し、画面のサイズに基づいています。残念ながら、従来のAndroidブラウザーを含む一部のブラウザーは、デバイスの幅を正しく報告せず、代わりに、予想されるビューポートの幅ではなく、デバイスのピクセルで画面サイズを報告する場合があります。

さらに、を使用*-device-widthすると、クエリがブラウザウィンドウのサイズではなく実際のデバイスサイズに基づいているため、ウィンドウのサイズを変更できるデスクトップやその他のデバイスにコンテンツが適応するのを防ぐことができます。

参考文献:


2
あなたの言うことすべてに同意しますが、下位互換性の側面を忘れて、それは数年後には関係ありません。モバイルがあるのに、なぜデスクトップサイトの動作が異なるのですか?
ジョンマグノリア2015年

2
モバイルサイトをデスクトップに表示するべきではないと思います。ブラウザに合わせて任意の幅にサイズ変更し、水平スクロールバーを使用できるはずです。2つのサイトのセクションを比較したいが、サイドバーを非表示にしたいとします。2つのウィンドウで開き、並べてサイズを変更します
John Magnolia

3
私はジョンMに同意します、グーグルは間違っています、私は個人的に彼らのレスポンシブデザイン「ドキュメンテーション」がそこにある最悪の流行主導のもののいくつかを見つけました。私は最初にこれに賛成しましたが、私の意見では答えは間違っています。デスクトップのユーザーエクスペリエンスを台無しにしているサイトが増えているため、1つのサイズに合わせる必要はまったくなく、すべてのレスポンシブcssフレームワークに適合します(意見)、デスクトップユーザーエクスペリエンスを台無しにする必要があるという意味ではありません。私たちはそれを行わず、コンバージョンを10倍に増やしました。
lizardx 2016

「このタグのコンテンツ値がwidth=device-width、の場合、画面の幅はデバイスに依存しないピクセルと一致します。」また、iOSデバイスでブラウジングしている場合、対応するのではなくdps、何をしますか?iOSポイント?(ちなみに、この投稿をありがとうございました!)
in_flight 2016

答えは少し時代遅れです。何も問題はmax-device-widthありません。サイズ変更可能なビューポート環境(デスクトップ)で使用する場合は重要です。min-device-widthまだ悪いです。
ShortFuse 2018

6

デバイス幅は避けてください。その理由は、ユーザーのブラウザがそれにどのように反応するかを知ることができないからです。

IOSの場合、少なくともSafariでは簡単に思えます。これは、向きに関係なく、単一のデバイス幅の応答のようです。また、デバイス幅はデバイスの短辺についてのみ記載されています。私はこれをiPhone4SとiPadでテストしました。彼らは、どの方向に関係なく、それぞれ320と768に反応しました。

Androidの場合、それはより予測不可能です。Huawei Ascend Y330で6つのブラウザー(Androidのデフォルトブラウザー、Chrome、Opera、Firefox、Firefox Beta、Dolphin)をテストしました。応答は、ブラウザの種類と向きによって異なります。

クエリ(max-device-width:*** px)を使用してページでテストし、クエリを真の状態にするために入力する必要のあるpx値を見つけました。ブラウザの種類と向きに応じて、4つの異なる値(320、480、534、800)が必要でした。これにより、デバイス幅が使用できなくなります。


1
device-widthは、ユーザーが使用しているデバイスを知る唯一の信頼できる方法であるため、それに応じてレイアウトを調整できます。ビューポートのピクセルに基づいてレイアウトを調整すると、ユーザーがズームインしたという理由だけで、一部のデスクトップでモバイルデザインになります。これにより、ユーザーが望んでいたものとは逆になることがよくあります(これはほんの少しの倍率です)
Alice Wonder

正確なデバイス幅を報告しないモバイルブラウザでバグレポートを提出する必要があります。多くの場合、代替ブラウザはデフォルトでデスクトップブラウザのふりをして、CSSピクセルごとに1デバイスピクセルを使用するように設定されていることがわかりました。これが問題である可能性があります。
アリスワンダー

5

max-widthを使用している場合、デスクトップのブラウザウィンドウのサイズを変更すると、タッチ操作に適した要素やメニューなど、モバイル指向のスタイルが表示される場合があります。

これが望ましいという世論のように思えるのは衝撃的です。モバイル以前の流体/液体の設計が間違った理由または正しい理由で悪いと見なされたかどうかはわかりません。これはリキッドレイアウトのより洗練されたバージョンであるように私には思えますが、デザイナーが何らかの理由で採用しているものです。

2000年代半ばに、デザインコミュニティ全体が液体よりも固定レイアウトを採用することを選択したとき、それはテキストのリフローが読みやすさを妨げ、未亡人やその他の典型的なアーティファクトをもたらすことが多かったためです。さらに、コードベースを維持することは、要素が衝突しないようにするために、設計から設計へとしばしば注意が必要でした。液体レイアウトとレスポンシブデザインの唯一の違いは、より優れたブラウザーと石積みのようなフレームワークの急増により、達成が容易になることです。

私は、数十年の優先順位を持つデスクトップドキュメントの規則に従うことを好むため、個人的にmin / max-device-widthを使用します。インターネットで開いたすべてのドキュメントがデスクトップでこのように動作するわけではありません。また、デスクトップにロードする他の種類のドキュメントやアプリケーションも同様です。MS WordやPhotoshopなどのように、モバイルが主流になる前に設計されたページは、スクロール位置を保持し、レイアウトを変更しないため、ユーザーはウィンドウ管理の無関係なタスクを実行するときにページフロー内のコンテンツを追跡できます。

私は通常、3つのブレークポイントを使用します。1つは電話用、1つはタブレット用、もう1つはデスクトップ用です。デスクトップと多くの場合、少なくとも横向きのポートレートは固定されており、タブレットのポートレート以下は液体です。アダプティブとレスポンシブのこの組み合わせにより、デスクトップをデスクトップサイトのように動作させると同時に、10個の奇数の個別の固定幅モバイルデバイスレイアウトをレイアウトする必要がなくなります。ビューポートのサイズを変更できないため、モバイルデバイスではテキストがリフローしません。


2
ビューポートのサイズを変更できる携帯電話がいくつかあります。たとえば、ウィンドウでは複数のアプリを画面に「スナップ」できます。一部のAndroidスマートフォンでは、ウィンドウを使用して2つのアプリを同時に表示できます。客観的には、画面の小さいデスクトップにタブレットスタイルのレイアウトが必要ない理由はわかりませんが、主観的にはレイアウトによって異なります。
マーク

2
私もmin / max-device-widthを使用していましたが、恐ろしいことに、クライアントがhotjarを設定しました。これにより、サイトとのユーザーインタラクションの小さなビデオが作成され、新しいandroid 6 samsung galaxy6がminのピクセル数を処理していることに気付きました。 / max-device-widthは、cssピクセルではなく、実際の画面ピクセルであり、もちろんページが画面から消えます。私たちの場合、ユーザーはこれらの4倍ピクセル密度の画面でモバイルとデスクトップのCSSを組み合わせて使用​​していました。個人的には、レスポンシブがよくできたデスクトップディスプレイに、ユーザーにとって悪い場所があるとは思いません。ので注意してください。
lizardx 2016

2
ポール、何が起こっているのかを理解するためにいくつかの調査が必要でした。ジョシュの答えは、グーグルのように、私の意見では間違っています。デスクトップがレスポンシブであるべきであるという概念は、グーグルのようなグループによって促進されている単なる流行であり、さまざまなワンサイズがすべてのcssフレームワークに適合します。私たちの問題は、悪いhotjarプログラミング、期間から来ました。私のトリガーポイントは基本的に、大画面のデバイスをデスクトップとして扱い、いくつかの調整を加えてから、ビューポートがモバイルデバイスのみになる場所に移動します。明確さを求めているユーザーにとって、私はポールの答えは正しいと考え、流行に駆り立てられたレスポンシブな答えは間違っていると考えます。
lizardx 2016

1
参考までに-2018年の時点で、*-device-widthメディア機能は最新のメディアクエリ仕様ドラフトで実際に非推奨になっています-drafts.c​​sswg.org/mediaqueries-4/#mf-deprecated
Josh Crozier

これは古い答えですが、2014年でも私はこれに強く反対します。参照されている誤植や「要素の衝突」は、グッドプラクティスに従う習慣をつけることで簡単に回避できます。画面の解像度は狂気になり、真の、スケーラブルでレスポンシブなデザインは、時間が経つにつれてますます重要になり、固定されたサイトにはアクセスできなくなるだけです。
小さな小さな男
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.