解決策は、包含要素と JavaScript の組み合わせを使用することです:
http://jsfiddle.net/KaaXg/3/
このフィドルには、次の JavaScript 機能が含まれています。
$(document).ready(function(){
$(".container").css("width", $(".image").width());
$(window).resize(function(){
$(".container").css("width", $(".image").width());
});
});
ここで注意すべき最も重要なことは、left
と のwidth
値がbody
要素に関して計算されていたことです。これは意図したものではありませんでした。
これに対抗するためdiv
に、ページ上の赤いブロック グラフィックに使用されるイメージとその他のタグを含む包含要素を追加しました。
ただし、javascript を使用しないleft
場合、ウィンドウのサイズが変更された後にページが再ロードされたときに属性が「更新」されるだけです。ブロック レベルの要素は、単独では水平方向に更新されません。
left
とを背景画像に比例させたいのですが、width
CSS のみを使用してページのサイズを変更したり移動したりしても、 と は更新されません。上記の JavaScript ソリューションは、ページのサイズが変更されると、含まれる要素の幅を動的に更新し、この問題を解決します。
bottom
およびheight
css スタイルは、Web サイトの目的に合わせて機能するため、そのままにしておきます。コンテナーは、その中の画像に合わせて高さが大きくなります。
ページ上の固定ピクセルの黒いブロックで何をしたいのか正確にはわからないので、そのまま残しました。
編集: 私はこのプロジェクトを真剣に見直し、オブジェクト ファクトリを作成して新しいグラフィックを作成し、ページのコードを更新しました。このソリューションは、HTML や CSS をほとんど必要とせず、JavaScript コードが少し多くなりますが、ページに動的グラフィックスを実装したり、新しい要素を機能的に追加したりするのがはるかに簡単になります。http://jsfiddle.net/RnCWN/9/
ここで思いついた JavaScript ソリューションは、リアルタイム更新パーセンテージを使用して、パーセンテージ ベースのブロックのwidth
および属性を設定し、静的および属性を初期化します。left
height
bottom
このリビジョンでは、メソッドを使用PercentageBasedGraphic
してページ上にフローティング ボックスを作成できます。次に例を示します。
PercentageBasedGraphic(25, 10, 4, 30, "block1");
この関数は、対応する、、、および値 (すべてパーセンテージ)div
を持つid = "block1"
属性を持つを追加します。また、作成した のサイズ変更と位置変更に必要なすべての情報を含むオブジェクトも返します。それぞれに異なるクラスを追加することで、この機能を簡単に拡張できます。とにかく、返されたオブジェクトを最終的にどのように利用するのでしょうか?width
height
left
bottom
div
div
addGraphic(graphicArr, PercentageBasedGraphic(25, 10, 4, 30, "block1"));
このaddGraphic
関数は、新しい各フローティング ボックスを配列に追加します。後で、ウィンドウのサイズ変更時にこの配列を反復処理して、定義したすべてのフローティング ボックスの位置を変更します。
正直に言うと、スーパーマリオのグラフィックのおかげで、この作業はとても楽しくなりました。