【问题标题】:Can't resize a 100% width image down when the browser gets smaller当浏览器变小时,无法缩小 100% 宽度的图像
【发布时间】:2011-08-11 23:26:33
【问题描述】:

tl;dr:当图像占据 100% 的宽度和高度并且用户缩小浏览器的大小时,文档的宽度和高度不会改变,因为图像会阻止它缩小。


我有一个动态绘制的 SVG 图像(由 RaphaelJS 创建),它占据了 100% 的屏幕宽度和高度。它占用的空间包括不可见但可以通过滚动看到的空间(因此它不仅仅是视口的宽度和高度,它可能超出此范围)。我需要将 SVG 画布的大小调整为文档的大小,这样当用户调整浏览器的大小时,滚动条不会只出现在图像上,并且当用户调整大小时,图像不会被截断浏览器要大。

调整大小工作正常,但调整大小时出现故障。当用户从小到大调整大小时,这可以正常工作,并且 SVG 会展开以适合窗口,但是当用户从大到小调整大小时,实际图像阻止文档变小,因为它是文件的一部分。其效果是图像会增大但不会缩小,从而导致仅针对图像的滚动条,即使实际内容都适合屏幕。

这是我目前计算 SVG 画布大小的方法:

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

function getDocWidth() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
        Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
        Math.max(D.body.clientWidth, D.documentElement.clientWidth)
    );
}

那么我怎样才能让图像不让文档变小呢?基本上 getDocWidth 和 -Height 在计算文档的宽度和高度时需要忽略图像的尺寸。

【问题讨论】:

  • 不,我没有问题将我的扩展到 100%。唯一的问题是,当浏览器窗口变小时,document.body 的宽高并没有改变。
  • @Phrogz 也可以,如果你只指定 width: 100%;高度:100%;如果页面的内容超出视口的底部边缘并且用户向下滚动,则 svg 将不会被绘制到视口的底部,因此图像将被截断。

标签: browser svg resize image-resizing sizetofit


【解决方案1】:

如果它是您想要宽度的窗口而不是文档的当前宽度(其中包含您的图像,使其更宽),为什么不只是use that

【讨论】:

  • 不完全。我确实想要文档的宽度。但我不希望图像使文档的大小与不存在图像时的行为不同。
  • @ChrisFetch 但是文档的宽度将始终是包含您的图像的宽度,因此,正如您所发现的,它永远不会变小。获取没有图像的文档大小的唯一另一种方法是从中取出图像(例如display: none 或其他东西)。
  • @robertc 是的,这就是问题所在。我需要: 1. 视口的宽度或内容是否适合其中或 2. 如果内容超出视口,则为内容的宽度。但在任何情况下,宽度和高度都需要像不存在图像一样。
  • @ChrisFetch 然后,按照我的建议,在测量之前删除图像。
  • @robertc 移除文档后,文档渲染速度不够快,无法调整屏幕。
猜你喜欢
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
相关资源
最近更新 更多