terminal
Weekly Digest // STYLING — Week 31-2026
paletteWeekly Report

CSS route matching으로 navigation state를… — 2026년 31주 CSS 및 스타일링

CSS architecture, utility frameworks, and animation performance

calendar_todaysummarizeWeek 31-2026
내비게이션

CSS route matching으로 navigation state를 style한다

제안된 CSS Route and Navigation Matching 명세는 style이 navigation의 출발점, 도착점, trigger element에 반응하게 합니다. Named pattern은 @route로 선언하고 @navigation은 from·to endpoint를 query해 JavaScript 없이 view-transition type을 지정합니다. :nav-source pseudo-class는 클릭된 element를 선택해 list thumbnail을 detail page hero로 연결하고, :link-to()는 목적 route에 따라 link를 style합니다. Parameter matching과 base URL 동작은 아직 open question입니다. 이 제안은 CSSWG 논의를 앞두고 experimental Chrome Canary feature 뒤에서만 사용할 수 있으므로 production CSS가 아니라 feedback 대상으로 봐야 합니다.

Read Articlearrow_forward
Article · 도형READ TIME: 9m

CSS border-shape, 장식이 임의의 path를 따르게 한다

실험적인 border-shape property는 basic shape를 element에 적용하면서 border, outline, box shadow가 그 path를 따르게 합니다. clip-path와 달리 장식을 잘라내지 않으며 익숙한 shape(), polygon() 등의 syntax를 다시 사용할 수 있습니다. 값 하나는 shape를 stroke하고 값 두 개는 바깥과 안쪽 path를 정의해 cutout, partial frame, breakout decoration을 만듭니다. Content는 별도로 관리하지 않으면 기존 직사각형 box를 따르고 border-radius는 무시됩니다. 현재 Chrome 전용이므로 단순한 fallback과 함께 progressive enhancement로 적용해야 합니다.

READ_FULL_LOGarrow_forward
Article · 타이포그래피READ TIME: 6m

lh unit, line-height를 layout primitive로 바꾸다

CSS lh unit은 element의 계산된 line height와 같아서 typographic rhythm을 layout 계산에 사용할 수 있게 합니다. Ahmad Shadeed는 paragraph spacing과 반복되는 paper-line gradient에 line height 하나를 사용해 font size가 바뀌어도 정렬을 유지합니다. 5lh로 제한한 list는 정확히 다섯 줄 뒤에 fade할 수 있고 1lh의 비율로 정한 icon은 주변 label을 따라갑니다. 더 발전된 예시는 calc-size()round()를 결합해 float image의 height를 line grid에 맞춥니다. 이런 관계는 중복 pixel 값을 없애고 responsive typography 변경을 안전하게 만듭니다.

READ_FULL_LOGarrow_forward
Article · 브라우저 지원READ TIME: 3m

CSS progress(), Firefox Nightly 도착…native mixin도 구체화

Firefox Nightly는 CSS progress() function과 no-clamp keyword를 활성화했으며 stable Firefox 1559월 1일 출시가 목표입니다. Safari Technology Preview 248no-clamp를 추가해 value normalization의 interoperability gap을 좁혔습니다. 별도로 Chromium은 native CSS mixin prototype 의향을 밝혔지만 specification과 implementation은 아직 초기 단계입니다. 이 roundup은 framework breakpoint도 비교하며 md 같은 label이 보편적인 device width를 뜻하지 않는다고 경고합니다. Prerelease browser에서 experiment를 시작할 수 있지만 fallback을 유지하고 예정된 ship date를 현재 baseline support로 취급해서는 안 됩니다.

READ_FULL_LOGarrow_forward
Video · CSS 기능4:34

CSS가 마침내 HTML attribute를 읽을 수 있게 됐습니다

CSS attr() 업그레이드를 사용하면 HTML attribute의 typed value를 pseudo-element content가 아닌 다른 property에도 공급할 수 있습니다. type(<color>)로 color를 parse하고 pixel, degree, percentage, millisecond 단위를 붙이며 data가 없거나 잘못됐을 때 comma 뒤 fallback을 둘 수 있습니다. 예제는 data attribute로 progress bar width와 staggered animation delay를 직접 구동합니다. 또한 custom-ident를 사용해 matching ID를 page 사이의 고유한 view-transition name으로 만들어 반복 selector를 없앱니다. 임의의 styling을 markup으로 옮기라는 뜻은 아니며, 당시 Chrome에서만 안정적으로 동작하고 다른 browser와 VS Code가 일부 syntax를 거부하거나 경고한다는 제약이 있습니다.

AI_INFOGRAPHIC
CSS가 마침내 HTML attribute를 읽을 수 있게 됐습니다 — infographicWATCH_VIDEOarrow_forward
Video · CSS 기능5:55

CSS가 일을 하게 두세요

Kevin Powell은 raw precipitation data를 CSS custom property로 넘겨 presentation 계산을 JavaScript 밖으로 옮깁니다. CSS는 calc()로 필요한 단위를 붙이고 visual maximum을 component style 옆에 저장하며 min()으로 rain indicator를 100%에서 제한합니다. API 값은 JavaScript에 두되 이를 height로 변환하는 rule은 향후 styling 변경을 찾기 쉬운 곳에 남깁니다. 이 pattern은 의미를 알 수 없는 inline pixel 값을 없애고 visual constant를 발견하기 쉽게 만듭니다. JavaScript 작업 감소가 성능을 개선할 수 있다고 보지만, Powell은 이를 가정하지 말고 측정해야 할 가설로 명시합니다.

WATCH_VIDEOarrow_forward
summarizeDigest_Summary

이번 주 CSS 작업은 browser navigation, shape decoration, typographic rhythm을 declarative primitive에 더 가깝게 옮겼습니다. 제안된 CSS Route and Navigation Matching 명세는 @route, @navigation, :nav-source, :link-to()를 도입합니다. 이를 통해 view transition 방향과 link styling이 JavaScript event 처리 없이 출발점, 도착점, 클릭된 element에 반응할 수 있습니다.

Shape API도 확장되고 있습니다. 실험적인 border-shapeclip-path와 같은 basic shape를 받으면서 border, outline, shadow가 path를 따르게 하며, 두 shape 형식으로 바깥과 안쪽 경계를 정의해 cutout과 복잡한 frame을 만듭니다. Ahmad Shadeed의 lh 가이드는 더 즉시 사용할 수 있는 primitive를 보여 줍니다. spacing, mask, icon, float image를 계산된 line-height에 맞추면 typography가 바뀌어도 안정적으로 정렬됩니다. 이 기능들은 visual effect를 고정 pixel이나 JavaScript state와 동기화하는 대신 관계 자체를 CSS에 기록한다는 공통 설계 원칙을 가집니다.

Browser convergence는 아직 끝나지 않았습니다. Firefox의 progress() 구현은 Nightly에 있고 Firefox 155에 예정되어 있으며, CSS mixin은 prototype 단계이고, border-shape는 Chrome 전용입니다. Progressive enhancement와 support check는 구현의 일부로 남아 있습니다.

두 practical video는 그 원칙을 구체화합니다. 업그레이드된 CSS attr()은 기존 data attribute를 typed color, length, delay, identifier로 바꾸며, Kevin Powell은 raw application data를 custom property로 전달하고 unit 변환, cap, visual constant를 calc()min()에 둡니다. 두 pattern 모두 synchronization code를 줄이지만 typed attribute support에는 여전히 Chrome 우선 progressive-enhancement 경로가 필요합니다.

Key Takeaways
  • Chrome Canary에서 @route@navigation 기반 navigation-aware view transition을 시험하되 CSSWG syntax와 browser support가 안정될 때까지 현재 JavaScript 경로를 유지하세요.
  • text rhythm을 따라야 하는 spacing에는 1lh, line-count mask에는 5lh, icon에는 line-height 기반 크기를 사용해 typography 변경에도 정렬을 유지하세요.
  • Typed attr()은 markup에 이미 있는 data의 progressive enhancement로만 사용하고 non-Chromium support와 tooling이 따라올 때까지 fallback을 유지하세요.