2015-01-22 2 views
0

그래서 포트폴리오 페이지를 만들려고했는데 맞춤형을 사용하고 싶습니다. 그래서 div를 사용하는 대신, 배경이 img 인 svg 다각형 모양을 사용하고 있습니다. 이것은 svg를 다루는 첫 번째 시간이며, 하루 종일 문제를 해결하려고합니다.올바르게 svg 폴리곤을 정렬하십시오.

기본적으로 문제는 왼쪽 하단의 경계선과 오른쪽 위의 경계가 내 쐐기의 가장자리를 자르는 것입니다. 다각형의 너비/높이를 줄이려고했지만 제대로 작동하지 않습니다. http://jsfiddle.net/1rmd2otz/1/

<div class="sv-img"> 
    <svg class="svg" viewBox="0 0 910 500" > 
     <defs> 
      <pattern id="img1" patternUnits="userSpaceOnUse" width="900" height="490"> 
       <image xlink:href="img/service/website.jpg" x="0" y="0" width="890" height="480" /> 
      </pattern> 
     </defs> 
     <polygon points="96.729,27.124 0,490.109 867.032,420.878 900,0" fill="url(#img1)"/> 
    </svg> 
</div> 

그래서, 누군가가 나를 도울 수 : 작거나 절단 더욱 그것을 swuare 모양 만들기에 그것은

이 작업 jsfiddle 또한 내 HTML 코드입니다 .. 유지?

+0

실제로 달성하고자하는 것이 분명하지 않습니다. –

+0

왼쪽 하단과 오른쪽 상단 테두리에는 컷이 있습니다. 모양이 제대로 만들어지지 않습니다 .. 이것은 내가 만든 svg입니다. http://i.imgur.com/qBJ45aK.png 볼 수있다, svg의 parte가 자르고있다. 이것은 나란히 비교이다 : http://i.imgur.com/AqlJ3z7.png – celsomtrindade

답변

0

문제가 다각형 점에있는 것 같습니다. 변경 ...

<polygon points="96.729,27.124 0,490.109 867.032,420.878 900,0" fill="url(#img1)"/> 

으로 ...

<polygon points="96.729,27.124 10,470.109 867.032,420.878 890,10" fill="url(#img1)"/> 

jsFiddle : http://jsfiddle.net/rfornal/1rmd2otz/3/

이 원하는,하지만 당신은 올바른 방향으로 움직이고해야하는지 정확히하지 않을 수 있습니다. 당신은 다른 측면에서 이것을 할 수 있고 SVG viewBox 값을 변경할 수 있습니다 (확대).

+0

좋아. 나는 가치들과 놀려고 노력할 것이다. 무슨 일이 일어나는가 (나는 다른 모양을 가지고 있는데, 모두 거의 같지만 약간의 변화가있다). 그런데, 내가 svg로 시작할 수있는 끈적한 튜토리얼을 알고 있습니까? 내가 찾은 모든 것은 매우 복잡한 것입니다 (설명없이 결과와 함께 코드를 보여줌). 또는 각 기능을 개별 기능으로 설명합니다. 그래서 어떻게 끝날지 알 수 없습니다. 예를 들어, 그 가치가 무엇을 의미하는지, x 값이 무엇인지 등을 이해하고 싶습니다. 감사합니다. – celsomtrindade

+0

제가 좋은 지침서를 알기를 바랄뿐입니다 ... 제가 발견 한 대부분은 너무 일반적이거나 자세한 방법입니다. 제가 배운 대부분은 시행 착오였습니다. – rfornal

+0

그래,하지만 어쨌든 고마워, 내가 말했듯이, 나는 숫자로 놀고 있었고, 나는 그것에 더 많은 것을 얻기 시작했다! = D – celsomtrindade

1

좋아요. 몇 가지 문제가 있습니다. 첫 번째 작업부터 시작하여 작업을 시작하겠습니다.

처음에는 다각형이 900x490이지만 크기가 890x480 인 패턴을 지정하고 있습니다. 따라서 이것이 여러분이 모서리를 "손질"하고있는 이유 중 일부입니다. 패턴이 다각형의 전체 너비와 높이를 확장하지 않습니다.

우리가 해결하면 거의 다가옵니다. 다각형 윤곽선을보다 선명하게 보여주기 위해 빨간 선을 추가했습니다.

Here's a demo.

그것은 여전히 ​​매우 옳지 않다. 상단과 하단에는 여전히 간격이 거의 없습니다. 그 이유는 다각형/패턴 (900/490 ~ = 1.84)의 종횡비가 이미지의 종횡비 (570/300 = 1.9)와 같지 않기 때문입니다. 렌더러가 수행하는 작업은 동일한 가로 세로 비율을 유지하면서 <image>에 지정된 크기에 맞게 500x370 이미지의 크기를 조정하는 것입니다. 결과적으로 900x490 패턴에서 세로 가운데에 900x473.7 (473.7 = 900/1.9)의 이미지가 생성됩니다. 그것은 위쪽과 아래쪽에 약 6 픽셀을 남깁니다.

해결할 수있는 몇 가지 방법이 있습니다. 분명히 가로 세로 비율이 정확히 일치하도록 이미지 나 다각형을 변경하는 것이 좋습니다.

이 문제를 해결하는 또 다른 방법은 이미지의 크기가 조정되는 방식을 변경하는 것입니다. 기본적으로 이미지는 지정한 너비와 높이에 맞게 크기가 조정되지만 해당 크기를 벗어나지는 않습니다. 이것은 때때로 우리가보고있는 것처럼 틈이 남아 있음을 의미합니다. 간격을 두지 않고 최대 치수에 맞게 확장되도록 지시하는 다른 크기 조정 모드로 변경할 수 있습니다. 이미지에 preserveAspectRatio="xMidYMid slice"을 설정하면됩니다.

<image xlink:href="[...snip...]" 
     x="0" y="0" width="900" height="490" preserveAspectRatio="xMidYMid slice"/> 

Here's a demo of that.

당신은 다각형이 지금 완전히 충전되어 있음을 알 수

.

You can read more about preserveAspectRatio here.

+0

정확히 내가 무엇을 찾고 있었는지. 귀하의 설명과 참조 주셔서 감사합니다! 나는 svg에 더 들어갈 수 있기를 바랍니다. 웹 사이트를보다 역동적으로 구축하는 좋은 방법 인 것 같습니다. = D – celsomtrindade

관련 문제