κΈ°μ¬ μ λͺ©
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
μ°¨μΈλ λ°μν λμμΈμΈ CSS 컨ν μ΄λ 쿼리λ₯Ό μ΄ν΄λ³΄μΈμ. λ·°ν¬νΈ ν¬κΈ°λΏλ§ μλλΌ μ»¨ν μ΄λ ν¬κΈ°μ λ°λΌ μ‘°μ κ°λ₯ν μ»΄ν¬λνΈ μμ± λ°©λ²μ μμ보μΈμ.
λ°μν λμμΈμ 10λ μ΄μ μΉ κ°λ°μ μ΄μμ΄μμ΅λλ€. μ ν΅μ μΌλ‘ μ°λ¦¬λ λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νμ¬ λ·°ν¬νΈ ν¬κΈ°μ λ°λΌ λ μ΄μμμ μ‘°μ ν΄ μμ΅λλ€. κ·Έλ¬λ μ΄λ¬ν μ κ·Ό λ°©μμ νΉν 볡μ‘ν μ»΄ν¬λνΈ κΈ°λ° λμμΈμ λ€λ£° λ λλ‘λ μ νμ μΌλ‘ λκ»΄μ§ μ μμ΅λλ€. CSS 컨ν μ΄λ 쿼리λ μ»΄ν¬λνΈκ° λ·°ν¬νΈκ° μλ 컨ν μ΄λ μμμ ν¬κΈ°μ λ°λΌ μ‘°μ λλλ‘ νλ κ°λ ₯ν μ κΈ°λ₯μ λλ€.
컨ν μ΄λ 쿼리λ μμ κΈ°λ° λ°μν λμμΈμ κ°λ₯νκ² νκΈ° λλ¬Έμ νκΈ°μ μ λλ€. "νλ©΄ ν¬κΈ°κ° μΌλ§μ λκΉ?"λΌκ³ 묻λ λμ "μ΄ μ»΄ν¬λνΈκ° μ¬μ©ν μ μλ 곡κ°μ μΌλ§λ λ©λκΉ?"λΌκ³ λ¬Όμ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ§μ μΌλ‘ μ¬μ¬μ© κ°λ₯νκ³ μ μ κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€ μ μλ κ°λ₯μ±μ μΈκ³κ° μ΄λ¦½λλ€.
μ’μ μ¬μ΄λλ°, λμ νμ΄λ‘ μΉμ λλ λ€μ€ μ΄ κ·Έλ¦¬λμ κ°μ λ€μν 컨ν μ€νΈμ λνλ μ μλ μΉ΄λ μ»΄ν¬λνΈλ₯Ό μκ°ν΄ 보μΈμ. λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νλ©΄ λ·°ν¬νΈ λλΉλ₯Ό κΈ°μ€μΌλ‘ μ΄λ¬ν κ° μλ리μ€μ λν νΉμ κ·μΉμ μμ±ν΄μΌ ν©λλ€. 컨ν μ΄λ 쿼리λ₯Ό μ¬μ©νλ©΄ μΉ΄λλ μ 체 νλ©΄ ν¬κΈ°μ κ΄κ³μμ΄ λΆλͺ¨ 컨ν μ΄λμ ν¬κΈ°μ λ°λΌ λ μ΄μμκ³Ό μ€νμΌμ μ§λ₯μ μΌλ‘ μ‘°μ ν μ μμ΅λλ€.
컨ν μ΄λ 쿼리λ κΈ°μ‘΄ λ―Έλμ΄ μΏΌλ¦¬μ λΉν΄ λͺ κ°μ§ μ£Όμ μ΄μ μ μ 곡ν©λλ€.
컨ν
μ΄λ 쿼리 μ¬μ©μ μ€μ μ μΈ μΈ‘λ©΄μ μ΄ν΄λ³΄κ² μ΅λλ€. 첫 λ²μ§Έ λ¨κ³λ 컨ν
μ΄λλ₯Ό μ μΈνλ κ²μ
λλ€. λΆλͺ¨ μμμμ container-type μμ±μ μ¬μ©νμ¬ μ΄ μμ
μ μνν μ μμ΅λλ€.
container-type μμ±μ μ¬λ¬ κ°μ νμ©ν©λλ€.
size: 컨ν
μ΄λ 쿼리λ 컨ν
μ΄λμ μΈλΌμΈ λ° λΈλ‘ ν¬κΈ°μ λͺ¨λ μλ΅ν©λλ€.inline-size: 컨ν
μ΄λ 쿼리λ 컨ν
μ΄λμ μΈλΌμΈ(κ°λ‘ μ°κΈ° λͺ¨λμ λλΉ) ν¬κΈ°μλ§ μλ΅ν©λλ€. μ΄κ²μ΄ κ°μ₯ μΌλ°μ μ΄κ³ μ’
μ’
κ°μ₯ μ μ©ν μ΅μ
μ
λλ€.block-size: 컨ν
μ΄λ 쿼리λ 컨ν
μ΄λμ λΈλ‘(κ°λ‘ μ°κΈ° λͺ¨λμ λμ΄) ν¬κΈ°μλ§ μλ΅ν©λλ€.normal: μμκ° μΏΌλ¦¬ 컨ν
μ΄λκ° μλλλ€. μ΄κ²μ΄ κΈ°λ³Έκ°μ
λλ€.style: 컨ν
μ΄λ 쿼리λ μ€νμΌ μΏΌλ¦¬ λ° μ»¨ν
μ΄λ μ΄λ¦ 쿼리(λμ€μ μ€λͺ
)μ μλ΅νμ¬ μ»¨ν
μ΄λμ μ€μ λ μ¬μ©μ μ μ μμ±μ 쿼리ν μ μμ΅λλ€.μΈλΌμΈ ν¬κΈ°μ μλ΅νλ 컨ν μ΄λλ₯Ό μ μνλ μλ λ€μκ³Ό κ°μ΅λλ€.
.card-container {
container-type: inline-size;
}
μ½μ container μμ±μ μ¬μ©νμ¬ container-type λ° container-name(λμ€μ μ€λͺ
)μ λ¨μΌ μ μΈμΌλ‘ μ§μ ν μλ μμ΅λλ€.
.card-container {
container: card / inline-size;
}
μ΄ κ²½μ° 'card'λ 컨ν μ΄λ μ΄λ¦μ λλ€.
컨ν
μ΄λλ₯Ό μ μνμΌλ©΄ @container at-ruleμ μ¬μ©νμ¬ μΏΌλ¦¬λ₯Ό μμ±ν μ μμ΅λλ€. ꡬ문μ λ―Έλμ΄ μΏΌλ¦¬μ μ μ¬νμ§λ§ λ·°ν¬νΈ ν¬κΈ°λ₯Ό λμμΌλ‘ νλ λμ 컨ν
μ΄λμ ν¬κΈ°λ₯Ό λμμΌλ‘ ν©λλ€.
@container card (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
μ΄ μμμλ "card" 컨ν
μ΄λλ₯Ό λμμΌλ‘ νκ³ μ»¨ν
μ΄λμ λλΉκ° μ΅μ 400pxμΌ λ .card, .card__image λ° .card__content μμμ μ€νμΌμ μ μ©ν©λλ€. `(min-width: 400px)` μμ `card`κ° μλ κ²μ νμΈνμμμ€. μ΄λ `container-name` λλ μ½μ `container` μμ±μ μ¬μ©νμ¬ μ»¨ν
μ΄λ μ΄λ¦μ μ§μ ν κ²½μ°μ μ€μν©λλ€.
컨ν μ΄λ μ΄λ¦μ μ§μ νμ§ μμ κ²½μ° μ»¨ν μ΄λ μ΄λ¦μ μλ΅ν μ μμ΅λλ€.
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
min-width, max-width, min-height, max-height λ° orientationκ³Ό κ°μ΄ λ―Έλμ΄ μΏΌλ¦¬μμ μ¬μ©ν μ μλ λμΌν λ²μμ λ―Έλμ΄ κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€.
컨ν
μ΄λ μ΄λ¦μ μ§μ νλ κ²μ νΉν μ€μ²©λ 컨ν
μ΄λλ 볡μ‘ν λ μ΄μμμ λ€λ£° λ μ μ©ν μ μμ΅λλ€. container-name μμ±μ μ¬μ©νμ¬ μ»¨ν
μ΄λμ μ΄λ¦μ ν λΉν μ μμ΅λλ€.
.card-container {
container-name: card;
container-type: inline-size;
}
κ·Έλ° λ€μ 컨ν μ΄λ 쿼리μμ μ΄λ¦μΌλ‘ 컨ν μ΄λλ₯Ό λμμΌλ‘ μ§μ ν μ μμ΅λλ€.
@container card (min-width: 400px) {
/* 'card' 컨ν
μ΄λμ λν μ€νμΌ */
}
컨ν
μ΄λ μ€νμΌ μΏΌλ¦¬λ₯Ό μ¬μ©νλ©΄ 컨ν
μ΄λμ ν¬κΈ°κ° μλ μ€νμΌμ λ°μν μ μμ΅λλ€. μ΄λ μ¬μ©μ μ μ μμ±κ³Ό κ²°ν©λ λ νΉν κ°λ ₯ν©λλ€. λ¨Όμ container-type: styleλ‘ μ»¨ν
μ΄λλ₯Ό μ μν΄μΌ ν©λλ€.
.component-container {
container-type: style;
}
κ·Έλ° λ€μ @container style(--theme: dark)λ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ μ μμ± --themeμ κ°μ 쿼리ν μ μμ΅λλ€.
.component-container {
--theme: light;
}
@container style(--theme: dark) {
.component {
background-color: black;
color: white;
}
}
μ΄λ κ² νλ©΄ μ»΄ν¬λνΈκ° λ·°ν¬νΈ ν¬κΈ°κ° μλ CSSλ₯Ό ν΅ν΄ μ€μ λ ꡬμ±μ κΈ°λ°μΌλ‘ μ‘°μ ν μ μμ΅λλ€. μ΄λ ν λ§ λ° λμ μ€νμΌλ§μ λν νλ₯ν κ°λ₯μ±μ μ΄μ΄μ€λλ€.
컨ν μ΄λ μΏΌλ¦¬κ° μ€μ μλ리μ€μμ μ΄λ»κ² μ¬μ©λ μ μλμ§μ λν ꡬ체μ μΈ μλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
μ νμ λν μ 보λ₯Ό νμνλ μΉ΄λ μ»΄ν¬λνΈλ₯Ό μμν΄ λ³΄μμμ€. μ’μ 컨ν μ΄λμμλ μ΄λ―Έμ§μ μ½ν μΈ λ₯Ό μμ§μΌλ‘ μκ³ μΆμ μ μμ΅λλ€. λ λμ 컨ν μ΄λμμλ λλν νμν μ μμ΅λλ€.
HTML:
CSS:
.card-container {
container-type: inline-size;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 16px;
}
.card__image {
width: 100%;
margin-bottom: 16px;
}
.card__content {
width: 100%;
}
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
margin-bottom: 0;
}
.card__content {
width: 50%;
}
}
μ΄ μμμλ μΉ΄λκ° μ²μμ μ΄λ―Έμ§μ μ½ν μΈ λ₯Ό μμ§μΌλ‘ μμμ νμν©λλ€. 컨ν μ΄λμ λλΉκ° 400pxμ λλ¬νλ©΄ μΉ΄λκ° κ°λ‘ λ μ΄μμμΌλ‘ μ νλ©λλ€.
μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ μ‘°μ ν΄μΌ νλ νμ λ©λ΄λ₯Ό κ³ λ €ν΄ λ³΄μμμ€. μ’μ 컨ν μ΄λ(μ: λͺ¨λ°μΌ μ¬μ΄λλ°)μμλ λ©λ΄ νλͺ©μ μμ§ λͺ©λ‘μΌλ‘ νμνκ³ μΆμ μ μμ΅λλ€. λ λμ 컨ν μ΄λ(μ: λ°μ€ν¬ν± ν€λ)μμλ κ°λ‘λ‘ νμν μ μμ΅λλ€.
HTML:
CSS:
.nav-container {
container-type: inline-size;
}
.nav {
list-style: none;
padding: 0;
margin: 0;
}
.nav__item {
margin-bottom: 8px;
}
.nav__item a {
display: block;
padding: 8px 16px;
text-decoration: none;
color: #333;
}
@container (min-width: 600px) {
.nav {
display: flex;
}
.nav__item {
margin-right: 16px;
margin-bottom: 0;
}
.nav__item a {
display: inline-block;
}
}
μ΄ μμμλ νμ λ©λ΄κ° μ²μμ νλͺ©μ μμ§ λͺ©λ‘μΌλ‘ νμν©λλ€. 컨ν μ΄λμ λλΉκ° 600pxμ λλ¬νλ©΄ λ©λ΄κ° κ°λ‘ λ μ΄μμμΌλ‘ μ νλ©λλ€.
κΈ°μ¬κ° λ°°μΉλ μμΉμ λ°λΌ μ‘°μ ν΄μΌ νλ κΈ°μ¬ λ μ΄μμμ μμν΄ λ³΄μμμ€. μμ 미리보기 μΉμ μ μλ κ²½μ° μ΄λ―Έμ§κ° ν μ€νΈ μμ μμ΄μΌ ν©λλ€. μ£Όμ κΈ°μ¬μΈ κ²½μ° μ΄λ―Έμ§κ° μΈ‘λ©΄μ μμ μ μμ΅λλ€.
HTML
κΈ°μ¬ μ λͺ©
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
CSS
.article-container {
container-type: inline-size;
}
.article {
display: flex;
flex-direction: column;
}
.article-image {
width: 100%;
margin-bottom: 10px;
}
.article-content {
width: 100%;
}
@container (min-width: 768px) {
.article {
flex-direction: row;
}
.article-image {
width: 40%;
margin-right: 20px;
margin-bottom: 0;
}
.article-content {
width: 60%;
}
}
컨ν μ΄λ 쿼리μ λν λΈλΌμ°μ μ§μμ Chrome, Firefox, Safari λ° Edgeλ₯Ό ν¬ν¨ν μ΅μ λΈλΌμ°μ μμ μ΄μ νλ₯ν©λλ€. κΈ°λ₯ λ° κ΅¬ν μΈλΆ μ λ³΄κ° λ°μ ν μ μμΌλ―λ‘ μ΅μ λΈλΌμ°μ μ§μ μ 보λ Can I Useμμ νμΈνλ κ²μ΄ μ€μν©λλ€.
컨ν μ΄λ 쿼리λ λ―Έλμ΄ μΏΌλ¦¬μ λν κ°λ ₯ν λμμ μ 곡νμ§λ§ κ° μ κ·Ό λ°©μμ΄ μΈμ κ°μ₯ μ ν©νμ§ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€.
λλΆλΆμ κ²½μ° λ―Έλμ΄ μΏΌλ¦¬μ 컨ν μ΄λ 쿼리λ₯Ό λͺ¨λ ν¨κ» μ¬μ©ν κ²μ λλ€. λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νμ¬ μ ν리μΌμ΄μ μ μ 체 λ μ΄μμμ μ€μ ν λ€μ 컨ν μ΄λ 쿼리λ₯Ό μ¬μ©νμ¬ ν΄λΉ λ μ΄μμ λ΄μμ κ°λ³ μ»΄ν¬λνΈμ λͺ¨μκ³Ό λμμ λ―ΈμΈ μ‘°μ νμμμ€.
CSS 컨ν μ΄λ 쿼리λ λ°μν λμμΈμ μ§νμ μμ΄ μ€μν μ§μ μ λνλ λλ€. μμ κΈ°λ° λ°μμ±μ κ°λ₯νκ² ν¨μΌλ‘μ¨ κ°λ°μλ λ³΄λ€ μ μ°νκ³ μ¬μ¬μ© κ°λ₯νλ©° μ μ§ κ΄λ¦¬ κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€ μ μμ΅λλ€. λΈλΌμ°μ μ§μμ΄ κ³μ κ°μ λ¨μ λ°λΌ 컨ν μ΄λ 쿼리λ λͺ¨λ μΉ κ°λ°μμ λ¬΄κΈ°κ³ μμ νμμ μΈ λκ΅¬κ° λ κ²μ λλ€.
κΈλ‘λ² μ¬μ©μλ₯Ό μν΄ μ»¨ν μ΄λ 쿼리λ₯Ό ꡬνν λλ λ€μ μ¬νμ κ³ λ €νμμμ€.
left λ° rightμ κ°μ 물리μ μμ± λμ inline-start λ° inline-endμ κ°μ λ
Όλ¦¬μ μμ±μ μ¬μ©νμμμ€.em, rem)λ₯Ό μ¬μ©νμμμ€.CSS 컨ν μ΄λ 쿼리λ μ§μ μΌλ‘ λ°μμ±μ΄ λ°μ΄λκ³ μ μ κ°λ₯ν μΉ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν κ°λ ₯ν λꡬμ λλ€. μμ κΈ°λ° λ°μν λμμΈμ μ±νν¨μΌλ‘μ¨ λ€μν 컨ν μ€νΈμ μλ²½νκ² μ μνκ³ μ½λλ₯Ό λ¨μννλ©° μ λ°μ μΈ μ¬μ©μ κ²½νμ κ°μ νλ μ»΄ν¬λνΈλ₯Ό λ§λ€ μ μμ΅λλ€. λΈλΌμ°μ μ§μμ΄ κ³μ μ¦κ°ν¨μ λ°λΌ 컨ν μ΄λ 쿼리λ μ΅μ μΉ κ°λ°μ κΈ°λ³Έ λΆλΆμ΄ λ κ²μ λλ€. μ΄ κΈ°μ μ μμ©νκ³ ν΄λΉ κΈ°λ₯μ μ€ννκ³ λ°μν λμμΈμμ μλ‘μ΄ μμ€μ μ μ°μ±μ ν보νμμμ€. μ΄λ¬ν μ κ·Ό λ°©μμ λ λμ μ»΄ν¬λνΈ μ¬μ¬μ©μ±, μ μ§ κ΄λ¦¬ μ©μ΄μ± λ° λ³΄λ€ μ§κ΄μ μΈ λμμΈ νλ‘μΈμ€λ₯Ό κ°λ₯νκ² νμ¬ μ μΈκ³ νλ‘ νΈμλ κ°λ°μμκ² κ·μ€ν μμ°μ΄ λ©λλ€. 컨ν μ΄λ 쿼리λ‘μ μ νμ λμμΈμ λν λ³΄λ€ μ»΄ν¬λνΈ μ€μ¬μ μΈ μ κ·Ό λ°©μμ μ₯λ €νμ¬ μ μΈκ³ μ¬μ©μλ₯Ό μν λ³΄λ€ κ°λ ₯νκ³ μ μ κ°λ₯ν μΉ κ²½νμ μ 곡ν©λλ€.