CSS 컨ν μ΄λ 쿼리μ μ±λ₯ νλ‘νμΌλ§ λ° μ΅μ νμ λν μ¬μΈ΅ λΆμ. 쿼리 νκ° λ° μ νμ μ±λ₯μ μ€μ .
CSS 컨ν μ΄λ 쿼리 μ±λ₯ νλ‘νμΌλ§: 쿼리 νκ° μ±λ₯
컨ν μ΄λ 쿼리λ λ°μν μΉ λμμΈμ μ€μν λ°μ μΌλ‘, κ°λ°μκ° λ·°ν¬νΈ ν¬κΈ°μλ§ μμ‘΄νλ λμ 컨ν μ΄λ μμμ ν¬κΈ°μ νΉμ±μ λ°λΌ μ€νμΌμ μ‘°μ ν μ μκ² ν΄μ€λλ€. λ§€μ° κ°λ ₯νμ§λ§, 컨ν μ΄λ 쿼리μ λμ μΈ νΉμ±μ μ±λ₯ κ³ λ € μ¬νμ μΌκΈ°ν μ μμ΅λλ€. μ΄ κΈμμλ 컨ν μ΄λ 쿼리 μ±λ₯μ 쿼리 νκ° μΈ‘λ©΄μ λν νλ‘νμΌλ§κ³Ό μ΅μ νμ μ€μ μ λ‘λλ€. λΈλΌμ°μ κ° μ΄λ¬ν 쿼리λ₯Ό μ΄λ»κ² νκ°νλμ§, κ·Έλ¦¬κ³ μλμ μν₯μ λ―ΈμΉλ μμΈμ μ΄ν΄νλ κ²μ μ±λ₯μ΄ λ°μ΄λ λ°μν μΉ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° μ€μν©λλ€.
컨ν μ΄λ 쿼리 νκ° μ΄ν΄νκΈ°
컨ν μ΄λ μμμ ν¬κΈ°κ° λ³κ²½λ λ (μ°½ ν¬κΈ° μ‘°μ , λ μ΄μμ λ³κ²½ λλ κΈ°ν λμ μ½ν μΈ μμ μΌλ‘ μΈν΄), λΈλΌμ°μ λ ν΄λΉ 컨ν μ΄λλ₯Ό λμμΌλ‘ νλ λͺ¨λ 컨ν μ΄λ 쿼리λ₯Ό λ€μ νκ°ν΄μΌ ν©λλ€. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ©λλ€:
- 컨ν μ΄λμ ν¬κΈ°μ μμ± κ²°μ : λΈλΌμ°μ λ 컨ν μ΄λμ λλΉ, λμ΄ λ° μ»¨ν μ΄λμ μ μλ λͺ¨λ μ¬μ©μ μ μ μμ±μ κ²μν©λλ€.
- 쿼리 쑰건 νκ°: λΈλΌμ°μ λ 컨ν
μ΄λμ μμ±μ 컨ν
μ΄λ 쿼리μ μ§μ λ 쑰건 (μ:
width > 500px,height < 300px)κ³Ό λΉκ΅ν©λλ€. - μ€νμΌ μ μ© λλ μ κ±°: 쿼리 νκ°μ λ°λΌ λΈλΌμ°μ λ ν΄λΉ CSS κ·μΉμ μ μ©νκ±°λ μ κ±°ν©λλ€.
컨ν μ΄λ 쿼리 νκ°μ μ±λ₯ μν₯μ 쿼리μ 볡μ‘μ±, μν₯μ λ°λ μμ μ, λΈλΌμ°μ λ λλ§ μμ§μ ν¨μ¨μ± λ± μ¬λ¬ μμΈμ λ°λΌ λ¬λΌμ§λλ€.
컨ν μ΄λ 쿼리 νκ° μ±λ₯ νλ‘νμΌλ§
컨ν μ΄λ 쿼리 μ±λ₯μ μ΅μ ννκΈ° μ μ, μ μ¬μ μΈ λ³λͺ© νμμ μλ³νκΈ° μν΄ μ½λλ₯Ό νλ‘νμΌλ§νλ κ²μ΄ νμμ μ λλ€. λΈλΌμ°μ κ°λ°μ λꡬλ μ±λ₯ νλ‘νμΌλ§μ μν μ¬λ¬ κΈ°λ₯μ μ 곡ν©λλ€.
λΈλΌμ°μ κ°λ°μ λꡬ μ¬μ©νκΈ°
λλΆλΆμ μ΅μ λΈλΌμ°μ μλ μΉμ¬μ΄νΈ μ±λ₯μ λ Ήννκ³ λΆμν μ μλ λ΄μ₯ κ°λ°μ λκ΅¬κ° μμ΅λλ€. μ¬μ© λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
- κ°λ°μ λꡬ μ΄κΈ°: F12 (λλ macOSμμ Cmd+Option+I)λ₯Ό λλ¬ κ°λ°μ λꡬλ₯Ό μ½λλ€.
- μ±λ₯ νμΌλ‘ μ΄λ: "Performance", "Timeline", λλ "Profiler"λΌκ³ νμλ νμ μ°Ύμ΅λλ€.
- λ Ήν μμ: λ Ήν λ²νΌ (μΌλ°μ μΌλ‘ μν)μ ν΄λ¦νμ¬ μΉμ¬μ΄νΈ νλμ λ Ήνν©λλ€.
- μΉμ¬μ΄νΈμ μνΈ μμ©: μ°½ ν¬κΈ° μ‘°μ μ΄λ λμ μ½ν μΈ μ μνΈ μμ©νλ λ± μ»¨ν μ΄λ 쿼리 νκ°λ₯Ό μ λ°νλ μμ μ μνν©λλ€.
- λ Ήν μ€μ§: λ Ήν λ²νΌμ λ€μ ν΄λ¦νμ¬ λ Ήνλ₯Ό μ€μ§ν©λλ€.
- κ²°κ³Ό λΆμ: νμλΌμΈμ κ²ν νμ¬ λμ CPU μ¬μ©λ λλ κΈ΄ λ λλ§ μκ°μ λ³΄μΈ κΈ°κ°μ μλ³ν©λλ€. 컨ν μ΄λ 쿼리 νκ°λ‘ μΈν΄ νΈλ¦¬κ±°λλ "Recalculate Style" λλ "Layout" κ΄λ ¨ μ΄λ²€νΈλ₯Ό μ°Ύμ΅λλ€.
κ°λ°μ λꡬ λ΄μ νΉμ λꡬλ μΈλΆνλ ν΅μ°°λ ₯μ μ 곡ν μ μμ΅λλ€:
- Chrome DevTools λ λλ§ ν: λ€μ 그리기, λ μ΄μμ λ³κ²½ λ° κΈ°ν λ λλ§ μ±λ₯ λ¬Έμ λ₯Ό κ°μ‘° νμν©λλ€. "Show potential scroll bottlenecks"μ "Highlight layout shifts"λ₯Ό νμ±ννμ¬ κ°μ ν μμμ μκ°μ μΌλ‘ μλ³ν©λλ€.
- Firefox Profiler: CPU μ¬μ©λ, λ©λͺ¨λ¦¬ ν λΉ λ° κΈ°ν μ±λ₯ λ©νΈλ¦μ λ Ήννκ³ λΆμν μ μλ κ°λ ₯ν νλ‘νμΌλ§ λꡬμ λλ€.
- Safari Web Inspector: Chrome DevToolsμ μ μ¬νκ² Safariμ Web Inspectorλ μΉ νμ΄μ§ λλ²κΉ λ° νλ‘νμΌλ§μ μν ν¬κ΄μ μΈ λꡬ μΈνΈλ₯Ό μ 곡ν©λλ€.
νλ‘νμΌλ§ λ°μ΄ν° ν΄μνκΈ°
νλ‘νμΌλ§ λ°μ΄ν°λ₯Ό λΆμν λ λ€μ μ¬νμ μ£Όμνμμμ€:
- Recalculate Style κΈ°κ°: 컨ν μ΄λ 쿼리 νκ°λ‘ μΈν΄ μ€νμΌμ λ€μ κ³μ°νλ λ° μμλ μκ°μ λνλ λλ€. λμ κ°μ 컨ν μ΄λ μΏΌλ¦¬κ° λ³΅μ‘νκ±°λ λ§μ μμ μμμ μν₯μ λ―ΈμΉκ³ μμμ μμ¬ν©λλ€.
- Layout κΈ°κ°: νμ΄μ§ λ μ΄μμμ λ€μ μ‘λ λ° μμλ μκ°μ λνλ λλ€. 컨ν μ΄λ 쿼리 λ³κ²½μ λ μ΄μμ 리νλ‘μ°λ₯Ό νΈλ¦¬κ±°ν μ μμΌλ©°, μ΄λ λΉμ©μ΄ λ§μ΄ λ€ μ μμ΅λλ€.
- Scripting κΈ°κ°: JavaScript μ½λλ 컨ν μ΄λ 쿼리μ μνΈ μμ©νκ±°λ λ μ΄μμ λ³κ²½μ νΈλ¦¬κ±°ν μ μμ΅λλ€. JavaScript μ½λκ° μ±λ₯μ λ―ΈμΉλ μν₯μ μ΅μννλλ‘ μ΅μ νλμλμ§ νμΈνμμμ€.
- νΉμ ν¨μ μλ³: λ§μ νλ‘νμΌλ¬λ κ°μ₯ λ§μ μκ°μ μλΉνλ νΉμ CSS λλ JavaScript ν¨μλ₯Ό 보μ¬μ€λλ€. μ΄λ₯Ό ν΅ν΄ μ±λ₯ λ³λͺ© νμμ μ νν μμΈμ νμ ν μ μμ΅λλ€.
컨ν μ΄λ 쿼리 νκ° μ±λ₯ μ΅μ ν
컨ν μ΄λ 쿼리 νκ°μ κ΄λ ¨λ μ±λ₯ λ³λͺ© νμμ μλ³ν νμλ μ¬λ¬ μ΅μ ν κΈ°μ μ μ μ©ν μ μμ΅λλ€.
1. 컨ν μ΄λ 쿼리 λ¨μν
볡μ‘ν 컨ν μ΄λ 쿼리λ μ±λ₯μ μλΉν μν₯μ λ―ΈμΉ μ μμ΅λλ€. λ€μμ ν΅ν΄ 쿼리λ₯Ό λ¨μννλ κ²μ κ³ λ €νμμμ€:
- 쑰건 μ μ€μ΄κΈ°: κ°λ₯ν κ²½μ° μ»¨ν μ΄λ 쿼리μ 쑰건μ μ€μ΄μμμ€. μλ₯Ό λ€μ΄, λλΉμ λμ΄λ₯Ό λͺ¨λ νμΈνλ λμ νλμ μ°¨μλ§ νμΈνλ©΄ λλμ§ νμΈνμμμ€.
- λ¨μν 쑰건 μ¬μ©: 컨ν μ΄λ 쿼리 λ΄μμ 볡μ‘ν κ³μ°μ΄λ λ¬Έμμ΄ μ‘°μμ νΌνμμμ€. κΈ°λ³Έμ μΈ μ«μ κ° λΉκ΅μ μ§μ€νμμμ€.
- 쿼리 κ²°ν©: λΉμ·ν μ€νμΌμ μ μ©νλ μ¬λ¬ 컨ν μ΄λ μΏΌλ¦¬κ° μλ κ²½μ°, μ¬λ¬ 쑰건μΌλ‘ λ¨μΌ μΏΌλ¦¬λ‘ κ²°ν©νλ κ²μ κ³ λ €νμμμ€. μ΄λ κ² νλ©΄ μ€νμΌ μ¬κ³μ° νμλ₯Ό μ€μΌ μ μμ΅λλ€.
μμ:
λ€μ λμ :
@container card (width > 300px) and (height > 200px) {
.card-content {
font-size: 1.2em;
}
}
λ€μκ³Ό κ°μ΄ κ³ λ €νμμμ€:
@container card (width > 300px) {
.card-content {
font-size: 1.2em;
}
}
λμ΄ μ‘°κ±΄μ΄ λ°λμ νμν κ²μ΄ μλλΌλ©΄ μ κ±°νλ©΄ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
2. 컨ν μ΄λ 쿼리 λ²μ μ΅μν
컨ν μ΄λ 쿼리μ μν₯μ λ°λ μμ μλ₯Ό μ ννμμμ€. μ¬μ€νμΌλ§μ΄ νμν μμκ° μ μμλ‘ νκ° νλ‘μΈμ€κ° λ λΉ¨λΌμ§λλ€.
- νΉμ μμ νκ²ν : 컨ν μ΄λ ν¬κΈ°μ λ°λΌ μ€νμΌμ΄ νμν μμλ§ νκ²ν νκΈ° μν΄ νΉμ μ νμλ₯Ό μ¬μ©νμμμ€. λ§μ μμ μμμ μν₯μ λ―ΈμΉλ μ§λμΉκ² κ΄λ²μν μ νμλ₯Ό μ¬μ©νμ§ λ§μμμ€.
- CSS Containment μ¬μ©:
containμμ±μ μμ λ° ν΄λΉ νμ μμμ λ λλ§μ 격리νμ¬ μ»¨ν μ΄λ 쿼리 λ³κ²½μ΄ νμ΄μ§μ λ€λ₯Έ λΆλΆμμ λΆνμν λ μ΄μμ 리νλ‘μ°λ₯Ό νΈλ¦¬κ±°νλ κ²μ λ°©μ§ν μ μμ΅λλ€.contain: layoutλλcontain: content(ν΄λΉλλ κ²½μ°)λ₯Ό μ¬μ©νλ©΄ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
μμ:
λ§€μ° μΌλ°μ μΈ μ»¨ν μ΄λ μμμ 컨ν μ΄λ 쿼리λ₯Ό μ μ©νλ λμ , λ ꡬ체μ μΈ μ»¨ν μ΄λλ₯Ό λ§λ€κ³ κ±°κΈ°μ 쿼리λ₯Ό μ μ©ν΄ 보μμμ€.
3. 컨ν μ΄λ μμ λ μ΄μμ μ΅μ ν
컨ν μ΄λ μμ μ체μ λ μ΄μμμ 컨ν μ΄λ 쿼리 μ±λ₯μ μν₯μ λ―ΈμΉ μ μμ΅λλ€. 컨ν μ΄λμ λ μ΄μμμ΄ λ³΅μ‘νκ±°λ λΉν¨μ¨μ μ΄λ©΄ νκ° νλ‘μΈμ€κ° λλ €μ§ μ μμ΅λλ€.
- ν¨μ¨μ μΈ λ μ΄μμ κΈ°λ² μ¬μ©: 컨ν μ΄λμ μ½ν μΈ λ° ν¬κΈ°μ μ ν©ν λ μ΄μμ κΈ°λ²μ μ ννμμμ€. μλ₯Ό λ€μ΄, 볡μ‘ν λ μ΄μμμ κ²½μ° Flexbox λλ Gridλ₯Ό κ³ λ €νμμμ€.
- λΆνμν λ μ΄μμ λ³κ²½ λ°©μ§: 컨ν μ΄λ μμ λ΄μμ λ μ΄μμ λ³κ²½μ μ΅μννμμμ€. λ μ΄μμ λ³κ²½μ 컨ν μ΄λ 쿼리 μ¬νκ°λ₯Ό νΈλ¦¬κ±°ν μ μμΌλ©°, μ΄λ μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€. λμ λ μ΄μμ μ΄λ(CLS) λ©νΈλ¦μ μ¬μ©νμ¬ λ μ΄μμ λ³κ²½ λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°νμμμ€.
content-visibility: autoμ¬μ©: νλ©΄ λ°μ μκ±°λ μ¦μ λ λλ§ν νμκ° μλ μ½ν μΈ μ κ²½μ°content-visibility: autoλ₯Ό μ¬μ©νμμμ€. μ΄λ κ² νλ©΄ λΈλΌμ°μ κ° ν΄λΉ μ½ν μΈ κ° νμλ λκΉμ§ λ λλ§μ 건λλΈ μ μμ΄ μ΄κΈ° νμ΄μ§ λ‘λ μ±λ₯μ κ°μ νκ³ μ»¨ν μ΄λ 쿼리 νκ°μ μν₯μ μ€μΌ μ μμ΅λλ€.
4. 리μ¬μ΄μ¦ μ΄λ²€νΈ λλ°μ΄μ€ λλ μ€λ‘νλ§
리μ¬μ΄μ¦ μ΄λ²€νΈμ κΈ°λ°νμ¬ μ»¨ν μ΄λ 쿼리 μ¬νκ°λ₯Ό νΈλ¦¬κ±°νκΈ° μν΄ JavaScriptλ₯Ό μ¬μ©νλ κ²½μ°, μ΄λ²€νΈμ λΉλλ₯Ό μ€μ΄κΈ° μν΄ λλ°μ΄μ± λλ μ€λ‘νλ§μ κ³ λ €νμμμ€. νΉν λΉ λ₯Έ 리μ¬μ΄μ¦ μμ μ κ²½μ° λμμ΄ λ μ μμ΅λλ€.
μμ (Lodashμ debounce ν¨μ μ¬μ©):
import { debounce } from 'lodash-es';
const resizeHandler = () => {
// 컨ν
μ΄λ 쿼리 μ¬νκ° νΈλ¦¬κ±°
// (μ: 컨ν
μ΄λ ν¬κΈ° λλ μμ± μ
λ°μ΄νΈ)
};
const debouncedResizeHandler = debounce(resizeHandler, 100);
window.addEventListener('resize', debouncedResizeHandler);
μ΄ μ½λλ resizeHandler ν¨μλ₯Ό λλ°μ΄μ±νμ¬ μ°½μ΄ λΉ λ₯΄κ² 리μ¬μ΄μ¦λλλΌλ 100λ°λ¦¬μ΄λ§λ€ ν λ²λ§ μ€νλλλ‘ ν©λλ€.
5. 컨ν μ΄λ 쿼리 κ²°κ³Ό μΊμ±
κ²½μ°μ λ°λΌ 컨ν μ΄λ 쿼리 νκ° κ²°κ³Όλ₯Ό μΊμ±νμ¬ μ€λ³΅ κ³μ°μ νΌν μ μμ΅λλ€. 컨ν μ΄λμ ν¬κΈ°λ μμ±μ΄ μμ£Ό λ³κ²½λμ§ μλ κ²½μ° νΉν μ μ©ν©λλ€.
μμ (κ°λ¨ν μΊμ± λ©μ»€λμ¦ μ¬μ©):
const containerQueryCache = new Map();
const evaluateContainerQuery = (containerElement, query) => {
const cacheKey = `${containerElement.id}-${query}`;
if (containerQueryCache.has(cacheKey)) {
return containerQueryCache.get(cacheKey);
}
// 컨ν
μ΄λ 쿼리 νκ°
const containerWidth = containerElement.offsetWidth;
const result = query(containerWidth); // 'query'κ° μ‘°κ±΄μ νκ°νλ ν¨μλΌκ³ κ°μ
containerQueryCache.set(cacheKey, result);
return result;
};
μ΄ μ½λλ 컨ν μ΄λ IDμ 쿼리 μ체λ₯Ό κΈ°λ°μΌλ‘ 컨ν μ΄λ 쿼리 νκ° κ²°κ³Όλ₯Ό μΊμ±ν©λλ€. 쿼리λ₯Ό νκ°νκΈ° μ μ κ²°κ³Όκ° μ΄λ―Έ μΊμλμ΄ μλμ§ νμΈν©λλ€. κ·Έλ λ€λ©΄ μΊμλ κ²°κ³Όλ₯Ό λ°νν©λλ€. κ·Έλ μ§ μμΌλ©΄ 쿼리λ₯Ό νκ°νκ³ , κ²°κ³Όλ₯Ό μΊμ±ν λ€μ, λ°νν©λλ€.
6. ꡬ체μ±(Specificity) νλͺ νκ² μ¬μ©νκΈ°
CSS ꡬ체μ±μ μ¬λ¬ κ·μΉμ΄ μΆ©λν λ μ΄λ€ CSS κ·μΉμ΄ μμμ μ μ©λλμ§λ₯Ό κ²°μ ν©λλ€. λ§€μ° κ΅¬μ²΄μ μΈ μ νμλ λ ꡬ체μ μΈ μ νμλ³΄λ€ νκ° λΉμ©μ΄ λ λ§μ΄ λ€ μ μμ΅λλ€. 컨ν μ΄λ 쿼리λ₯Ό μ¬μ©ν λ λΆνμν μ±λ₯ μ€λ²ν€λλ₯Ό νΌνκΈ° μν΄ κ΅¬μ²΄μ±μ νλͺ νκ² μ¬μ©νμμμ€.
- μ§λμΉκ² ꡬ체μ μΈ μ νμ νΌνκΈ°: μνλ μμλ₯Ό νκ²ν νλ λ° νμν μ΅μνμ ꡬ체μ±μ μ¬μ©νμμμ€. IDλ μ§λμΉκ² 볡μ‘ν μ νμ 체μΈμ μ¬μ©νμ§ λ§μμμ€.
- CSS λ³μ μ¬μ©: CSS λ³μ (μ¬μ©μ μ μ μμ±)λ κ΅¬μ²΄μ± μΆ©λμ μ€μ΄κ³ CSS μ½λλ₯Ό λ¨μννλ λ° λμμ΄ λ μ μμ΅λλ€.
μμ:
λ€μ λμ :
#container .card .card-content p {
font-size: 1.1em;
}
λ€μκ³Ό κ°μ΄ κ³ λ €νμμμ€:
.card-content p {
font-size: 1.1em;
}
.card-content p μ νμκ° μνλ μμλ₯Ό νκ²ν
νλ λ° μΆ©λΆνλ€λ©΄, λ ꡬ체μ μΈ #container .card .card-content p μ νμλ₯Ό μ¬μ©νλ κ²μ νΌνμμμ€.
7. λμμ μ κ·Ό λ°©μ κ³ λ €νκΈ°
κ²½μ°μ λ°λΌ 컨ν μ΄λ μΏΌλ¦¬κ° κ°μ₯ μ±λ₯μ΄ λ°μ΄λ μ루μ μ΄ μλ μ μμ΅λλ€. λμμ μ κ·Ό λ°©μμ κ³ λ €νμμμ€:
- λ·°ν¬νΈ κΈ°λ° λ―Έλμ΄ μΏΌλ¦¬: μ€νμΌ λ³κ²½μ΄ μ£Όλ‘ λ·°ν¬νΈ ν¬κΈ°μ κΈ°λ°νλ κ²½μ°, λ·°ν¬νΈ κΈ°λ° λ―Έλμ΄ μΏΌλ¦¬κ° μ»¨ν μ΄λ μΏΌλ¦¬λ³΄λ€ λ ν¨μ¨μ μΌ μ μμ΅λλ€.
- JavaScript κΈ°λ° μ루μ : λ§€μ° λ³΅μ‘νκ±°λ λμ μΈ μ€νμΌλ§ μλ리μ€μ κ²½μ° JavaScriptκ° λ λ§μ μ μ΄λ ₯κ³Ό μ μ°μ±μ μ 곡ν μ μμ΅λλ€. κ·Έλ¬λ JavaScript μ½λμ μ±λ₯ μν₯μ μΌλμ λμ΄μΌ ν©λλ€.
- μλ² μΈ‘ λ λλ§: μλ² μΈ‘ λ λλ§(SSR)μ μλ²μμ HTMLμ 미리 λ λλ§νμ¬ μ΄κΈ° νμ΄μ§ λ‘λ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ 컨ν μ΄λ 쿼리 νκ°λ₯Ό ν¬ν¨ν ν΄λΌμ΄μΈνΈ μΈ‘ μ²λ¦¬ μꡬλμ μ€μΌ μ μμ΅λλ€.
μ€μ μμ λ° κ³ λ € μ¬ν
μ μμκ±°λ μν λͺ©λ‘
μ μμκ±°λμμ μν λͺ©λ‘μ μ’
μ’
그리λ λλ 컨ν
μ΄λ λ΄μ μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ μ‘°μ λ©λλ€. 컨ν
μ΄λ 쿼리λ₯Ό μ¬μ©νμ¬ κΈκΌ΄ ν¬κΈ°, μ΄λ―Έμ§ ν¬κΈ° λ° κ·Έλ¦¬λ μ΄ μλ₯Ό μ‘°μ ν μ μμ΅λλ€. 쿼리 λ¨μν, μν μΉ΄λ λ΄ νμν μμλ§ νκ²ν
, νλ©΄ λ° μνμ λν content-visibility κ³ λ €λ₯Ό ν΅ν΄ μ΅μ ννμμμ€.
λμ보λ κ΅¬μ± μμ
λμ보λλ μ’ μ’ λ€μν νλ©΄ ν¬κΈ°μ λ§κ² μ‘°μ λμ΄μΌ νλ μλ§μ κ΅¬μ± μμλ₯Ό ν¬ν¨ν©λλ€. 컨ν μ΄λ 쿼리λ₯Ό μ¬μ©νμ¬ μ΄λ¬ν κ΅¬μ± μμμ λ μ΄μμκ³Ό μ€νμΌμ μ‘°μ ν μ μμ΅λλ€. μ΅μ νμλ κ΅¬μ± μμ λ λλ§μ 격리νκΈ° μν΄ CSS Containment μ¬μ©, JavaScriptκ° λ μ΄μμ μ‘°μ μ κ΄λ ¨λ κ²½μ° λ¦¬μ¬μ΄μ¦ μ΄λ²€νΈ λλ°μ΄μ±, μ μ ν κ²½μ° μ»¨ν μ΄λ 쿼리 κ²°κ³Ό μΊμ±μ΄ ν¬ν¨λ©λλ€.
κ΅μ ν(i18n) λ° νμ§ν(L10n)
ν
μ€νΈ κΈΈμ΄λ μΈμ΄μ λ°λΌ ν¬κ² λ€λ¦
λλ€. ν
μ€νΈ κΈΈμ΄κ° 컨ν
μ΄λ ν¬κΈ°μ λ―ΈμΉλ μν₯κ³Ό 컨ν
μ΄λ μΏΌλ¦¬κ° μ΄λ»κ² λ°μνλμ§ κ³ λ €νμμμ€. νμλλ μΈμ΄μ λ°λΌ 컨ν
μ΄λ 쿼리 λΈλ μ΄ν¬ν¬μΈνΈλ₯Ό μ‘°μ ν΄μΌ ν μλ μμ΅λλ€. CSS λ
Όλ¦¬ μμ± (μ: width λμ inline-size)μ λ€λ₯Έ μ°κΈ° λͺ¨λ (μ: μ’μ° λ°©ν₯ vs. μ°μ’ λ°©ν₯)λ₯Ό μ§μνλ λ° μ μ©ν μ μμ΅λλ€.
κ²°λ‘
컨ν μ΄λ 쿼리λ λ°μν λ° μ μν μΉ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν κ°λ ₯ν λꡬμ λλ€. κ·Έλ¬λ 컨ν μ΄λ 쿼리 νκ°μ μ±λ₯ μν₯μ μ΄ν΄νκ³ μ μ ν μ΅μ ν κΈ°μ μ μ μ©νλ κ²μ΄ μ€μν©λλ€. μ½λλ₯Ό νλ‘νμΌλ§νκ³ , 쿼리λ₯Ό λ¨μννκ³ , λ²μλ₯Ό μ΅μννκ³ , 컨ν μ΄λ λ μ΄μμμ μ΅μ ννκ³ , μΊμ±μ μ¬μ©ν¨μΌλ‘μ¨ μ»¨ν μ΄λ μΏΌλ¦¬κ° ν¨μ¨μ μΌλ‘ μλνκ³ μνν μ¬μ©μ κ²½νμ κΈ°μ¬νλλ‘ ν μ μμ΅λλ€. μ΅μ νλ λ°λ³΅μ μΈ νλ‘μΈμ€μμ κΈ°μ΅νμμμ€. μ ν리μΌμ΄μ μ΄ λ°μ ν¨μ λ°λΌ μ½λλ₯Ό μ§μμ μΌλ‘ νλ‘νμΌλ§νκ³ μ±λ₯μ λͺ¨λν°λ§νμ¬ μ μ¬μ μΈ λ³λͺ© νμμ μλ³νκ³ ν΄κ²°νμμμ€. λν, 컨ν μ΄λ 쿼리μ μ±λ₯ μ΄μ μ λ―Έλμ΄ μΏΌλ¦¬μ κ°μ λμκ³Ό μ μ€νκ² λΉκ΅ν΄μΌ ν©λλ€. κ²½μ°μ λ°λΌ μ±λ₯ μ΄μ μ΄ μμ μλ μμΌλ©°, μ ν΅μ μΈ μ κ·Ό λ°©μμ΄ λ μ ν©ν μ μμ΅λλ€.