SVG 绝对单位不正确
SVG absolute units incorrect
我正在尝试在移动应用程序中创建一个标尺,无论 iPhone 或 Android 的型号如何,它都能正确缩放。我认为最简单的方法是创建一个具有绝对单位的 SVG 元素。但是,这在我的浏览器或 phone 上都无法正确缩放(在我的 Macbook pro 上是正确大小的 85%,在我的 android phone 上是正确大小的 2/3)。我对默认 SVG DPI、绝对单位、转换绝对值、缩放比例等进行了大量谷歌搜索,但没有发现任何有用的东西。
这里是简化的代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Ruler</title>
</head>
<body>
<svg x="0" y="0" width="6cm" height="10cm" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g fill="none" stroke="none">
<line x1="0" y1="0" x2="0" y2="10cm" id="backboard" stroke="#000000" stroke-width="3" />
</g>
</svg>
</body>
</html>
任何帮助都将不胜感激。谢谢
没有 'default SVG DPI' - DPI 是屏幕的一个值 - 它在不同设备之间是不一样的,尤其是在移动设备之间。
假设您知道屏幕的 DPI,像素到毫米的公式是这样的:
mm = (pixels * 25.4) / DPI
换句话说,除非您知道屏幕的 DPI 值,否则您无法获得真实世界的单位测量值。
遗憾的是,物理单位与任何现实世界的基础无关,例如实际屏幕 DPI。
它们实际上是基于 "standard" CSS DPI 96(即 96 "CSS pixels")。我认为 CSS 规范说浏览器可以自由地将 DPI 调整为其他值,例如,“1in”实际上是一英寸。但实际上 none 他们很麻烦。
因此,不幸的是,您将需要建立设备的真实 DPI 并适当地缩放您的坐标值。
我正在尝试在移动应用程序中创建一个标尺,无论 iPhone 或 Android 的型号如何,它都能正确缩放。我认为最简单的方法是创建一个具有绝对单位的 SVG 元素。但是,这在我的浏览器或 phone 上都无法正确缩放(在我的 Macbook pro 上是正确大小的 85%,在我的 android phone 上是正确大小的 2/3)。我对默认 SVG DPI、绝对单位、转换绝对值、缩放比例等进行了大量谷歌搜索,但没有发现任何有用的东西。
这里是简化的代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Ruler</title>
</head>
<body>
<svg x="0" y="0" width="6cm" height="10cm" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g fill="none" stroke="none">
<line x1="0" y1="0" x2="0" y2="10cm" id="backboard" stroke="#000000" stroke-width="3" />
</g>
</svg>
</body>
</html>
任何帮助都将不胜感激。谢谢
没有 'default SVG DPI' - DPI 是屏幕的一个值 - 它在不同设备之间是不一样的,尤其是在移动设备之间。
假设您知道屏幕的 DPI,像素到毫米的公式是这样的:
mm = (pixels * 25.4) / DPI
换句话说,除非您知道屏幕的 DPI 值,否则您无法获得真实世界的单位测量值。
遗憾的是,物理单位与任何现实世界的基础无关,例如实际屏幕 DPI。
它们实际上是基于 "standard" CSS DPI 96(即 96 "CSS pixels")。我认为 CSS 规范说浏览器可以自由地将 DPI 调整为其他值,例如,“1in”实际上是一英寸。但实际上 none 他们很麻烦。
因此,不幸的是,您将需要建立设备的真实 DPI 并适当地缩放您的坐标值。