解决方案是使用包含元素和 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
andwidth
与背景图像成比例,但它们不会随着页面大小调整或仅使用 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"
属性的 a,以及相应width
的 、height
、left
和bottom
值(均以百分比表示)。它还返回一个对象,其中包含调整div
刚刚创建的大小和重新定位所需的所有信息。您可以通过向每个div
. 无论如何,我们最终如何使用我们返回的对象?
addGraphic(graphicArr, PercentageBasedGraphic(25, 10, 4, 30, "block1"));
该addGraphic
函数将每个新的浮动框添加到一个数组中。稍后,我们在调整窗口大小时遍历这个数组以重新定位我们定义的所有浮动框。
老实说,超级马里奥的画面让这一切变得很有趣。