CSS 도형 시작하기

맞춤 경로를 중심으로 콘텐츠 래핑

Razvan Caliman
Razvan Caliman

오랫동안 웹 디자이너는 직사각형의 제약 조건 내에서 만들어야 했습니다. 대부분의 웹 콘텐츠는 여전히 단순한 상자에 갇혀 있습니다. 직사각형이 아닌 레이아웃을 사용하는 창의적 시도는 대부분 좌절감으로 끝나기 때문입니다. Chrome 37부터 사용할 수 있는 CSS 도형의 도입으로 이러한 변화가 예정되어 있습니다. CSS 도형을 사용하면 웹 디자이너가 원, 타원 및 다각형과 같은 맞춤형 경로 주위에 콘텐츠를 래핑할 수 있으므로 직사각형의 제약에서 벗어날 수 있습니다.

도형은 수동으로 정의하거나 이미지에서 추론할 수 있습니다.

아주 간단한 예를 살펴보겠습니다.

아마도 저처럼 단순한 이미지를 떠다니면서 투명한 부분이 있는 이미지를 떠올렸을 때 콘텐츠가 공백을 채우고 래핑하기를 기대했지만, 요소 주위에 유지되는 직사각형 랩 모양 때문에 실망스러웠을 것입니다. CSS Shapes를 사용하여 이 문제를 해결할 수 있습니다.

이미지에서 도형 추출
<img class="element" src="image.png" />
<p>Lorem ipsum…</p>

<style>
.element{
  shape-outside: url(image.png);
  shape-image-threshold: 0.5;
  float: left;
}
</style>

shape-outside: url(image.png) CSS 선언은 브라우저에서 도형을 추출하도록 지시합니다.

shape-image-threshold 속성은 도형을 만드는 데 사용할 픽셀의 최소 불투명도 수준을 정의합니다. 값은 0.0 (완전 투명)에서 1.0 (완전 불투명) 사이의 범위 내에 있어야 합니다. 따라서 shape-image-threshold: 0.5은 불투명도가 50% 이상인 픽셀만 도형을 만드는 데 사용된다는 것을 의미합니다.

여기서는 float 속성이 핵심입니다. shape-outside 속성은 콘텐츠가 래핑되는 주변 영역의 모양을 정의하지만 플로팅을 사용하지 않으면 도형의 효과를 볼 수 없습니다.

요소에는 float 값의 반대쪽에 부동 소수점 영역이 있습니다. 예를 들어 커피 잔 이미지가 있는 요소가 왼쪽으로 떠 있으면 컵의 오른쪽에 플로팅 영역이 생성됩니다. 양쪽에 간격이 있는 이미지를 만들 수 있더라도 콘텐츠는 플로팅 속성으로 지정된 반대쪽(왼쪽 또는 오른쪽)의 도형만 래핑합니다.

향후 도입 CSS 제외로 플로팅되지 않은 요소에 shape-outside를 사용할 수 있습니다.

수동으로 도형 만들기

이미지에서 도형을 추출하는 것 외에도 수동으로 코딩할 수도 있습니다. circle(), ellipse(), inset(), polygon() 등 몇 가지 기능 값 중에서 선택하여 도형을 만들 수 있습니다. 각 도형 함수는 좌표 집합을 취하며 좌표계를 설정하는 참조 상자와 쌍을 이룹니다. 참조 상자에 관해 잠시 후에 자세히 알아보겠습니다.

서클() 함수

서클() 도형 값을 표현한 그림

원 도형 값의 전체 표기법은 circle(r at cx cy)입니다. 여기서 r는 원의 반지름이고 cxcy는 X축과 Y축에 있는 원 중심의 좌표입니다. 원 중심의 좌표는 선택사항입니다. 이를 생략하면 요소의 중심 (대각선의 교차점)이 기본값으로 사용됩니다.

.element{
  shape-outside: circle(50%);
  width: 300px;
  height: 300px;
  float: left;
}

위의 예에서 콘텐츠는 원형 경로 외부를 래핑합니다. 단일 인수 50%는 원의 반지름을 지정합니다. 이 경우에는 요소의 너비 또는 높이의 절반에 해당합니다. 요소의 크기를 변경하면 원 도형의 반경에 영향을 줍니다. CSS 도형이 어떻게 반응할 수 있는지 보여주는 기본적인 예입니다.

계속 진행하기 전에 한 가지만 간단히 말씀드리겠습니다. CSS 도형은 요소 주변의 플로팅 영역의 모양에만 영향을 미친다는 것입니다. 요소에 배경이 있으면 도형에 의해 잘리지 않습니다. 이 효과를 얻으려면 CSS 마스킹의 속성(clip-path 또는 mask-image)을 사용해야 합니다. clip-path 속성은 CSS 도형과 동일한 표기법을 따르므로 값을 재사용할 수 있으므로 매우 유용합니다.

`circle()` 도형 + 클립 경로 삽화

이 문서의 일러스트레이션에서는 클리핑을 사용하여 도형을 강조 표시하고 효과를 이해하는 데 도움을 줍니다.

원 도형으로 돌아갑니다.

원 반지름의 백분율을 사용하는 경우 값은 실제로는 약간 더 복잡한 수식(예: sqrt(width^2 + height^2) / sqrt(2))으로 계산됩니다. 이것을 이해하면 요소의 치수가 같지 않으면 결과적으로 원의 모양이 어떻게 될지 상상하는 데 도움이 되기 때문입니다.

px, em, rem, vw, vh 등의 모든 CSS 단위 유형을 셰이프 함수 좌표에 사용할 수 있습니다. 필요에 따라 유연하거나 견고한 유형을 선택할 수 있습니다.

중심 좌표에 대해 명시적인 값을 설정하여 원의 위치를 조정할 수 있습니다.

.element{
  shape-outside: circle(50% at 0 0);
}

그러면 원 중심이 좌표계 원점에 배치됩니다. 좌표계란 무엇인가요? 여기에 참조 상자를 소개합니다.

CSS 도형용 참조 상자

참조 상자는 요소 주변의 가상 상자로, 도형을 그리고 위치를 지정하는 데 사용되는 좌표계를 설정합니다. 좌표계의 원점은 왼쪽 상단 모서리에 있으며 X축은 오른쪽을 향하고 Y축은 아래를 가리킵니다.

CSS 도형 좌표계

shape-outside는 콘텐츠가 래핑되는 플로팅 영역의 모양을 변경합니다. 플로팅 영역은 margin 속성으로 정의된 상자의 바깥쪽 가장자리까지 확장됩니다. 이를 margin-box라고 하며 명시적으로 언급되지 않은 경우 도형의 기본 참조 상자입니다.

다음 두 CSS 선언의 결과는 동일합니다.

.element{
  shape-outside: circle(50% at 0 0);
  /* identical to: */
  shape-outside: circle(50% at 0 0) margin-box;
}

아직 요소에 여백을 설정하지 않았습니다. 이 시점에서 좌표계의 원점과 원 중심이 요소 콘텐츠 영역의 왼쪽 상단 모서리에 있다고 가정하는 것이 안전합니다. 여백을 설정하면 다음과 같이 변경됩니다.

.element{
  shape-outside: circle(50% at 0 0) margin-box;
  margin: 100px;
}

좌표계의 원점이 이제 원 중심과 마찬가지로 요소의 콘텐츠 영역 (위 100픽셀, 왼쪽 100픽셀) 밖에 있습니다. 원 반경의 계산된 값도 margin-box 참조 상자로 설정된 좌표계의 증가된 표면을 고려하여 증가합니다.

여백이 있는 여백과 없는 여백 상자 좌표계
`margin-box`, `border-box`, `padding-box`, `content-box` 등 몇 가지 참조 상자 옵션 중에서 선택할 수 있습니다. 이름은 경계를 암시합니다. 앞서 `margin-box`에 관해 설명했습니다. `border-box` 는 요소 테두리의 바깥쪽 가장자리로 제한되고 `padding-box` 는 요소의 패딩으로 제한되는 반면 `content-box` 는 요소 내의 콘텐츠가 사용하는 실제 표면 영역과 동일합니다.
모든 참조 상자 삽화

shape-outside 선언과 함께는 한 번에 하나의 참조 상자만 사용할 수 있습니다. 각 참조 상자는 서로 다르고 때로는 미묘한 방식으로 도형에 영향을 미칩니다. 더 자세히 살펴보고 CSS 도형의 참조 상자를 이해하는 데 도움이 되는 다른 도움말이 있습니다.

ellipse() 함수

ellipse() 도형 값을 표현한 그림

타원은 찌그러진 원 모양입니다. ellipse(rx ry at cx cy)로 정의됩니다. 여기서 rxry는 X축과 Y축의 타원 반경이고 cxcy는 타원 중심의 좌표입니다.

.element{
  shape-outside: ellipse(150px 300px at 50% 50%);
  width: 300px;
  height: 600px;
}

백분율 값은 좌표계의 차원에서 계산됩니다. 재미있는 계산이 필요하지 않습니다. 타원 중심의 좌표를 생략할 수 있으며 이는 좌표계 중심에서 추론됩니다.

X 축과 Y 축의 반경을 키워드로 정의할 수도 있습니다. farthest-side은 타원 중심과 타원 중심에서 가장 멀리 떨어져 있는 참조 상자 측면 사이의 거리와 동일한 반경을 산출하며, closest-side은 정반대임을 의미합니다. 중심과 한 변 사이의 최단 거리를 사용합니다.

.element{
  shape-outside: ellipse(closest-side farthest-side at 50% 50%);
  /* identical to: */
  shape-outside: ellipse(150px 300px at 50% 50%);
  width: 300px;
  height: 600px;
}

이는 요소의 크기 (또는 참조 상자)가 예측할 수 없는 방식으로 변경될 수 있지만 타원 모양을 조정하려는 경우 유용할 수 있습니다.

동일한 farthest-sideclosest-side 키워드를 circle() 도형 함수의 반경에 사용할 수도 있습니다.

Polygon() 함수

Polygon() 도형 값 그림

원과 타원이 너무 제한적이면 다각형 모양 함수를 사용하면 다양한 옵션이 열립니다. 형식은 polygon(x1 y1, x2 y2, ...)입니다. 여기서 다각형의 각 꼭짓점 (점)에 대해 xy 좌표 쌍을 지정합니다. 다각형을 지정하기 위한 최소 쌍 수는 세 개(삼각형)입니다.

.element{
  shape-outside: polygon(0 0, 0 300px, 300px 600px);
  width: 300px;
  height: 600px;
}

꼭짓점은 좌표계에 배치됩니다. 반응형 다각형의 경우 일부 또는 전체 좌표에 대한 백분율 값을 사용할 수 있습니다.

.element{
  /* polygon responsive to font-size*/
  shape-outside: polygon(0 0, 0 100%, 100% 100%);
  width: 20em;
  height: 40em;
}

SVG에서 가져온 선택적 fill-rule 매개변수는 직접 교차하는 경로나 둘러싸인 도형의 경우 다각형의 '안쪽'을 고려하는 방법을 브라우저에 지시합니다. Joni Trythall은 SVG에서 fill-rule 속성이 작동하는 방식에 대해 잘 설명합니다. 정의되지 않은 경우 fill-rule의 기본값은 nonzero입니다.

.element{
  shape-outside: polygon(0 0, 0 100%, 100% 100%);
  /* identical to: */
  shape-outside: polygon(nonzero, 0 0, 0 100%, 100% 100%);
}

inset() 함수

inset() 도형 함수를 사용하면 콘텐츠를 래핑할 직사각형 도형을 만들 수 있습니다. CSS Shapes가 단순한 상자에서 웹 콘텐츠를 없애라는 초기 전제를 고려할 때 이는 직관적이지 않을 수 있습니다. 그렇게 될 수도 있습니다. 부동 소수점 수와 여백 또는 polygon()를 사용하여 아직 실행할 수 없는 inset()의 사용 사례는 아직 찾지 못했습니다. inset()polygon()보다 직사각형 도형에 더 읽기 쉬운 표현식을 제공합니다.

인셋 도형 함수의 전체 표기법은 inset(top right bottom left border-radius)입니다. 처음 4개의 위치 인수는 요소의 가장자리에서 안쪽으로 향하는 오프셋입니다. 마지막 인수는 직사각형 도형의 테두리 반경입니다. 이는 선택사항이므로 생략해도 됩니다. 이는 이미 CSS에서 사용하는 border-radius 약식 표기법을 따릅니다.

.element{
  shape-outside: inset(100px 100px 100px 100px);
  /* yields a rectangular shape which is 100px inset on all sides */
  float: left;
}

참조 상자에서 도형 만들기

shape-outside 속성에 도형 함수를 지정하지 않으면 브라우저가 요소의 참조 상자에서 도형을 도출하도록 허용할 수 있습니다. 기본 참조 상자는 margin-box입니다. 지금까지는 별다른 일이 없었습니다. 바로 이러한 방식으로 부동 소수점이 이미 작동하는 것입니다. 그러나 이 기법을 적용하면 요소의 도형을 재사용할 수 있습니다. border-radius 속성을 살펴보겠습니다.

플로팅 요소를 사용하여 플로팅 요소의 모서리를 둥글게 만들면 클리핑 효과를 얻지만 플로팅 영역은 직사각형으로 유지됩니다. shape-outside: border-box를 추가하여 border-radius에서 만든 윤곽을 둘러쌉니다.

테두리 상자 참조 상자를 사용하여 요소의 테두리 반경에서 도형 추출
.element{
  border-radius: 50%;
  shape-outside: border-box;
  float: left;
}

물론 모든 참조 상자를 이러한 방식으로 사용할 수 있습니다. 파생된 도형의 또 다른 용도인 오프셋 가져오기가 있습니다.

content-box 참조 상자를 사용하여 오프셋 인용문 만들기

부동 소수점 수 및 여백 속성만 사용하여 오프셋 인용 효과를 얻을 수 있습니다. 하지만 그렇게 하려면 HTML 트리에서 렌더링하려는 지점에 따옴표 요소를 배치해야 합니다.

다음은 유연성을 추가하여 동일한 오프셋 가져오기 효과를 달성하는 방법입니다.

.pull-quote{
  shape-outside: content-box;
  margin-top: 200px;
  float: left;
}

도형 좌표계의 content-box 참조 상자를 명시적으로 설정합니다. 이 경우 인용문 내 콘텐츠의 양은 외부 콘텐츠를 래핑하는 모양을 정의합니다. 여기에서 margin-top 속성은 HTML 트리 내 위치에 관계없이 가져오기의 위치를 지정 (오프셋)하는 데 사용됩니다.

도형 여백

콘텐츠를 래핑하면 도형이 요소에 너무 가깝게 마찰될 수 있습니다. shape-margin 속성을 사용하여 도형 주위에 간격을 추가할 수 있습니다.

.element{
  shape-outside: circle(40%);
  shape-margin: 1em;
  float: left;
}

효과는 일반 margin 속성을 사용할 때와 비슷하지만 shape-marginshape-outside 값 주변의 공간에만 영향을 미칩니다. 좌표계에 공간이 있는 경우에만 도형 주위에 간격이 추가됩니다. 위의 예에서 원 반지름이 50%가 아닌 40%로 설정된 이유입니다. 반경을 50%로 설정하면 원이 좌표계의 모든 공간을 차지하며 shape-margin의 효과를 위한 공간이 없습니다. 도형은 궁극적으로 요소의 margin-box (요소와 주변 margin)로 제한됩니다. 도형이 더 크고 오버플로되면 margin-box로 잘리고 직사각형 도형이 됩니다.

shape-margin는 하나의 양수 값만 허용한다는 점을 알아야 합니다. 긴 표기법이 없습니다. 그런데 원의 여백-상단이란 무엇일까요?

도형에 애니메이션 적용

CSS 도형을 전환 및 애니메이션과 같은 다른 많은 CSS 기능과 혼합할 수 있습니다. 하지만 사용자가 읽는 중에 텍스트 레이아웃이 변경되면 매우 짜증 나게 된다는 점을 강조해야 합니다. 도형에 애니메이션을 적용하려면 실험 환경에 세심한 주의를 기울이세요.

브라우저에서 보간할 수 있는 값으로 정의된 경우 circle()ellipse() 도형의 반경과 중심에 애니메이션을 적용할 수 있습니다. circle(30%)에서 circle(50%)(으)로 이동할 수 있습니다. 그러나 circle(closest-side)에서 circle(farthest-side)로 애니메이션을 적용하면 브라우저가 질식됩니다.

.element{
  shape-outside: circle(30%);
  transition: shape-outside 1s;
  float: left;
}

.element:hover{
  shape-outside: circle(50%);
}
원 애니메이션 GIF

polygon() 도형을 애니메이션 처리할 때 더 흥미로운 효과를 얻을 수 있습니다. 중요한 점은 다각형의 꼭짓점 수가 두 애니메이션 상태 간에 동일해야 한다는 것입니다. 꼭짓점을 추가하거나 삭제하면 브라우저에서 보간할 수 없습니다.

한 가지 요령은 필요한 최대 개수의 꼭짓점을 추가하고 도형에서 인지되는 가장자리를 줄이려는 애니메이션 상태에서 함께 클러스터링하는 것입니다.

.element{
  /* four vertices (looks like rectangle) */
  shape-outside: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition: shape-outside 1s;
}

.element:hover{
  /* four vertices, but second and third overlap (looks like triangle) */
  shape-outside: polygon(0 0, 100% 50%, 100% 50%, 0 100%);
}
삼각형 애니메이션 GIF

도형 내부에 콘텐츠 래핑하기

CSS 도형을 사용하여 콘텐츠를 래핑하는 이상한 나라의 Alice 데모 스크린샷

CSS 도형 사양의 초기 초안에는 도형 내부에 콘텐츠를 래핑할 수 있는 shape-inside 속성이 포함되어 있습니다. 한동안 Chrome과 Webkit에도 구현되었습니다. 그러나 맞춤 경로 내부에 임의로 배치된 콘텐츠를 래핑하려면 가능한 모든 시나리오를 다루고 버그를 방지하기 위해 훨씬 더 많은 노력과 연구가 필요합니다. 이러한 이유로 shape-inside 속성이 CSS 도형 수준 2로 지연되고 이 속성의 구현이 취소되었습니다.

그러나 약간의 노력과 절충만으로도 맞춤 도형 내부에 콘텐츠를 래핑하는 효과를 얻을 수 있습니다. 컨테이너의 반대쪽에 shape-outside가 있는 플로팅 요소 두 개를 사용하는 방법을 알아봅니다. 단, 의미론적 의미는 없지만 내부에 있는 도형의 착시를 일으키기 위한 든든한 역할을 하는 빈 요소를 한두 개 사용해야 하는 타협입니다.

<div>
  <div class='left-shape'></div>
  <div class='right-shape'></div>

  Lorem ipsum...
</div>

컨테이너 상단에 있는 .left-shape.right-shape 스트럿 요소의 위치는 콘텐츠 측면에 배치하기 위해 왼쪽과 오른쪽으로 플로팅되므로 중요합니다.

.left-shape{
  shape-outside: polygon(0 0, ...);
  float: left;
  width: 50%;
  height: 100%;
}

.right-shape{
  shape-outside: polygon(50% 0, ...);
  float: right;
  width: 50%;
  height: 100%;
}
Alice 데모의 도형 내부에 대한 해결 방법을 보여주는 그림

이 스타일 지정으로 두 개의 플로팅 스트러트가 요소 내의 모든 공간을 차지하지만 shape-outside 속성은 나머지 콘텐츠를 위한 공간을 차지합니다.

브라우저에서 CSS 도형을 지원하지 않는 경우 모든 콘텐츠를 아래로 밀어내어 보기 좋지 않은 효과가 발생합니다. 따라서 점진적으로 기능을 사용하는 것이 중요합니다.

이전 도형 애니메이션 예에서 텍스트가 이동하는 것이 성가실 수 있음을 알 수 있습니다. 일부 사용 사례에서는 애니메이션 모양을 보장할 수 없습니다. 하지만 CSS 도형과 상호작용하는 다른 속성에 애니메이션을 적용하여 적절한 위치에 효과를 추가할 수 있습니다.

CSS 도형에 관한 이상한 나라의 앨리스 데모에서는 스크롤 위치를 사용하여 콘텐츠의 상단 여백을 변경했습니다. 텍스트는 두 개의 플로팅 요소 사이에 끼워집니다. 아래로 이동하면 두 개의 부동 요소 shape-outside에 따라 레이아웃을 재배치해야 합니다. 텍스트가 기쁨을 만끽하고 스토리텔링 경험을 더욱 생생하게 전달할 수 있습니다. 정책 위반 가능성이 있는 콘텐츠인가요? 그래야겠구나. 그래도 멋있어 보이네요.

텍스트 레이아웃은 기본적으로 브라우저에서 수행되므로 JavaScript 솔루션을 사용하는 것보다 성능이 좋습니다. 그러나 스크롤 시 상단 여백을 변경하면 레이아웃 재지정 및 페인트 이벤트가 많이 트리거되어 성능이 크게 저하될 수 있습니다. 주의해서 사용하세요. 그러나 애니메이션을 적용하지 않고 CSS 도형을 사용하면 체감할 정도의 성능 저하가 발생하지 않습니다.

점진적 개선

먼저 브라우저에 CSS 도형이 지원되지 않는다고 가정하고 기능을 감지하면 이를 기반으로 구축합니다. Modernizr는 특성 감지를 위한 좋은 솔루션이며 '비핵심 감지' 섹션에 CSS 도형 테스트가 있습니다.

일부 브라우저는 외부 라이브러리 없이도 @supports 규칙을 통해 CSS에서 기능 감지를 제공합니다. CSS 도형도 지원하는 Chrome은 @supports 규칙을 인식합니다. 다음과 같은 방법으로 이를 사용하여 점진적으로 개선합니다.

.element{
  /* styles for all browsers */
}

@supports (shape-outside: circle(50%)){
  /* styles only for browsers which support CSS Shapes */
  .element{
    shape-outside: circle(50%);
  }
}

CSS @supports 규칙 사용 방법에 대해 레아 베루가 자세히 작성했습니다.

CSS 제외와의 명확성

이전에는 CSS 셰이프로 알려진 것이 사양 초기에는 CSS 제외 및 도형이라고 했습니다. 이름 변경은 미묘한 차이가 있을 수 있지만 실제로는 매우 중요합니다. 이제 별도의 사양인 CSS 제외를 사용하면 부동 소수점 속성을 사용하지 않고도 임의로 배치된 요소 주위로 콘텐츠를 래핑할 수 있습니다. 절대 위치로 배치된 요소 주위로 콘텐츠를 래핑한다고 상상해 보세요. 이것이 CSS 제외의 사용 사례입니다. CSS 도형은 콘텐츠가 래핑하는 경로만 정의합니다.

도형과 제외는 동일한 것이 아니지만 서로를 보완합니다. CSS 도형은 현재 브라우저에서 사용할 수 있지만, CSS 제외는 아직 도형 상호작용을 통해 구현되지 않았습니다.

CSS 도형 사용 도구

기존 이미지 작성 도구에서 경로를 만들 수 있지만 이 문서를 작성하는 시점에는 CSS 도형 값에 필요한 구문을 내보내지 않습니다. 그렇게 하더라도 그렇게 하는 것은 그리 실용적이지 않을 것입니다.

CSS 도형은 브라우저에서 사용되어야 하며, 페이지의 다른 요소에 반응합니다. 도형을 둘러싼 콘텐츠에서 도형을 수정하는 효과를 시각화하면 매우 유용합니다. 이 워크플로에 도움이 되는 몇 가지 도구가 있습니다.

대괄호: 대괄호용 CSS 도형 편집기 확장 프로그램은 코드 편집기의 실시간 미리보기 모드를 사용하여 도형 값을 수정할 수 있도록 대화형 편집기를 오버레이합니다.

Chrome: Chrome용 CSS Shapes Editor 확장 프로그램을 사용하면 도형을 만들고 수정할 수 있는 컨트롤이 포함된 브라우저의 개발자 도구가 확장됩니다. 선택한 요소 위에 대화형 편집기가 배치됩니다.

Chrome의 검사기에는 도형을 강조 표시하는 기능이 기본적으로 지원됩니다. shape-outside 속성이 있는 요소 위로 마우스를 가져가면 불이 들어와서 도형이 표시됩니다.

이미지의 도형: 이미지를 생성하고 브라우저에서 도형을 추출하도록 하려면 Rebecca Hauck가 Photoshop 튜토리얼을 읽어보세요.

Polyfill: Chrome은 CSS 도형을 제공하는 최초의 주요 브라우저입니다. Apple의 iOS 8과 Safari 8에서는 이 기능이 곧 지원될 예정입니다. 향후 다른 브라우저 공급업체에서도 이 방법을 고려할 수 있습니다. 그때까지는 기본적인 지원을 제공하는 CSS 도형 폴리필을 사용할 수 있습니다.

결론

콘텐츠가 대부분 단순한 상자에 갇혀 있는 웹에서 CSS 도형을 사용하면 표현력이 풍부한 레이아웃을 만들어 웹과 인쇄 디자인 사이의 충실도 차이를 줄일 수 있습니다. 물론 도형이 악용되거나 주의를 산만하게 할 수도 있습니다. 그러나 모양은 세심하고 적절한 판단으로 적용하면 콘텐츠 표현 방식을 개선하고 독특한 방식으로 사용자의 관심을 끌 수 있습니다.

저는 다른 사람들의 작품 컬렉션을 주로 인쇄하여 남깁니다. 이 컬렉션은 직사각형이 아닌 레이아웃의 흥미로운 용도를 보여줍니다. 이 정보가 CSS Shapes를 사용해 보고 새로운 디자인 아이디어를 실험하는 데 도움이 되기를 바랍니다.

이 도움말을 검토하고 귀중한 정보를 제공해 주신 Pearl Chen, Alan Stearns, Zoltan Horvath 씨에게도 감사의 말씀을 전합니다.