IE 8は次の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);
Internet ExplorerのIE 9より前のバージョンメディアクエリをサポートしていません。
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プラグインを使用するよりも簡単でよりアクセスしやすいソリューションになるかもしれません。
css3-mediaqueries-js はおそらくあなたが探しているものです:このスクリプトはメディアクエリーをエミュレートします。しかし、(スクリプトのサイトから)「これは@import
edスタイルシートでは動作しません(パフォーマンス上の理由から使用してはいけません)。また、<link>
および<style>
要素のmedia属性を監視しません。
同じように、もっと単純な Respond.js があります。これはmin-width
とmax-width
のメディアクエリのみを有効にします。
私が見つけた最良の解決策は Respond.js です。あなたの主な関心事があなたのレスポンシブデザインがIE8で動作することを確認することであればなおさらです。 min/gzipしたとき1kbでかなり軽量で、IE8クライアントだけがそれをロードできることを確認できます。
<!--[if lt IE 9]>
<script src="respond.min.js"></script>
<![endif]-->
ブートストラップを使用している場合にもお勧めの方法です。 http://getbootstrap.com/getting-started/#support-ie8-ie9
IE8(およびそれ以前のバージョン)および3.5より前のFirefoxはメディアクエリーをサポートしていません。 Safari 3.2では部分的にサポートされています。
JavaScriptを使用してこれらのブラウザにメディアクエリのサポートを追加する回避策がいくつかあります。これらを試してください:
Media Queries jQueryプラグイン(最大/最小幅のみを扱う)
css3-mediaqueries-js - サポートしていないブラウザにメディアクエリのサポートを追加することを目的としたライブラリ
Css3mediaqueries.jsプロジェクトページから取得しました。
注: @インポートされたスタイルシートでは機能しません(パフォーマンス上の理由から使用しないでください)。 <link>
および<style>
要素のmedia属性も聞き取れません。
Css3-mediaqueries-jsを使用する簡単な方法は、bodyタグを閉じる前に以下を含めることです。
<!-- 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]-->
編集回答:IEは、インポートメディアとして画面と印刷だけを理解しています。 importステートメントと一緒に提供される他のすべてのCSSは、IE 8にimportステートメントを無視させます。 safariやmozillaのようなGecoブラウザはこの問題を抱えていませんでした。
メディアクエリ は、IE 8以下ではまったくサポートされていません。
IE8のサポートを追加するには、いくつかあるJSソリューションのうちの1つを使用できます。たとえば、 応答 を追加して、IE 8のメディアクエリサポートを追加するには、次のコードを使用します。
<!--[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つの選択肢があります。--- IEをターゲットとするために CSSハック を使用することです。これはIE <9のみのスタイルシートと同じ効果がありますが、別のスタイルシートは必要ありません。しかし、私はこのオプションをお勧めしません。無効なCSSコードが生成されるためです(これは、今日CSSハックの使用が一般的に眉をひそめているいくつかの理由の1つです)。
Internet Explorer 8より前は、メディアクエリはサポートされていませんでした。ただし、場合によっては、条件付きコメントを使用してInternet Explorer 8以下のみをターゲットにすることもできます。あなただけの適切なCSSファイルアーキテクチャを使用する必要があります。
http://blog.keithclark.co.uk/wp-content/uploads/2012/11/ie-media-block-tests.php
私は@media \0screen {}
を使いました、そしてそれはREAL IE8で私のためにうまく働きます。
IEはIE 9までメディアクエリのサポートを追加しませんでした。だからIE8であなたは運が悪いです。