【发布时间】:2012-03-11 04:18:41
【问题描述】:
我目前正在使用zoom.js 放大我在 HTML 中绘制的一些 SVG 形状。考虑以下 sn-p:
<div id="circle">
<svg xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="50" fill="red" />
</svg>
</div>
使用事件处理程序:
$('#circle').bind('click', function(event) {
zoom.in({
element: document.querySelector( '#circle' )
});
event.stopPropagation();
});
放大后,SVG 形状的边框看起来很像素化,看起来 SVG 形状在缩放后没有被重新绘制。所有 DOM 元素(例如,用颜色填充的 DIV 或文本元素)似乎都会发生相同的行为。但是,当我查看上面链接的网站时,文本元素似乎在发生缩放后被重新绘制。我无法理解为什么在我的情况下它没有重绘。
编辑:我也尝试将 SVG 元素放在一个单独的文件中并包含它,如下所示:
<embed src="circle.svg" type="image/svg+xml">
使用这种方法也会出现同样的问题。
编辑 2:我尝试将元素的显示设置为“无”并在放大后重新设置为“块” - 一些帖子似乎暗示这会强制重绘 - 但元素在再次可见后仍然出现像素化:
$('#circle').css('display', 'none').css('display', 'block');
【问题讨论】:
标签: javascript jquery svg repaint redraw