ホームページ  >  記事  >  ウェブフロントエンド  >  CSS3 のメディア クエリの学習概要を共有する

CSS3 のメディア クエリの学習概要を共有する

高洛峰
高洛峰オリジナル
2017-03-10 09:41:491784ブラウズ

CSS3 のメディア クエリは、フロントエンドのレスポンシブ デザイン ページを作成するためによく使用されます。ここでは、IE8 での互換性の問題の解決を含む、CSS3 のメディア クエリの学習概要を共有します。

1。サポートされている属性
分享CSS3中的Media Queries的学习总结

分享CSS3中的Media Queries的学习总结

2. キーワード
- 複数のメディアクエリを結合しない - 特定の指定されたメディアタイプのみを除外する - 特定のメディアタイプを定義するために使用される

3. 参照スタイルの例

<link rel="stylesheet" media="all" href="style.css" />   
<link rel="stylesheet" media="screen and (min-width:980px)" href="desktop.css" />   
<link rel="stylesheet" media="screen and (min-width:768px) and (max-width:980px)" href="pad.css" />   
<link rel="stylesheet" media="screen and (min-width:480) and (max-width: 768px)" href="phone.css" />   
<link rel="stylesheet" media="screen and (max-width:320px)" href="small.css" />


4. インラインスタイルの例

@media screen and (min-width: 980px) {   
    //css code
}   
@screen and (min-width:768px) and (max-width:980px) {   
    //css code
}   
@screen and (min-width:480) and (max-width: 768px) {   
    //css code
}   
@screen and (max-width:320px) {   
    //css code
}   

@media screen and (max-device-width: 480px) {   
    //max-device-width等于480px
}   
@media screen and (device-aspect-ratio: 16/9), screen and (device-aspect-ratio: 16/10) {   
    //设备宽高比   
}   
@media all and (orientation:portrait) {   
    //竖屏   
}   
@media all and (orientation:landscape) {   
    //横屏   
}



5. I8 互換性の問題の解決
問題の原因:
プロジェクトの CSS ファイルで使用 メディアはサイズに応じてレイアウトを自動的に調整しますただし、IE8 以下のブラウザは CSS3 メディア クエリをサポートしていません。つまり、@media 画面の CSS コード (最大幅: 900px) が実行されません。

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


インターネット上の多くの人が解決策を提案しています。
IE8 および以前のブラウザは CSS3 メディア クエリをサポートしていません。この問題を解決するには、css3-mediaqueries を追加します。

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


それは非常に単純であることがわかりましたが、プロジェクトでどのように試しても、結果は非常に残念でした。試したことのある同僚が私にいくつか教えてくれることを願っています。アドバイスとしては、もう少し複雑な方法を使用するしかありません。この方法もインターネットから学んだものです。1 つ目は、この処理が実行できるのは IE8 以下の 2 つです。ブラウザが特定のサイズ範囲に縮小された後にのみ実行されます。方法は次のとおりです:
原則: jquery を使用します。理解できない場合は、必要に応じて HTML 内の対応する CSS ファイルを変更します。
共通の js の後に次のコードを追加します。すべてのページのファイル:

/*Adjust the layout in IE8 and lower than IE8 when the browser is narrow*/
function processLowerIENavigate()   
{   
   var isIE = document.all ? 1 : 0;   
   if (isIE == 1)   
   {   
       if(navigator.userAgent.indexOf("MSIE7.0") > 0 || navigator.userAgent.indexOf("MSIE 8.0") > 0)   
       {     
    //  var doc=document; 
           var link=document.createElement("link");   
           link.setAttribute("rel", "stylesheet");   
           link.setAttribute("type", "text/css");   
           link.setAttribute("id", "size-stylesheet");   
           link.setAttribute("href", "");   

           var heads = document.getElementsByTagName("head");   
           if(heads.length)   
               heads[0].appendChild(link);   
           else
               document.documentElement.appendChild(link);   

           document.write("<script type=&#39;text/javascript&#39; src=&#39;jquery.min.js&#39;></script>");   
           document.write("<script type=&#39;text/javascript&#39; src=&#39;media_screen.js&#39;></script>");   

       }   
   }    
}   
var lowerIE8 = processLowerIENavigate();   

media_screen.js文件内容如下,直接从网上copy:   
function adjustStyle(width) {   
    width = parseInt(width);   
    if (width < 902) {   
//alert("<900");
//alert(width);
        $("#size-stylesheet").attr("href", "navigateLowerIE8.css");   
    } else {   
      // alert(">900");
  //alert(width);
       $("#size-stylesheet").attr("href", "");    
    }   
}   

$(function() {   
    adjustStyle($(this).width());   
    $(window).resize(function() {   
        adjustStyle($(this).width());   
    });   
});


navigateLowerIE8.css ファイルは、IE8 とその下位バージョンのブラウザーを縮小したときのページ レイアウトです。 OK、すべてが完了しました。

以上がCSS3 のメディア クエリの学習概要を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。