Graphics ARIA Guidebook
  • 사람을 위한 정보 그래픽 디자인
  • SVG 그래픽
    • SVG 디자인 도구
    • HTML 문서에 SVG 포함하기
    • SVG 레이아웃
    • SVG 기본 도형 그리기
    • SVG 패스 도형 그리기
    • SVG 컨테이너 요소
    • SVG 요소의 쌓이는 순서
    • SVG 하이퍼링크
    • SVG 텍스트
    • SVG 이미지
    • SVG 마스크
    • SVG 클립 패스
    • SVG 그레디언트
    • SVG 패턴
    • SVG 필터
    • SVG 접근성
    • SVG 아이콘 접근성
    • SVG 최적화
    • SVG 스프라이트
    • SVG 애니메이션
    • SVG 레퍼런스
  • 그래픽 접근성 모듈
    • 역할
      • 그래픽 문서(Document)
      • 그래픽 객체(Object)
      • 그래픽 심볼(Symbol)
      • 그외 다른 역할(Other Roles)
    • 상태와 속성
    • Graphics ARIA 실습 데모
Powered by GitBook
On this page
  • SVG 뷰포트(viewport)
  • SVG 뷰박스(viewBox)
  • PreserveAspectRatio
  1. SVG 그래픽

SVG 레이아웃

PreviousHTML 문서에 SVG 포함하기NextSVG 기본 도형 그리기

Last updated 6 years ago

SVG 코드가 화면에 렌더링 되고, 레이아웃 되는 영역에 대한 개념을 정리해봅니다.

  • SVG 캔버스(Canvas) 혹은 뷰포트(Viewport)

  • SVG 뷰박스(viewBox)

NOTE. 에 따르면 SVG 캔버스는 "SVG 콘텐츠가 렌더링 되는 공간"이라고 기술합니다. 캔버스는 공간 내에서 무한한 좌표 사용이 가능하지만, HTML 문서에서 렌더링은 설정된 캔버스의 너비, 높이 안에서만 이루어집니다. 이 공간을 SVG 뷰포트라고 부릅니다.

SVG 뷰포트(viewport)

뷰포트의 너비(width), 높이(height)를 설정하는 방법은 <img> 요소와 동일합니다.

HTML
<svg width="512" height="512">
  ...
</svg>

SVG 뷰박스(viewBox)

viewBox 속성은 값으로 min-x, min-y, width, height숫자 배열 값을 전달 받습니다. 이 값은 뷰포트에 맵핑 되는 공간을 명시 하며, preserveAspectRatio 속성과 관계를 가집니다.

HTML
<svg 
  width="512" height="512" 
  viewBox="0 0 512 512">
  ...
</svg>

WARNING. width, height 값으로 0, 음수는 허용하지 않습니다.

PreserveAspectRatio

SVG 뷰포트와 뷰박스 크기가 다를 경우, 그래픽의 가로:세로 비율을 유지하거나 크기를 확대/축소하는 스케일링 설정은 preserveAspectRatio 속성을 사용합니다. viewBox 속성과 관련된 속성으로 viewBox 속성이 설정되지 않으면 무시됩니다.

HTML
<svg
  width="512" height="512"
  viewBox="0 0 512 512"
  preserveAspectRatio="xMaxYMin meet">
  ...
</svg>

preserveAspectRatio 속성 값으로 설정 가능한 매개변수 유형은 다음과 같습니다.

  • <align>

  • <meetOrSlide> (옵션)

정렬 <align>

뷰박스와 뷰포트 크기가 다른 경우, SVG 그래픽 요소를 공간에 정렬하는 설정입니다.

매개변수

설명

none

가로:세로 비율을 보존하지 않습니다. (<meetOrSlide> 매개변수 값 무시)

xMinYMin

가로:세로 비율을 유지합니다. 뷰포트의 왼쪽 x, 상단 y 축 값에 위치 시킵니다.

xMidYMin

가로:세로 비율을 유지합니다. 뷰포트의 가운데 x, 상단 y 축 값에 위치 시킵니다.

xMaxYMin

가로:세로 비율을 유지합니다. 뷰포트의 오른쪽 x, 상단 y 축 값에 위치 시킵니다.

xMinYMid

가로:세로 비율을 유지합니다. 뷰포트의 왼쪽 x, 중앙 y 축 값에 위치 시킵니다.

xMidYMid

가로:세로 비율을 유지합니다. 뷰포트의 가운데 x, 중앙 y 축 값에 위치 시킵니다.

xMaxYMid

가로:세로 비율을 유지합니다. 뷰포트의 오른쪽 x, 중앙 y 축 값에 위치 시킵니다.

xMinYMax

가로:세로 비율을 유지합니다. 뷰포트의 왼쪽 x, 하단 y 축 값에 위치 시킵니다.

xMidYMax

가로:세로 비율을 유지합니다. 뷰포트의 가운데 x, 하단 y 축 값에 위치 시킵니다.

xMaxYMax

가로:세로 비율을 유지합니다. 뷰포트의 오른쪽 x, 하단 y 축 값에 위치 시킵니다.

적당히 채우거나 자름 <meetOrSlice>

<meetOrSlice>매개 변수는 <align> 뒤에 공백으로 구분되며 설정 가능한 옵션 사항으로 선택사항(옵션) 입니다.

매개변수

설명

meet

가로:세로 비율을 유지합니다.

뷰박스와 뷰포트 크기가 다를 경우, 뷰박스를 뷰포트 안에 모두 표시합니다.

slice

가로:세로 비율을 유지합니다.

뷰박스와 뷰포트 크기가 다를 경우, 뷰박스를 잘라 화면에 표시합니다

아래 이미지와 각 매개변수를 살펴보면 각각의 설정을 이해하는데 도움이 될 겁니다.

SVG 1.1 표준 문서 "좌표 시스템"
preserveAspectRatio 속성에 따른 그래픽 정렬 / meet, slice