Html SVG在Firefox中使用<;img>;标签
我有以下SVG文件:Html SVG在Firefox中使用<;img>;标签,html,firefox,svg,Html,Firefox,Svg,我有以下SVG文件: <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="19"> <rect x="0" y="0" width="100%" height="100%" fill="black" /> <text font-size="13" font
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="100%" height="19">
<rect x="0" y="0" width="100%" height="100%" fill="black" />
<text font-size="13" font-family="monospace" x="3" y="13" fill="#b2b2b2">Hello world</text>
</svg>
你好,世界
如果我直接在Firefox中查看该文件,它看起来很好:
如果我使用
我想做的是,黑色背景的比例,以涵盖整个宽度,而文字仍然是未征服。我尝试了我能想到的
viewBox
和preserveSpectratio
的所有排列,但它们似乎都没有达到预期效果。Chrome似乎显示得很好。在我看来,这应该被标记为bug。似乎发生的情况是,无论是在使用浏览器缩放功能时,还是在由于高DPI屏幕而预定义的缩放时,百分比或视口相对(vw、vh)值保持在相同的计算像素大小,而px和其他单位值与缩放值相乘。到目前为止,一切顺利
在Firefox for
中,宽度和高度值总是会导致其内容的缩放不均匀,无法保留纵横比,即使对于通常根据PreserveSpectratio
规则适合自己在视口中的SVG内容也是如此
我认为有两种方法可以解决这个问题;两者都需要明确设置高度。请注意,我已经通过使用浏览器缩放功能在常规屏幕上进行了测试。我希望它在高DPI屏幕上也能起到同样的作用
- 使用包含SVG
元素的内联
标记将SVG图像嵌入HTML页面:<html> <body> <img src="screenshot.svg" width="100%"> </body> </html>
- 将SVG用作背景图像:
<html> <body style="margin:0"> <svg width="100%" height="19px"> <image width="100%" height="100%" href="screenshot.svg" /> </svg> </body> </html>
px
单位而不是pt
,会发生什么?@ccprog问得好,但似乎没有任何效果。为了简化问题,我将所有内容转换为像素。我无法再现效果(在Windows/63和Linux/60esr上),但我可以看到Windows上抗锯齿计算的最小差异,具体取决于使用的字体。浏览器使用什么字体?这里有一个有趣的观察结果:如果我使用Ctrl+来放大屏幕上的显示,宽度和高度之间的缩放是不均匀的。你使用的是高密度屏幕,所以px值会被预先乘以吗?别忘了从html正文中删除边距。
<html>
<body style="margin:0">
<div style="background:url(screenshot.svg) left no-repeat;width:100%;height:19px;">
</body>
</html>