CSS Media QueryのIE8サポート


178

IE8は次のCSSメディアクエリをサポートしていません。

@import url("desktop.css") screen and (min-width: 768px);

そうでない場合、別の書き方は何ですか?Firefoxでも同じように機能します。

以下のコードに問題がありますか?

@import url("desktop.css") screen; 
@import url("ipad.css") only screen and (device-width:768px);

メディアでインラインcssを試し、respond(.min).jsを使用したい場合、respondはこの状況では機能し
ません-.css

回答:


77

IE9より前のInternet Explorerバージョンは、メディアクエリをサポートしていません

IE8ユーザーのデザインを低下させる方法を探している場合は、IEの条件付きコメントが役立つことがあります。これを使用して、以前のルールを上書きするIE 8/7/6固有のスタイルシートを指定できます。

例えば:

<link rel="stylesheet" type="text/css" media="all" href="style.css"/>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ie.css"/>
<![endif]-->

これはIE8のレスポンシブデザインを可能にしませんが、JSプラグインを使用するよりも簡単でアクセスしやすいソリューションになる可能性があります。


94
条件付きスタイルシートがレスポンシブデザインの問題をどのように解決するかわかりません。
James Westgate、

8
このソリューションがIEのレスポンシブデザインをどのように解決するのか理解できません。ブラウザに応じて異なるスタイルシートをロードすることは、例えばブラウザのサイズに応じて異なるスタイルプロパティを使用することとは何の関係もありませんでした。
Klikerko 2012年

13
IE8 はメディアクエリをサポートしていないというのが正解だと思います。この答えは一種のことを言いますが、一見して完全に明確ではありません。とにかく、私はそれがサポートを持っていると思いました、そしてこの答えは私がそうでなければ理解するのを助けました。
Jason

54
この答えは応答性の高いソリューションではないことは事実ですが、私にとってそれは巨大な「しかし」です。実際、IE8はiPadやAndroidタブレットでは使用されていません。IE8は主に2003年から2009年までのXP / Vista PCで使用でき、画面の幅は主に約1024pxです。Windows MobileはIE6、Windows PoneはIE9以降です。ここでの真の質問は、IE8でレスポンシブにすることが本当に役立つかどうかを自問することです。
グレゴワールD.

16
@GregoireD。はい、そうです。ズームでウェブページを見る人がいるからです。私の会社では、4xズーム以降のページを800x600にフォーマットしています。それは400px幅のような画面になります。メディアクエリは、選択したブラウザー(およびIE8が含まれています)にもかかわらず、そのために非常に便利です。
アルカナ2013年

341

css3-mediaqueries-jsはおそらくあなたが探しているものです:このスクリプトはメディアクエリをエミュレートします。ただし(スクリプトのサイトから)、「@importedスタイルシートでは機能しません(パフォーマンス上の理由で使用しないでください)。また、<link>および<style>要素のメディア属性をリッスンしません」。

同じように、メディアクエリのみを有効にする、よりシンプルなRespond.jsがあります。min-widthmax-width


7
なぜこれが回答としてラベル付けされていないのですか?ありがとうございます。ちなみに、オーバーヘッドがあるため、インポートcssクエリを使用しないでください。
RichW

完璧に、まさに私が探していたもの!
somdow

ありがとうございました!!この回答とrespond.jsにより、ie8でメディアクエリの回避策を実行するのに費やす時間を大幅に節約できました。
Ingusmat 2013年

3
nevermind-> .jsは.cssファイルの後に含める必要があります... xD
kaljak

4
応答は機能しましたが、css3-mediaqueriesは機能しませんでした。Respondは自己完結型ですが、css3-mediaqueriesはユーザーエージェント検出などの一部のjQuery関数に依存しているためだと思います。この関数は廃止され、削除されました(jQueryドキュメントを参照)。
アントンボリツキー2013

50

私が見つけた最良のソリューションは、レスポンシブデザインがIE8で機能することを主な関心事とする場合は特に、Respond.jsです。min / gzippedの場合は1kbとかなり軽量で、IE8クライアントのみがロードできることを確認できます。

<!--[if lt IE 9]>
<script src="respond.min.js"></script>
<![endif]-->

ブートストラップを使用している場合にも推奨される方法です。http://getbootstrap.com/getting-started/#support-ie8-ie9


14

IE8(およびそれ以前のバージョン)および3.5より前のFirefoxは、メディアクエリをサポートしていません。Safari 3.2は部分的にサポートしています。

JavaScriptを使用してこれらのブラウザーにメディアクエリサポートを追加するいくつかの回避策があります。これらを試してください:

メディアクエリjQueryプラグイン(最大/最小幅のみを扱います)

css3-mediaqueries-js –サポートされていないブラウザにメディアクエリサポートを追加することを目的とするライブラリ


わかりました。css3-mediaqueries.jsをページに追加しました。それでもIEでは機能しません。 768px);」また、「@ import url( "desktop.css")not screen and(device-width:768px);」
testndtv

わからない私は..スクリプトを含むwell..besidesなどの追加の何かをする必要がある場合
testndtv

インポートしたCSSでは機能しないことに注意してください。これを試してください:<link rel = "stylesheet" type = "text / css" media = "not screen and(device-width:768px)" href = "desktop.css" />
Faraz Kelhini

ああ、わかりました。私が何かを探していて、実際にそのような場合には、それは... CSSのみで、外部page..ieに何もせず、私を助けていない可能性があります
testndtv

そのgoogletrunk css3 jsスクリプトは、CSSスタイルシート内で使用されているmediaqueryでのみ機能し、「画面のみ」などの外部では機能しないことを指定しています。これは、スタイルシートを1つに統合する必要があり、その内部で、外部的に実行したいことを@media screenおよび(max-width:980px){
Capagris

11

css3mediaqueries.jsプロジェクトページから取得。

注: @importされたスタイルシートでは機能しません(パフォーマンス上の理由で使用しないでください)。また<link><style>要素のメディア属性をリッスンしません。


+1は、@ importされたスタイルシートでは機能しないことを教えてくれます!私のWP子テーマで多くの時間を節約してください。
Vinicius Garcia

8

css3-mediaqueries-jsを使用する簡単な方法は、本文の終了タグの前に以下を含めることです。

<!-- css3-mediaqueries.js for IE less than 9 -->
<!--[if lt IE 9]>
<script 
   src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js">
</script>
<![endif]-->

6

編集された回答:IEは画面と印刷をインポートメディアとして認識します。他のすべてのCSSがimportステートメントと共に提供されると、IE8はimportステートメントを無視します。サファリやモジラのようなGecoブラウザにはこの問題はありませんでした。


私のIEは互換性にmode..AlsoがIE..Basically私のために、他の代替があるのみ。.. 768pxスクリーンデバイス以外のすべてを選択したくないです
testndtv

また、あなたが与えたリンクで説明したように、doctypeを<!DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.0 Transitional // EN" " w3.org/TR/xhtml1/DTD/xhtml1-transitionalに設定してみました。 dtd "> ...それでも動作しません..
testndtv

1
私があなたを正しかったかどうかはわかりません。JavaScriptを使用して画面の解像度を検出できますか?CSSでは他に方法はありません。関連するエラーがなく、minがオーバーライドまたは無視されることはありませんか?得られたヒントは、開発者向けツールバーです。これで、ページの再読み込みなしでライブテストできます
sra

quirkモードへの切り替えが非常に高速です。確認しましたか?それも望ましくない結果につながる可能性があります。Quirkmodeはdoctypeを上書きします。非常に小さなプロジェクトで必要なものだけをテストして、関連するエラー/結果ではないことを保証することも神の慣習です
sra

わかりました。これが私が今どのように更新したかです... common.cssがあり、その中に言っています。... @import url( "desktop.css")画面; @import url( "ipad.css")のみ画面と(device-width:768px); このアプローチが正しいかどうかはわかりませんが、デスクトップ(IE / FF)とiPadで機能します。このアプローチで問題が発生する可能性はありますか?
testndtv

6

メディアクエリは、IE8以前ではまったくサポートされていません。


JavaScriptベースの回避策

IE8のサポートを追加するには、いくつかのJSソリューションの1つを使用できます。たとえば、Respondを追加して、次のコードでのみIE8のメディアクエリサポートを追加できます。

<!--[if lt IE 9]>
<script 
   src="respond.min.js">
</script>
<![endif]-->

CSS Mediaqueries は、同じことを行う別のライブラリです。そのライブラリをHTMLに追加するコードは同じです。

<!--[if lt IE 9]>
<script 
   src="css3-mediaqueries.js">
</script>
<![endif]-->

代替

JSベースのソリューションが気に入らない場合は、IE <9固有のスタイルを調整するIE <9のみのスタイルシートを追加することも検討してください。そのためには、次のHTMLをコードに追加する必要があります。

<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" media="all" href="style-ielt9.css"/>
<![endif]-->

注意 :

技術的には、もう1つの選択肢です。CSSハックを使用するを使用してIE <9をターゲットにします。IE <9のみのスタイルシートと同じ影響がありますが、そのための個別のスタイルシートは必要ありません。ただし、このオプションは無効なCSSコードを生成するため、このオプションはお勧めしません(これは、CSSハックの使用が今日一般的に嫌われているいくつかの理由の1つです)。


5

Internet Explorer 8以前は、メディアクエリはサポートされていませんでした。ただし、状況に応じて、条件付きコメントを使用してInternet Explorer 8以下のみをターゲットにすることができます。適切なCSSファイルアーキテクチャを使用する必要があります。



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