这很容易,因为大多数百分比值都是相对于视口的,所以可以使用普通的HTML/CSS完成。
你只需要在CSS中为每个对象定义一些宽度和高度的相对值,例如width:30%; height:30%;
但是你不能使用绝对值来放置对象,否则它们就会移动。所以你还需要使用像left:30%; top:10%;
这样的百分比,同时不要忘记设置position:relative
更进一步,所有容器div的marging和padding(甚至可能包括边框;)也需要是相对或零,否则对象也会移动...
这是一个带有图像的工作示例(你也可以定义另一个具有百分比大小的div而不是img):
<body style="margin:0px; border:0px; padding:0px">
<div style="margin:5%; border:0px; padding:5%">
<img src="my picture.jpg" style="width:30%; height:30%; position:relative; left:30%; top:10%;">
<div>
</body>
(请注意,图片的百分比始终相对于视口,并与图片大小无关)
更新:
我刚刚制作了一些漂亮的列:
<div style="margin:0px; border:0px; padding:2%; width:30%; position:absolute; top:10%; left:5%;">
<div style="margin:0px; border:3px double #000000; padding:2%; width:90%;">aaa
</div>
</div>
<div style="margin:0px; border:0px; padding:2%; width:30%; position:absolute; top:10%; left:35%;">
<div style="margin:0px; border:3px double #000000; padding:2%; width:90%;">bbb
</div>
</div>
<div style="margin:0px; border:0px; padding:2%; width:30%; position:absolute; top:10%; left:65%;">
<div style="margin:0px; border:3px double #000000; padding:2%; width:90%;">ccc
</div>
</div>
在这种情况下,高度取决于内容。在生产环境中,您还应该删除边框,因为它们会缩放。
如果您还想拥有始终相同大小的文本,则需要使用一些JavaScript函数,因为那些新的CSS3相对字体并不真正有效。
更新2:
现在我知道你的意思了:由于元素本身的大小控制,您想要使用绝对值来工作。
因此,您需要在服务器上计算所需的相对值,并将它们发送到客户端。但是,这仅适用于JS,因为您需要从浏览器获取浏览器分辨率信息,并将它们发送到XMLHttpRequest以发送到服务器。然后,您可能会使用innerHTML构建标题,这是最好的方法(“Facebook方式”)。而且,由于您使用相对值,所有问题都得到解决...而且图形甚至比任何其他JS解决方案更快。
但是,您还需要一个解决方案,以便在静态加载时禁用Javascript...然后它仍然会缩放,这是无法防止的。但是,如果有其他方法可以通过JS以外的方式获取浏览器视口,请告诉我。;)
附言:由于我在这篇文章中得到了很多负评,所以任何来自负评者的评论都是非常感激的,谢谢。
viewport
属性应用于单独的文档——想象一下带有两个iframes的“容器”html,一个用于“杂项”,另一个用于“内容”。 - Oleg