【发布时间】:2012-04-19 05:01:26
【问题描述】:
问题:Safari 不玩球,而是使用滚动条渲染我的 SVG 图像。
问题的改进版本:“我如何在 Safari 中根据纵横比计算高度?” (感谢 Phrogz)
相关代码:
SVG 文件
viewBox="0 0 800 800"
(未指定高度或宽度)
.objectwrapper {
max-width: 600px;
min-width: 150px;
margin-right: auto;
margin-left: auto;
}
.objectdiv {
max-width: 60%;
margin-right: auto;
margin-left: auto;
display: block;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5" />
<meta http-equiv="expires" content="0" />
</head>
<body>
<div class="objectwrapper">
<div class="objectdiv">
<object type="image/svg+xml" data="question0optimize1.svg" width="100%" height="100%">
</object>
</div>
</div>
</body>
</html>
在我尝试过的所有其他浏览器中,通过更改窗口大小和 ctrl + 缩放,我得到了很好的平滑缩放。但是 Safari 为我提供了一个较小的 svg 和滚动条。我做错了什么?
【问题讨论】:
-
请注意,您在 HTML 元素上声明了一个 XHTML 命名空间,但是一个 HTML4 DOCTYPE。 (而且您的内容显然不是 XHTML,正如未封闭的
meta标签所示。) -
@Phrogz 谢谢,我会更新文档类型。为了查看这个问题的实际效果,它会在我查看它时出现(如果人们想看到最终的源代码,这个站点将来应该有其他 svg)www.gamemorize.com
-
W/H 设置为 100% 以确保所有 svg 都已呈现,但我现在已将其删除,它没有任何区别。我希望对象填充其分配的 CSS 宽度的 100%,然后保持成比例以给出高度 = 宽度。 Safari 似乎分配了一个固定的高度。注意窗口缩小/放大时滚动条的高度。
-
好的,那么这是一个单独的问题。 “如何让
<object>填充设置的宽度并根据 Safari 中的纵横比计算高度?” 如果您查看我的“固定”版本(设置宽度但没有高度)你会看到它在 FF 和 Chrome 中适当地调整了大小。 -
根据我的示例 XHTML,指定宽度而不是高度可能是您想要做的。要解决 Safari 的问题(如果您实际上没有提出问题并找到更好的答案),我只需添加一些 JavaScript 以保持高度与宽度相同(考虑到您的 1:1 纵横比)。