Raphael JS中的Rect在所有面上的笔划宽度都不相同

时间:2019-11-26 03:04:04

标签: javascript svg raphael

在此jsFiddle中,我有一张带有矩形的Raphael JS论文。如果放大,将会看到拉斐尔矩形的底线和右线更宽:

enter image description here

如何将此矩形的所有侧面固定为相同的宽度?我在Chrome,IE和Firefox中遇到此问题。

var w = 500, h = 120;
var paper = Raphael("the_canvas", w, h); 

paper.rect(0,0,90,20)
  .attr({'stroke-dasharray': '-', 'stroke': '#303030', 'stroke-width': 1 });

1 个答案:

答案 0 :(得分:1)

它们看起来不同的原因实际上是由于将默认SVG css属性overflow设置为hidden的原因。例如,如果添加以下规则:

svg {
  overflow: visible !important;
}

两个矩形看起来都一样,但是看起来像拉斐尔矩形的下部。

要获得由两个矩形上的标准SVG节点上的oveflow属性的裁剪引起的松脆性,可以使用以下CSS规则:

rect {
  shape-rendering: crispEdges;
}

与第一条规则结合使用会产生接近预期结果的结果。

这是您的小提琴的叉子:

http://jsfiddle.net/saxpnz6b/

和摘要:

var w = 500, h = 120;
var paper = Raphael("the_canvas", w, h); 

paper.rect(0,0,90,20)
  .attr({'stroke-dasharray': '-', 'stroke': '#303030' });
#div1 {
  margin: 20px;
} 

svg {
  overflow: visible !important;
}

rect {
  shape-rendering: crispEdges;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.3.0/raphael.min.js"></script>
<div id="div1">
  <svg width="90" height="20">
     <rect width="90" 
           height="20" 
           style="fill:#ffffff;stroke-dasharray: 3,1;stroke-width:1; stroke: #303030" shape-rendering="crispEdges"/>
   </svg>

   <div id="the_canvas"></div>

</div>