This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

바깥 여백, 테두리 그리고 안쪽 여백을 위한 논리적 속성들

CSS 논리적 속성과 값 모듈은 다양한 바깥 여백, 테두리, 그리고 안쪽 여백 속성과 그것의 단축어에 대한 흐름 상대적인 매핑을 정의합니다. 이 안내서는 이에 대해 자세히 살펴봅니다.

논리적 속성과 값 모듈에 대해 살펴보면, 모듈 속성에 대한 목록이 아주 길다는 것을 알아차릴 수 있습니다. 이는 대부분이 각각의 바깥 여백, 테두리, 그리고 안쪽 여백에 대해 네 가지의 긴 값과 모든 단축어를 포함하고 있기 때문입니다.

바깥 여백, 테두리, 그리고 안쪽 여백 매핑하기

이 모듈은 각 논리적 값과 물리적 값의 매핑의 상세를 다룹니다. 아래 표는 쓰기 모드horizontal-tb 일 때 즉, 왼쪽에서 오른쪽 방향일 때 이러한 값들을 매핑하는 표를 나타냅니다. 그러므로 인라인 방향은 수평으로 왼쪽에서 오른쪽으로 진행되며, margin-inline-startmargin-left 와 동일합니다.

텍스트의 방향이 오른쪽에서 왼쪽인 쓰기 모드에서 horizontal-tb 를 사용하고 있다면 margin-inline-startmargin-right 와 동일하게 동작하고, 수직 쓰기 모드에서 이는 margin-top 을 사용하는 것과 동일한 동작을 합니다.

논리적 속성 물리적 속성
border-block-end border-bottom
border-block-end-color border-bottom-color
border-block-end-style border-bottom-style
border-block-end-width border-bottom-width
border-block-start border-top
border-block-start-color border-top-color
border-block-start-style border-top-style
border-block-start-width border-top-width
border-inline-end border-right
border-inline-end-color border-right-color
border-inline-end-style border-right-style
border-inline-end-width border-right-width
border-inline-start border-left
border-inline-start-color border-left-color
border-inline-start-style border-left-style
border-inline-start-width border-left-width
border-start-start-radius border-top-left-radius
border-end-start-radius border-bottom-left-radius
border-start-end-radius border-top-right-radius
border-end-end-radius border-bottom-right-radius
margin-block-end margin-bottom
margin-block-start margin-top
margin-inline-end margin-right
margin-inline-start margin-left
padding-block-end padding-bottom
padding-block-start padding-top
padding-inline-end padding-right
padding-inline-start padding-left

물론 몇몇의 추가적인 단축어들도 존재하는데, 이는 박스의 블록 가장자리와 인라인 가장자리를 동시에 타겟팅할 수 있기 때문입니다. 이러한 단축어는 물리적 대응이 존재하지 않습니다.

속성 목적
border-block 블록 테두리에 대해 border-color, border-style, 그리고 border-width 를 설정합니다.
border-block-color 블록 테두리에 대해 border-color 를 설정합니다.
border-block-style 블록 테두리에 대해 border-style 을 설정합니다.
border-block-width 블록 테두리에 대해 border-width 를 설정합니다.
border-inline 인라인 테두리에 대해 border-color, -style, 그리고 -width 를 설정합니다.
border-inline-color 인라인 테두리에 대해 border-color 를 설정합니다.
border-inline-style 인라인 테두리에 대해 border-style 를 설정합니다.
border-inline-width 인라인 테두리에 대해 border-width 를 설정합니다.
margin-block 모든 블록에 대해 margin 을 설정합니다.
margin-inline 모든 인라인에 대해 margin 을 설정합니다.
padding-block 블록 padding 을 설정합니다.
padding-inline 인라인 padding 을 설정합니다.

바깥 여백 예제

margin-inline-start, margin-inline-end, margin-block-start, 그리고 margin-inline-end 의 매핑된 마진 속성은 그들의 물리적 대응 속성 대신에 사용될 수 있습니다.

이 예제에는 각각의 가장자리에 서로 다른 크기의 바깥 여백을 가진 두 개의 박스가 존재합니다. 바깥 여백을 더욱 명확하게 표현하기 위해 테두리를 포함한 추가 컨테이너 또한 포함되어 있습니다.

한 상자는 물리적 속성을 사용하고 다른 하나는 논리적 속성을 사용합니다. direction 속성을 rtl 로 변경하여 상자가 오른쪽에서 왼쪽 방향으로 표시되도록 시도해 보세요. 첫번째 상자의 바깥 여백은 동일한 위치에 유지되지만, 두번쨰 상자의 인라인 차원의 바깥 여백은 전환됩니다.

또한 writing-modehorizontal-tb 에서 vertical-rl 로 변경해 보세요. 첫번째 상자의 바깥 여백이 어떻게 동일하게 유지되는지, 두번쨰 상자의 바깥 여백은 텍스트의 방향을 따라 전환되는 것을 확인해 보세요.

바깥 여백 단축어

인라인 측면과 블록 측면 모두를 타겟팅할 수 있는 단축어가 존재하는데, 각각 margin-inline 그리고 margin-block 입니다. 각 속성은 두 개의 값을 취합니다. 첫번쨰 값은 해당 차원의 시작 부분에 적용될 값이며, 두번쨰 값은 끝 부분에 적용될 값입니다. 만일 하나의 값이 설정된다면 이는 시작과 끝에 모두 적용됩니다.

수평의 쓰기 모드에서는 이 CSS 는 박스의 위쪽에는 5px 에 해당하는 바깥 여백이 적용되고, 박스의 아래쪽에는 10px 에 해당하는 바깥 여백을 적용시킵니다.

css
.box {
  margin-block: 5px 10px;
}

안쪽 여백 예제

매핑된 안쪽 여백 속성 padding-inline-start, padding-inline-end, padding-block-start, 그리고 padding-inline-end 는 물리적 대응 속성을 대신하여 사용될 수 있습니다.

이 예제에서는, 두 개의 박스가 존재합니다.한 상자에는 물리적 안쪽 여백 속성이 지정되어 있고, 다른 상자는 논리적 안쪽 여백 속성을 사용합니다. horizontal-tbwriting-mode 에서는 두 개의 박스가 동일하게 보여집니다.

direction 속성을 rtl 로 변경하여 상자가 오른쪽에서 왼쪽 방향으로 표시되도록 시도해 보세요. 첫번째 상자의 안쪽 여백은 동일한 위치에 유지되지만, 두번쨰 상자의 인라인 차원의 바깥 여백은 전환됩니다.

또한 writing-modehorizontal-tb 에서 vertical-rl 로 변경해 보세요. 첫번째 상자의 안쪽 여백이 어떻게 동일하게 유지되는지, 두번쨰 상자의 안쪽 여백은 텍스트의 방향을 따라 전환되는 것을 확인해 보세요.

안쪽 여백 단축어

바깥 여백과 같이, 두 값을 함께 사용할 수 있는 단축어가 안쪽 여백에도 존재하는데, 이는 padding-inlinepadding-block 입니다. 이를 사용하면 두 인라인과 두 블록 차원의 안쪽 여백을 각각 설정할 수 있습니다.

수직의 writing-mode 에서는 이 CSS 는 박스의 위쪽에는 5px 에 해당하는 안쪽 여백이 적용되고, 박스의 아래쪽에는 10px 에 해당하는 안쪽 여백을 적용시킵니다.

css
.box {
  padding-block: 5px 10px;
}

테두리 예제

이 모듈에 매우 많은 속성이 있는 것처럼 보이는 주된 이유는 테두리 속성들 때문입니다. 이는 박스의 각 측면에 대한 테두리의 색상, 너비, 그리고 스타일의 전체 논리적 속성 표현을 제공하는데, 각 측면에 대해 세 가지를 한번에 설정할 수 있는 단축어도 제공됩니다. 바깥 여백과 안쪽 여백처럼, 각 물리적 속성의 매핑된 버전 또한 존재합니다.

아래 예시에서는 전체 표현과 세 가지 속성의 단축어 값들도 사용됩니다. 다른 예시들처럼, direction 속성을 rtl 로 변경하여 상자가 오른쪽에서 왼쪽 방향으로 표시되도록 시도해 보거나, writing-modehorizontal-tb 에서 vertical-rl 로 변경해 보세요.

테두리 단축어

블록 혹은 인라인 차원에서의 너비, 스타일, 그리고 색상을 설정하는 두 개의 값을 이용한 단축어가 존재하고, 블록 또는 인라인 차원에서 세 가지 값을 모두 설정하기 위한 단축어도 존재합니다. 아래 코드에서는, 수평의 쓰기 모드에서 2px green solid 테두리 값을 박스의 위와 아래에 각각 설정하고, 4px dotted purple 테두리를 박스의 왼쪽과 오른쪽에 설정할 수 있습니다.

css
.box {
  border-block: 2px solid green;
  border-inline-width: 4px;
  border-inline-style: dotted;
  border-inline-color: rebeccapurple;
}

흐름 상대적인 border-radius 속성

이 모듈에는 border-radius 의 전체 표현과 같은 흐름 상대적인 대응 속성이 존재합니다. 아래 예제에서는, 수평의 writing-mode 에서 오른쪽 상단 테두리 둥글기를 1em 로 설정하고, 오른쪽 하단은 0, 왼쪽 하단은 20px, 그리고 왼쪽 상단은 40px 로 설정합니다.

css
.box {
  border-end-start-radius: 1em;
  border-end-end-radius: 0;
  border-start-end-radius: 20px;
  border-start-start-radius: 40px;
}

4가지 값의 단축 문법을 위한 논리적 값 나타내기

명세서에서는 margin 속성에 대한 네 가지 값의 단축어를 제안하고 있지만, 이것을 어떻게 나타내야 하는지에 대해서는 아직 최종 결정이 나지 않은 상태이며 이 이슈 에서 논의되고 있습니다.

margin, padding, 또는 border 와 같은 네 가지 값의 단축어는 현재 물리적 버전이 사용되므로, 문서의 흐름을 따르는 것이 중요하다면 당분간은 전체 표현된 속성을 사용하길 권장합니다.