2016-11-11 3 views
0

나는 그것에 대해 getBoundingClientRect 기능을 사용하여, 실제 "경로"크기를 얻으려고하지만, 파이어 폭스에서 나는 모든 것이 잘 다른 결과FireFox에서 svg 경로의 실제 크기를 감지하는 방법은 무엇입니까?

구글 크롬에서

를 얻을 :

1. 100px x 100px 
2. 100px x 100px 

그러나 파이어 폭스에서 :

1. 104px x 104px 
2. 100px x 100px 

stroke-width="1"에 4px가 추가 되었습니까? FF에서 빈 공간없이 실제 크기를 얻는 방법?

enter image description here

<div>With stroke-width="1"</div> 
 
<svg width="110" height="110"> 
 
    <path stroke-width="1" d="M0 0 L 100 0 L100 100 L 0 100 Z" fill="black" stroke="black"></path> 
 
</svg> 
 
<br> 
 
<br> 
 
<div>With stroke-width="0"</div> 
 
<svg width="110" height="110"> 
 
    <path stroke-width="0" d="M0 0 L 100 0 L100 100 L 0 100 Z" fill="black" stroke="black"></path> 
 
</svg>

P.S. 나는이 경로에 "텍스트 줄"을 추가하는 triyng입니다. getBoundingClientRect 함수를 사용하여 경로 위치 + 크기를 가져오고 해당 좌표에서 새 div를 만듭니다.

결과 :

enter image description here

+0

크롬 경로가 스트로크 만들고 각 가장자리에서 2 개 픽셀을 고집하지 100 × 100이다, 잘못이 104 X I가이 경로에 "텍스트 줄을"추가 triyng 해요 (104) –

+0

@RobertLongson . 'getBoundingClientRect' 함수로 경로 위치 + 크기를 얻습니다.이 좌표에서 새로운 div를 만듭니다. 결과 : http://s1.micp.ru/i6QC3.png – MixerOID

+0

너비가 104 픽셀 인 패스를 만든 다음 컨테이너 요소를 사용하여 100 픽셀로 클리핑하는 것이 문제입니다. 컨테이너가 아닌 경로를 측정 한 다음 컨테이너를 배치하려고합니다. –

답변

0

내가 FF에 대한 솔루션을했다. 단순하지만 작동합니다.

last_current.attr('stroke-width',0); // FireFox fix! 
let c_pos = last_current[0].getBoundingClientRect(); 
last_current.attr('stroke-width', 1); // FireFox fix! 
관련 문제