メディアクエリの「画面」と「画面のみ」の違いは何ですか?


487

メディアクエリscreenとの違いは何only screenですか?

<link media="screen and (max-device-width: 480px)" rel="stylesheet" href="m.css" />
<link media="only screen and (max-device-width: 480px)" rel="stylesheet" href="m.css" />

なぜ使用する必要があるのonly screenですか?screenそれ自体は、画面だけにレンダリングされるのに十分な情報を提供していませんか?

私はこれら3つの異なる方法のいずれかを使用する多くのレスポンシブWebサイトを見てきました。

@media screen and (max-width:632px)
@media (max-width:632px)
@media only screen and (max-width:632px)

回答:


543

例を1つずつ分解してみましょう。

@media (max-width:632px)

これは、max-widthこれらのスタイルを適用したい632pxのウィンドウに対して言っています。そのサイズでは、ほとんどの場合、デスクトップ画面よりも小さいものについて話します。

@media screen and (max-width:632px)

これは、デバイスが632pxのscreenウィンドウでmax-widthスタイルを適用するためのものです。これはscreen他の利用可能なメディアタイプで はなく、最も一般的な他のメディアタイプを指定することを除いて、上記とほぼ同じですprint

@media only screen and (max-width:632px)

これは、これを説明するためのW3Cからの引用です。

キーワード 'only'は、古いユーザーエージェントからスタイルシートを隠すためにも使用できます。ユーザーエージェントは、 'only'キーワードが存在しないかのように、 'only'で始まるメディアクエリを処理する必要があります。

「のみ」のようなメディアタイプはないため、古いブラウザではスタイルシートを無視する必要があります。

以下は、そのページの例9に示されている引用へリンクです。

うまくいけば、これはメディアクエリにいくつかの光を当てるでしょう。

編集:

キーワードが実際にどのように処理されるかについて、@ hybridsの優れた回答を必ず確認してくださいonly


24
キーワードが古いブラウザからスタイルシートを隠す理由のより良い説明を探していた方onlyは、下の@hybridの回答を参照してください。彼はそれを非常によく説明しています。
JMTyler 2013年

1
ハイブリッドの答えは良いですが、要素の属性だけを扱うのではなく、CSS内のメディアクエリ扱うので、私もこの答えが好きです。medialink
chharvey、2015年

2
どのデバイスに画面がないのですか?
ココドコ2016年

3
@ココドコいらないもの。しかし真剣に、プリンターとスクリーンリーダーは必ずしも画面を備えている必要はありません。さらにscreen、他のメディアタイプにリストされているものなど、現在または将来的に識別されないもの。
マシューグリーン

1
@Kokodoko CSSは、コンテンツとプレゼンテーションの間の関心の分離を作成するために存在します。プレゼンテーションは、画面に表示されるものだけではありません。設計の目的に関係なく、覚えておくことが重要な違いです。
マシューグリーン

231

以下は、Adobe docsからのものです。


メディアクエリの仕様には、only古いブラウザからメディアクエリを非表示にすることを目的としたキーワードも用意されています。と同様notに、キーワードは宣言の先頭に置く必要があります。例えば:

media="only screen and (min-width: 401px) and (max-width: 600px)"

メディアクエリを認識しないブラウザは、メディアタイプのコンマ区切りのリストを期待します。仕様では、ハイフンではない最初の非英数字の直前で各値切り捨てる必要があると規定されています。したがって、古いブラウザ前の例を次のように解釈する必要があります。

media="only"

唯一のメディアタイプがないため、スタイルシートは無視されます。同様に、古いブラウザ解釈する必要があります

media="screen and (min-width: 401px) and (max-width: 600px)"

なので

media="screen"

つまり、メディアクエリの意味がわからなくても、すべての画面デバイスにスタイルルールを適用する必要があります。

残念ながら、IE 6–8は仕様を正しく実装できませんでした。

すべての画面デバイスにスタイルを適用する代わりに、スタイルシートを完全に無視します。

この動作にもかかわらず、他のあまり一般的ではないブラウザーからスタイルを非表示にする場合にのみ、メディアクエリの前にプレフィックスを付けることをお勧めします。


したがって、

media="only screen and (min-width: 401px)"

そして

media="screen and (min-width: 401px)"

IE6-8でも同じ効果があります。どちらもこれらのスタイルが使用されないようにします。ただし、それらは引き続きダウンロードされます。

また、CSS3メディアクエリをサポートするブラウザーでは、ビューポートの幅が大きく401px、メディアタイプが画面の場合、両方のバージョンでスタイルが読み込まれます。

CSS3メディアクエリをサポートしていないブラウザーがonlyバージョンを必要とするかどうか、完全にはわかりません

media="only screen and (min-width: 401px)" 

とは対照的に

media="screen and (min-width: 401px)"

として解釈されないようにする

media="screen"

これは、デバイスラボにアクセスできる人にとっては良いテストです。


3
したがって、CSSファイルのメディアクエリについて話している場合は、「のみ」をドロップできます。古いブラウザはメディアクエリをまったく理解できないためです。
1234ru 2015

良い、非常に明快な答え。ありがとう!
Alexander Suraphel、2015年

共有されたリンクは本当に役に立ちました。ありがとう
Raphael

私の経験によると、Symbian OS(古いNokiaタッチ電話)では「のみ」が期待どおりに機能しています。これらのブラウザーはCSS3のサポートが非常に悪かったので、私は何度も使用しましたが、メディアクエリで「のみ」と「最小/最大幅」を正しく処理することができました。
Peter Knut

@PeterKnutなぜあなたはそのような古いデバイスをサポートしているのですか?真に好奇心が強い。
プロメテウス

41

画面が小さい多くのスマートフォン用にスタイルするには、次のように書くことができます。

@media screen and (max-width:480px) {  } 

古いブラウザがiPhoneまたはAndroidの電話スタイルシートを表示しないようにするには、次のように記述します。

@media only screen and (max-width: 480px;) {  } 

詳細については、この記事をお読みくださいhttp://webdesign.about.com/od/css3/a/css3-media-queries.htm


3
まだはっきりしていません。質問も更新しました。何か例を挙げられますか?
Jitendra Vyas、2011

4
モバイルファーストのアプローチを使用するとどうなりますか?したがって、最初にモバイルCSSを用意し、次にmin-widthを使用してより大きなサイトをターゲットにします。onlyその文脈でキーワードを使うべきではないでしょう?
愛鷹08

この答えは非常に理解しやすかったです!:)ばかりなIE 6やAndroidやChrome 30またはIE 10..Exellentの回答サンディープのために提示する必要のあるデータをロードするから、オペラ5または6などの古いバージョンを維持することです:) +1値する
Afzaalは、アフマドジーシャン2013年

16

@ashitakaが述べた目的を説明していないことを除いて、@ hybridによる回答は非常に有益です。そのコンテキストで唯一のキーワードを使用するべきではありませんよね?」

ここに追加したいのは、サポートされていないブラウザが「スクリーン」から始まるかのように他のデバイススタイルを使用しないようにすることだけなので、「それだけ」スタイルから始まるかのように無視されます。

アシタカに答えてこの例を考えてください

<link rel="stylesheet" type="text/css" 
  href="android.css" media="only screen and (max-width: 480px)" />
<link rel="stylesheet" type="text/css" 
  href="desktop.css" media="screen and (min-width: 481px)" />

「のみ」を使用しない場合でも、デスクトップスタイルもAndroidスタイルの印象的なものとして使用されますが、不要なオーバーヘッドがあるため、引き続き機能します。この場合、ブラウザがサポートしていない場合、最初のスタイルシートを無視して2番目のスタイルシートにフォールバックします。


1
@media screen and (max-width:480px) {  } 

screenここでは、メディアクエリの画面サイズを設定します。たとえば、表示領域の最大幅は480pxです。したがって、他の使用可能なメディアタイプとは対照的に、画面を指定しています。

@media only screen and (max-width: 480px;) {  } 

only screen ここでは、メディア機能を使用したメディアクエリをサポートしていない古いブラウザが指定されたスタイルを適用しないようにするために使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.