CSS Logical Properties는 웹 페이지의 **글쓰기 방향(writing mode)**과 **텍스트 흐름(directionality)**에 따라 동적으로 적용 위치가 달라지는 CSS 속성들을 말합니다.
기존의 margin-left, padding-top 같은 물리적 위치 기반 속성 대신, margin-inline-start, padding-block-end 같은 논리적 방향 속성을 사용함으로써 다국어 지원, 레이아웃 유연성, 반응형 디자인에 더 유리해집니다.
| 구분 | 의미 | 예시 |
|---|---|---|
inline |
텍스트가 흐르는 방향 (예: 좌→우 또는 우→좌) | margin-inline-start |
block |
줄이 쌓이는 방향 (예: 위→아래 또는 아래→위) | padding-block-end |
start/end |
시작과 끝 (언어 및 writing-mode에 따라 달라짐) | inset-inline-end |
/* 좌→우(ltr) 언어 기준 */
writing-mode: horizontal-tb;
padding-inline-start: 20px; /* → 왼쪽 padding 적용 */
/* 우→좌(rtl) 언어 기준 */
direction: rtl;
padding-inline-start: 20px; /* → 오른쪽 padding 적용 */
CSS Nesting은 CSS에서 계층적 구조를 표현하기 위해 선택자들을 중첩해서 작성할 수 있도록 허용하는 문법이야.
기존에는 SCSS나 Sass에서만 가능했지만, 이제는 CSS 표준으로 일부 브라우저에서 지원되기 시작했어.
&를 써서 상위 선택자를 명시해줘야함⇒ CSS Nesting은 선택자 안에 다른 선택자를 중첩해 작성할 수 있는 CSS의 최신 기능
.card {
padding: 1rem;
& .title {
font-weight: bold;
}
&:hover {
background-color: #eee;
}
}
&를 명시해야 함/* ❌ 이렇게는 안 됨 (불명확함) */
.container {
.item { color: red; }
}
/* ✅ 이렇게 해야 함 */
.container {
& .item { color: red; }
}
https://codepen.io/pjbfkwvv-the-animator/pen/xbGvYpd?editors=0100