2017-07-03 2 views
-2

PHPでメディアクエリを使用するにはどうすればよいですか? 私は既にコードを持っていますが、ウィンドウのサイズを変更してもデザインが変更されないという問題があります。可能な方法はありますか?PHPでMedia Queryを使用するにはどうすればよいですか?

 <?php 
     if (isset($_GET['width'])) { 
     $width = $_GET['width']; 
     if ($width <= 800) { //mobile devices 
      $style = '<link rel="stylesheet" href="mobile.css" type="text/css">'; 
     } else { //desktop 
      $style = '<link rel="stylesheet" href="style.css" type="text/css">'; 
     } 
     echo $style; 
     } else { 
      echo "<script language='javascript'>\n"; 
      echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}" . "&width=\" + screen.width; \n"; 
      echo "</script>\n"; 
      exit(); 
     } 
    ?> 
+0

サイズ変更後にウィンドウを更新できますか? –

+1

getパラメータを使用して幅をPHPに渡すにはどうすればよいですか?参考までに、ブラウザがあなたのためにデバイスの詳細を検出するので、phpなしでメディアクエリを使用することができます。 Davidsの回答を見てください;) – BenRoob

+0

@JaydeepMorいいえ。常に元の画面の幅を取る(例:1920px) – PatSchm

答えて

1

ブラウザの幅が決定される前にPHPが動作するため、これがどのように機能するかわかりません。しかし、それはとにかく必要ではありません。あなたがしたいのは、リンク要素にメディアクエリを適用することです。

<link rel="stylesheet" media="screen and (max-width: 800px)" href="mobile.css"/> 
<link rel="stylesheet" media="screen and (min-width: 801px)" href="style.css"/> 
+0

興味深い。私は、スタイルシートの中のプレーンなメディアのクエリよりも、これが気に入っているかどうかわかりません。互換性に関する詳細を追加することもできますが、これは普遍的にサポートされているわけではありません。 –

+1

ここでの考え方は、mqに基づいてリソースをロードすることです。ファイルの中にmqがある場合、それはすでにロードされています。しかし、これがサーバーへのラウンドトリップを引き起こすかどうかはわかりません。私は個人的には、非常に最適化されたファイル –

2

PHPはページがレンダリングされる前に実行されます。よりダイナミックな振る舞いを目指しているのであれば、JSを使うことをお勧めします。もっとこのような何か:これにより

$(window).resize(function(){ 
    ... 
}); 

やバニラJSで

window.onresize = function(event) { 
    ... 
}; 

あなたが実際にあなたが言及したCSSファイルをロード/アンロードすることができます。

私のお勧めは、そこにすべてのメディアクエリを持つ良い(そして唯一の)CSSファイルに頼ることです。

Responsive Web Design - Media Queries

関連する問題