的解決方案是使用一個包含元素和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樣式,因爲它們按照你的網站的目的工作,容器的高度增長以適應其中的圖像。
我不完全確定你想要對頁面上的固定像素黑色塊做什麼,所以我把它保持原樣。
編輯:我認真檢查了這個項目,做了一個對象工廠來創建新圖形並更新了頁面的代碼。這個解決方案几乎不需要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
函數將每一個新的浮箱爲數組。稍後,我們通過調整窗口大小來遍歷該數組,以重新定位我們定義的所有浮動框。
我會誠實地告訴你,超級馬里奧的圖形使這個工作很有趣。
你可以在jsfiddle.net上重現你的問題嗎? – starowere 2013-02-21 09:58:14
@starowere,只是用JSFiddle更新了我的問題。 – dandoen 2013-02-21 12:22:52