SVG 포지셔닝


203

SVG로 플레이하고 있으며 위치 지정에 몇 가지 문제가 있습니다. g그룹 태그에 포함 된 일련의 모양이 있습니다 . 컨테이너처럼 사용하기를 원했기 때문에 x 위치를 설정하면 해당 그룹의 모든 요소가 이동합니다. 그러나 그것은 가능하지 않은 것 같습니다.

  1. 대부분의 사람들은 이동하려는 요소 그룹을 어떻게 배치합니까?
  2. 상대 위치 개념이 있습니까? 예를 들어 부모와 관련

답변:


276

g 요소의 모든 것은 현재 변환 행렬을 기준으로 배치됩니다.

내용을 옮기려면 g 요소에 변환을 넣으십시오.

<g transform="translate(20,2.5) rotate(10)">
    <rect x="0" y="0" width="60" height="10"/>
</g>

링크 : 에서 SVG 1.1 사양


73

이전 답변에 대한 더 짧은 대안이 있습니다. SVG 요소는 svg 요소를 중첩하여 그룹화 할 수도 있습니다.

<svg xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <svg x="10">
    <rect x="10" y="10" height="100" width="100" style="stroke:#ff0000;fill: #0000ff"/>
  </svg>
  <svg x="200">
    <rect x="10" y="10" height="100" width="100" style="stroke:#009900;fill: #00cc00"/>
  </svg>
</svg>

두 사각형은 동일하지만 (색상 제외) 부모 svg 요소의 x 값이 다릅니다.

http://tutorials.jenkov.com/svg/svg-element.html을 참조하십시오 .


33
SVG 요소는 그룹화 요소 일 수도 있습니다. SVG 요소는 기본적으로 클리핑을 구현한다고 지적하고 싶습니다 (적어도 Chrome에서는 현재). 이는 오버플로가 보이지 않음을 의미합니다. "g"요소와 달리 overflow = "visible"을 설정하면 비즈니스에 도움이됩니다.
bladnman

1
백분율로 요소 그룹을 번역하려는 경우 유용합니다. stackoverflow.com/a/17103928/470117
mems

14
g 대신 svg를 사용하는 데 단점이 있습니까?
grabantot

34

다른 의견에서 언급했듯이 요소 의 transform속성 g은 원하는 것입니다. 주위 transform="translate(x,y)"를 움직이고 의지 g내에서 물건 을 이동하는 데 사용 g합니다 g.


22

여러 SVG 모양을 그룹화하고 그룹을 배치하는 두 가지 방법이 있습니다.

Aaron이 쓴 것처럼 속성과 <g>함께 처음으로 사용 transform합니다. 그러나 당신은 단지에 x속성을 사용할 수 없습니다<g> 요소에 .

다른 방법은 중첩 <svg>요소 를 사용하는 것입니다 .

<svg id="parent">
   <svg id="group1" x="10">
      <!-- some shapes -->
   </svg>
</svg>

이런 식으로 # group1 svg는 #parent에 중첩되고 x=10는 부모 svg에 상대적입니다. 그러나 요소에 transform속성을 사용할 수는 없습니다 <svg>. 이는 요소와 상당히 반대입니다 <g>.


13
왜 다른 모든 svg 태그에 <g>에 ax 및 y 속성이 없는가? 그것은, 그 위치는 항상 <SVG> ... 상대적인 위치에서 절대 수단
reuns

2
오픈 소스위원회는 이와 같습니다.
Muhammad Umer

동의합니다 ... 잘못된 디자인 선택 인 것 같습니다. 단순히 그룹의 X- 변환을 증가시키기 위해서는 잠재적으로 복잡한 문자열을 작성하고 다른 곳에 다른 변수를 저장해야합니다
속눈썹

9
@ user1952009 : SVG에 들어간 디자인 선택을 실제로 이해하지 못할 가능성이 있습니다.
Paul D. Waite

3
<g>는 그룹화입니다. 자체적으로 모양을 나타내지 않으므로 위치 또는 크기를 갖는 것은 의미가 없습니다. 그래도 "이 변환을 전체 그룹에 적용"처럼 읽을 수 있는 변환 속성 을 갖는 것이 좋습니다.
AlQafir
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.