Logical properties for floating and positioning

CSS 논리적 속성과 값 모듈은 floatclear 같은 물리적 값들의 논리적 매핑과, 위치 레이아웃에서 사용되는 위치 지정 속성에 대한 논리적 매핑을 포함합니다. 이 안내서는 이를 어떻게 사용하는지 소개합니다.

매핑된 속성과 값

아래 표는 이 안내서에서 논의된 logical properties 와 그 값 그리고 physical properties 과 값의 매핑에 관한 것입니다. 이 표는 수평 writing-mode, 즉 왼쪽에서 오른쪽 방향을 가정합니다.

논리적 속성 혹은 값 물리적 속성 혹은 값
float: inline-start float: left
float: inline-end float: right
clear: inline-start clear: left
clear: inline-end clear: right
inset-inline-start left
inset-inline-end right
inset-block-start top
inset-block-end bottom
text-align: start text-align: left
text-align: end text-align: right

이 매핑된 속성들에 더하여, 인라인 차원과 블록 차원을 지정할 수 있는 더 많은 단축 속성들이 존재합니다. 이들은 inset 속성을 제외하고는 물리적 속성과 매핑되지 않습니다.

논리적 속성 목적
inset-inline 인라인 차원에 대해 위 두 개의 내부 여백 값을 동시에 설정합니다.
inset-block 블록 차원에 대해 위 두 개의 내부 여백 값을 동시에 설정합니다.
inset 물리적으로 매핑된 다중 값으로 네 개의 모든 내부 여백 값을 동시에 설정합니다.

Float 와 clear 예제

floatclear 속성에 사용되는 물리적 값은 left, right 그리고 both 입니다. 이 CSS 논리적 속성과 값 모듈은 inline-startinline-end 의 값을 leftright 로 매핑으로 정의합니다.

이 예제는 두 개의 박스 요소가 있습니다. 첫번째 박스 요소는 float: left 로 플로팅되어 있고, 두번째 박스는 float: inline-start 이 사용되었습니다. 만일 writing-modevertical-rl 로 변경하거나, directionrtl 로 변경하게 된다면 왼쪽에 플로팅된 박스는 항상 왼쪽에 붙어 있는 반면, inline-start 로 플로팅된 요소는 directionwriting-mode 를 따르게 됩니다.

예제: 위치가 지정된 레이아웃을 위한 내부 여백 속성

CSS 위치 지정은 일반적으로 어떠한 요소를 그것을 포함하는 블록에 상대적으로 배치할 수 있게 합니다. 기본적인 흐름에 기반하여 배치될 위치에 요소를 삽입하게 됩니다. 요소를 뷰포트의 상대적으로 위치시키기 위해서는, 물리적 속성인 top, right, bottom 그리고 left 를 사용합니다. 쓰기 모드에서 텍스트의 흐름에 따라 위치를 지정하려면, inset-block-start, inset-block-end, inset-inline-start 그리고 inset-inline-end 속성들을 사용합니다.

이러한 속성들은 값으로 길이 혹은 백분율을 취하며, 사용자의 화면 크기와도 관련이 있습니다.

아래 예제에서는, inset-block-startinset-inline-end 속성들은 position: relative 가 설정된 회색 점선 경계가 있는 영역 안쪽의 파란색 박스를 절대 위치로 배치합니다. writing-mode 속성을 vertical-rl 로 변경하거나, direction: rtl 을 추가하여 텍스트의 방향에 따라 어떻게 박스가 상대벅으로 유지되는지 확인해 보세요.

두 개 혹은 네 개의 값을 위한 단축 속성

모듈에 있는 다른 속성들과 마찬가지로, 두 개 혹은 네 개의 값을 한번에 사용할 수 있는 단축 속성이 존재합니다.

  • inset — 물리적 매핑으로 네 방향의 값을 한번에 정의합니다.
  • inset-inline — 논리적 인라인의 내부 여백들을 설정합니다.
  • inset-block — 논리적 블록의 내부 여백들을 설정합니다.

예제: text-align 을 위한 논리적 속성

text-align 속성은 텍스트의 방향과 관련된 논리적 값이 있습니다. leftright 를 대신하여 startend 를 사용할 수 있게 됩니다. 아래 예제에서는, text-align: right 속성이 첫번째 블록에 설정되어 있고, text-align: end 가 두번째 블록에 설정되어 있습니다.

direction 값을 rtl 로 변경하면, 첫번째 블록의 정렬은 그대로 오른쪽에 있는 것으로 유지되지만, 두번째 블록은 논리적 끝인 왼쪽으로 이동하게 됩니다.

이는 박스를 정렬할 때 물리적 방향 시작과 끝을 사용하는 경우에 더 일관되게 동작합니다.