出于某种原因,当你用一个指向SVG def的填充拖动一个SVG矩形时,整个矩形变成黑色! (我认为浏览器重新绘制时出错...)
如果某人有修复或解决方法的线索,我们将非常感激
拖动下方时,它会变黑。
http://jsfiddle.net/d11k5bxg/5/
<div class="content">
<svg width="100%" height="100%">
<defs>
<pattern id="Triangle" width="5" patternUnits="userSpaceOnUse" height="5">
<rect fill-opacity="0.5" width="5" fill="#DDD" height="5"></rect>
<path stroke="#000" stroke-width="0.5" d="M0 5L5 0ZM6 4L4 6ZM-1 1L1 -1Z" stroke-opacity="0.2"></path>
</pattern>
</defs>
<g class="chart-content">
<g class="layer10">
<g class="bar-chart compare_items" transform="translate(0,5)">
<g class="bar-group">
<rect class="bar" height="165" width="120" fill="url(#Triangle)" ></rect>
</g>
</g>
</g>
</g>
</svg>
$("div").draggable({
helper: function (e) {
var draggedElement = $(e.currentTarget).clone(true);
return draggedElement;
}
});
(还开了一张Chromium票:https://code.google.com/p/chromium/issues/detail?id=428174)
答案 0 :(得分:0)
一般情况下,我怀疑您使用的拖放API尚未在SVG上进行测试。然而,正在发生的事情肯定是非常错误的,因为DOM仍然在拖动之后看起来很好但图形却没有。
问题似乎源于JQuery在拖动操作期间复制整个SVG的事实。这意味着暂时有两种不同的模式id="triangle"
(这是不好的)。我的猜测是矩形与该模式的第二个实例相关联,然后当该实例消失时,它不会重新附加到原始模式
如果你只是在一个SVG中拖放,你可以实现自己的拖动行为,只需复制矩形并使用SVG属性定位它,而不是复制整个SVG。
另一种解决方法是将所有<defs>
内容分离到屏幕上未显示的SVG中。这样,拖动可见SVG时就不会重复,并且避免重复的id值。