根据窗口大小调整页面元素的大小

3

问题: 我的客户希望我为他的产品创建一个启动网页,使得在任何浏览器或窗口尺寸下都不会出现滚动条。

疑问:这是否可以使用CSS和Javascript实现?

初步诊断:这可能与thisthis有些相似,但不同之处在于,我想按特定比例调整每个元素的尺寸,而不仅仅是调整父DIV的高度。

因此,陈述如下:我需要根据(当前窗口大小和参考窗口大小之间的比率)更改每个元素(图像、div、文本...全部)的尺寸。也许Javascript可以解决这个问题?

问题:如何实现这一点?

1个回答

3

只需将<html><body>heightwidth设置为100%overflow设置为hidden,并在元素的lefttopwidthheight中使用百分比即可。

<!DOCTYPE html>
<html>
<head>
  <meta charset=UTF-8>
  <title>Proportional resizing</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }

    html, body {
      height: 100%;
      overflow: hidden;
    }

    div {
      position: absolute;
      left: 30%;
      top: 20%;
      width: 40%;
      height: 30%;
      background-color: #ddd;
    }
  </style>
</head>
<body>
  <div>divthing</div>
</body>
</html>

这些百分比是相对于包含块 containing block 的,而在本例中,该包含块是 <body>

更新:回答另一个问题:目前几乎不支持背景图片的缩放。当 CSS 3 background-size 属性普及时(请参见此表),事情会更容易。现在,请查看这个答案(是的,这意味着:更多标记)。


这肯定是可能的,但它会考虑到我想要显示整个DIV的背景吗?因为在小窗口上,背景会被截断,在大窗口上它会重复... :) - OrangeRind
另外,由于我已经对大部分页面进行了CSS处理,在客户提出这个特殊请求之前,所以我希望存在一种解决方案,不需要让我再次更改CSS。;) ;) - OrangeRind
@Orange - 你的意思是,你想要将背景缩放到整个 div 的大小吗? - Marcel Korpel
@Orange - 关于你的第二条评论:不,你几乎不能在不改变你的CSS和HTML结构的情况下做到这一点。这种呈现方式与标记和CSS密切相关。唯一不改变你的HTML或至少你的CSS来做到这一点的方法,确实是使用JavaScript。但你真的,真的不想用这种方式来做这件事,你不应该在JavaScript中纠缠所有元素的位置(而且JavaScript可能会在访问者的浏览器中被关闭或阻止)。 - Marcel Korpel
@Orange - 虽然我理解你的立场,你不总能改善事情,但请考虑这一点:“在我的客户提出这个特殊请求之前”和“时间很短”。由于这是一个“特殊请求”,似乎在你们做出有关网站的决定时并不知道,因此你有足够的理由要求更多的时间来重新设计它。 - Marcel Korpel
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接