2011-10-08 11 views
6

さまざまな画面解像度で背景画像を処理するにはどうすればよいと思いますか?画面の解像度によって異なる背景イメージですか?

私は最も人気のある解像度ごとに別々の背景を作り、Jqueryに適切な解像度をロードさせることを考えていました。私はCSSにも開いています。皆さんありがとうございます。

答えて

16

使用media queriesを:

@media (min-width:800px) { background-image: url(bg-800.jpg) } 
@media (min-width:1024px) { background-image: url(bg-1024.jpg) } 
@media (min-width:1280px) { background-image: url(bg-1280.jpg) } 

あなたは、すべての可能なサイズをカバーすることはできません。特に、ブラウザが ' tフルスクリーンなので、あなたのデザインはこれを考慮に入れて幾分flexibleでなければなりません。

+0

ありがとうロバート!あなたが私に送ったページ全体を読んでいますが、私は簡単に質問できますか、ブラウザのビューポートまたは画面の解像度の最小幅ですか?そして、あなたは幅よりもむしろ高さを因子として使うべきだと思いませんか?ありがとう:) – pufAmuf

+0

@pufAmufブラウザのビューポートです。画面の解像度は 'min-device-width'や' max-device-width'を使用してください。 – robertc

1

ウェブページのサイズに合わせて背景画像を伸ばした「バックストレッチ」と呼ばれるjQueryプラグインがあります。あなただけの、その後ロードされる背景を決める画面の解像度を取得したい場合は ちょうど見here


を取り、その後、これらのコードが役立つことがあります。

var h = screen.height; 
var w = screen.width; 

var BGList = { 
    '1024-768': 'background-url-1.jpg', 
    '1152-864': 'background-url-2.jpg', 
    '1280-600': 'background-url-3.jpg' 
} 

var myBG = BGList[ w+'-'+h ]; 
if (myBG){ 
    document.write("<style> body {background:url('"+myBG+"')} </style>") 
}else{ 
    alert("You have a strange screeen !") //--deal with undefined screen resolution here 
} 
+0

返信いただきありがとうございます。しかし、大画面では細部が失われているため、伸ばした画像は必要ありません。私は、解像度ごとに完全に別々の背景をロードしたいと思います。ありがとう:) :)))) – pufAmuf

+0

おかげでvantrung -cuncon :)、それはかなり良いです、多分私はそれを使用します:) – pufAmuf

3

更新:クロスブラウザのサポートのために

、以下の私の答えは「ロール独自の」方法です。しかし、ここ数年の間に、この問題を解決するために開発された優れたポリフィルがいくつかありました。通常は、すべての作業をやり直すのではなく、これらのいずれかを実行することをお勧めします。 Respond.jsは、よりよく知られているものの1つです。ちょうどそれにリンク:

<script src="/path/to/respond.js"></script> 

あなたのCSSファイルにあなたのメディアのクエリを書くと完了です。


robertcが指摘したように、CSSメディアクエリは、あなたの出発点でなければなりませんが、彼らがこの問題の完全な解決策ではないことに留意すべきです。残念ながら、CSSのメディアクエリはすべてのブラウザでサポートされていません( IE)。 cssファイルのメディアクエリコードは、これらのブラウザでは無視されます。

CSSのメディアクエリに加えて、ビューポートのサイズを決定するバックアップJavaScriptソリューションを検討してから、bodyタグにクラスを追加するだけです。この例は、単に簡潔にするためにjqueryのを使用しています。

function setImageClass() { 
    switch(true) { 
     case($(window).width()>600): $("body").removeClass("w200 w400").addClass("w600"); 
     break; 
     case($(window).width()>400): $("body").removeClass("w200 w600").addClass("w400"); 
     break; 
     default: $("body").removeClass("w400 w600").addClass("w200"); 
     break; 
    } 
} 

$(document).ready(function() { 
    setImageClass(); 
}); 

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

ところで、これらのサイズは、単にすべてのデバイス上で簡単にテストのために、現実的ではありません。覚えておいて、それらに加えて、あなたはjavascriptのセットのクラスのルール設定する必要がありますので、CSSメディアクエリは、無視されます。

.w200 { background:red } 
.w400 { background:orange } 
.w600 { background:yellow } 

をしかし、あなたは2つのCSSルールが衝突したくありませんクエリとjsの両方が機能する場合、メディアクエリは同じ名前を使用する必要があります(後で配置する必要があります)。例:

私はこれを実際に実行するためにフィードバックを行います。これにはJavaScriptソリューションだけが含まれていますが、私は主なソリューションとしてメディアクエリを完全にサポートしています。Here is the full screen link.

+0

ありがとうございました! :)私はIEも完全に忘れてしまったので、私は私のためにもっと多くの仕事をしていると思います:)もう一度ありがとう – pufAmuf

関連する問題