的解决方案是使用一个包含元素和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