2011-07-28 4 views
0

私が取り組んでいるプロジェクトは、内容を示すグリッドで構成されています。グリッド上の各アイテムのサイズを、ビューポートのサイズの4分の1に変更したいと思います。これはJavascriptでは非常に簡単ですが、各アイテムのサイズを認識する必要のあるバックエンドのものがいくつかあります:JSとPHPで "バックエンドのメディアクエリ"を行う方法はありますか?

Timthumbを使用して、アイテムのイメージを適切なサイズにサイズ変更しています。ビューポートの幅を検出し、適切な値(ビューポートの幅/ 4)を各項目を扱うphpに送信して、Timthumbに使用する適切なサイズを通知します。

この問題を解決するにはどうすればよいでしょうか?

+0

を返すことができます。それ以外の場合、PHPはブラウザのサイジングについて何も知ることができません。 –

+0

はい、私は知っていますが、私はそれを扱う最良の方法が何であるか疑問に思っていました –

答えて

3

$(document).readyでページをリクエストすると、jQueryを使用してビューポートのサイズを検出し、AJAXリクエストで渡すのはどうですか? PHP側の

$(document).ready(function() { 
    var height = $(window).height(); 
    var width = $(window).width(); 
    $.ajax({ 
     type: 'POST', 
     url: image.php, 
     data: { 
      "height": height, 
      "width": width 
     }, 
     success: function (data) { 
      $("#viewarea").html(data); 
     }, 
    }); 
}); 

あなたはちょうどあなたが戻ってサーバーに `screen.width`と` screen.height`を送信するためにJSを必要とするだろう、それを取得し、データに

$_POST['height'] 
$_POST['width'] 
+0

ちなみに、AJAXがサーバーの応答を待っている間に、読み込み画面を表示するためにhttp://jquery.malsup.com/block/を使用することができます – Jeremy

1

イメージを生成するPHPスクリプトに対するシンプルなAJAX/JQueryリクエストは、ここではうまくいくでしょうか?

ような何か:

var query_string = "x=<viewport-x>&y=<viewport-y>"; 
$('#viewport').html("Processing..."); 
$('#viewport').load('resize_image.php',query_string); 

あなたは自分のPHPスクリプトで$_GET['x']$_GET['y'] VARSを取るとバックのページへの正しい画像パスをエコーする前TimThumbにそれらを渡す必要がその方法を。

+0

私はこれらの行に沿って何かを考えていましたが、これはホームページで起こる必要があります。ユーザーがコンテンツを見る前に?何らかのプリローダーページなどを使用する必要がありますか? –

+0

bodyタグのonLoad関数を使用することはできますが、画像の処理中にページの読み込みが遅れることがあります。 もう1つの方法として、「プレースホルダ」画像を用意し、それが利用可能になるとサイズ変更された画像に置き換える方法があります。 –

関連する問題