望ましいのは、ブラウザ ウィンドウに合わせてサイズ変更/スケーリング/ストレッチする背景を持つことです。
CSS3 メソッドがあるようですが、広くサポートされているわけではありません。多数の JQuery メソッドが存在するようですが、それらはいずれも ... まあ、少しぎこちないか、手動入力が多すぎるように思えます。
それで...私は考えていました...基本を取り上げ、それのほとんどを私たちのために行う何かはどうですか?
以下は私がこれまでに得たものです:
Fullscreenrのようないくつかの既存のメソッドに基づいており、いくつかの変更が加えられています。
<script type="text/javascript">
//<![CDATA[
$.fn.fullscreenr = function(options) {
var defaults = { width: 1280, height: 1024, bgID: 'bgimg' };
var options = $.extend({}, defaults, options);
$(document).ready(function() {
$(options.bgID).fullscreenrResizer(options);
});
$(window).bind("resize", function() {
$(options.bgID).fullscreenrResizer(options);
});
return this;
};
$.fn.fullscreenrResizer = function(options) {
// Set bg size
var ratio = options.height / options.width;
// Get browser window size
var browserwidth = $(window).width();
var browserheight = $(window).height();
// Scale the image
if ((browserheight/browserwidth) > ratio){
$(this).height(browserheight);
$(this).width(browserheight / ratio);
} else {
$(this).width(browserwidth);
$(this).height(browserwidth * ratio);
}
// Center the image
$(this).css('left', (browserwidth - $(this).width())/2);
$(this).css('top', (browserheight - $(this).height())/2);
return this;
};
$(document).ready(function() {
// Get the URL based on the Background property
function extractUrl(input) {
return input.replace(/"/g,"").replace(/url\(|\)$/ig, "");
}
// Get the Background CSS Property.
imageURL = extractUrl($("body").css("background-image"));
$('body').prepend('<div id="triquiback"></div');
$('#triquiback').prepend('<img id="triquibackimg" src="'+imageURL+'" />');
var triquibackcss = {
'left' : '0',
'top' : '0',
'position' : 'fixed',
'overflow' : 'hidden',
'zIndex' : '-9999'
};
var triquibackimgcss = {
'position' : 'fixed'
};
$("#triquiback").css(triquibackcss);
$("#triquibackimg").css(triquibackimgcss);
});
$(window).load(function() {
var pic = $('img');
pic.removeAttr("width");
pic.removeAttr("height");
thiswidth = pic.width();
thisheight = pic.height();
// You need to specify the size of your background image here
// (could be done automatically by some PHP code)
var FullscreenrOptions = {
width : thiswidth,
height : thisheight,
bgID : 'img'
};
// This will activate the full screen background!
jQuery.fn.fullscreenr(FullscreenrOptions);
});
//]]>
</script>
それで...私はどのような変更を管理しましたか?
さて、背景画像/ファイルを指定しなくても、本文から自動的に取得されるようにすることができました。
また、高さ/幅をそれ自体で検出できるようにすることもできました。
さらに、サイズ変更するラッパーと画像がマークアップに含まれるのではなく、JQuery を介して挿入され、JS を介してスタイル設定されるようにしました。
今... 問題/欲求?
ええと、まず第一に、これはすべてメインの html ドキュメントにあります。
外部ファイルにしたいのですが、試したすべてが失敗しました! おそらくハックジョブが行われたためです。
それに続いて、適用する要素を指定できるようにすることは可能ですか (ボディ以外のものが必要な場合)?
一般的には、(ハックジョブのミスマッシュが原因で)混乱しているように見えますが、非効率的/乱雑であると確信しています。コードを実行するためのより良い方法はありますか?
100% 確信があるわけではありませんが、おそらく z-index プロパティを設定できるはずです! ある時点で、誰かが別のセットアップを持ち、別の値を望んでいる可能性があると思いますか?
(何も指定されていない場合のデフォルトを含めますか?)
IE6 ... IE6 で CSS を機能させる方法を見逃していると思います。IE6 の場合、ブラウザーを識別して異なるスタイルを指定することは可能ですか?
それはさておき、それは十分に機能しているようです。ウィンドウのサイズ変更時にサイズ変更し、FF3/最新のクロム (6?)、IE7 などで動作します。
CSS3 がサポートされているかどうかをテストするためのちょっとしたトリックを見たので、これを使用してこれが必要かどうかを検出できるかどうかもテストします (必要でない場合は、いくらか肥大化を避ける必要があります)。
+
助けを求めるのはとても生意気に感じます...
私はこの種のことを自分で行うことに慣れていますが、一般的な問題を見つけてその日を1週間の髪の引っ張りに変えるのを助けることができるより賢く、より良い人々がいるときに、何かをするために丸一日を無駄にするのはばかげているようです: D
では、よろしくお願いします(運が良ければ)。