해당 글의 내용들을 담은 예시 구현 코드는 여기서 확인할 수 있다.
각각의 속성에 맞게끔 html 파일들을 따로 작성하였으니, 직접 눈으로 확인하고 싶은 분들은 확인하면 좋을 것 같다.
(container query처럼 몇몇 속성들은 아직 지원하지 않는 브라우저가 있으니, 주의해야 한다.)
Customizable theming for base UI form controls
기본으로 제공되는 input들에 대한 강조 색상을 지정할 수 있다.
color-scheme 속성에 대해서도 자동 조정 값을 제공한다. (light / dark mode)
:root {
color-scheme: light dark;
accent-color: magenta;
}
기본으로 제공되는 Modal 요소.
접근성까지 고려되어 있음.
(키보드 포커싱: space, enter로 열기 / esc로 닫기 / 뒷 배경 요소에 대한 접근 제한 등)
Going back and forth, instantly.
기존에 safari를 사용해봤다면 알 것.
(특정 페이지에서 뒤로가기 시에, 이전 페이지 리프레시 없이 바로 표시되는 것)
Devtools에서 가능/불가능한 페이지에 대한 이유 설명해줌.
(Application > Cache > Back/forward cache)
ability to delay rendering of images to prioritize more critical page assets.
이미지 소스가 많은 페이지에 대해서 간단하게 성능 개선을 할 수 있음.
<img src="" loading="lazy" />
<iframe src="" loading="lazy" />
.whatever {
aspect-ratio: 16 / 9;
}
prerequisite for container queries
defer rendering of DOM through developer-controlled subtree isolation.
contain 속성값에 따라 특정 요소(content)를 독립적으로 관리할 수 있음.
content 내부에 어떤 새로운 요소가 추가되더라도, 브라우저는 content 바깥에 대해서 relayout이나 repaint를 할 필요가 없는 것으로 이해하게 된다. 만약 content 속성의 요소를 감싸고 있는 부모 요소가 content의 사이즈에 의존하는 것이라면, 사이즈 변경에 대해서 새롭게 측정할 필요가 있을 것이다.
[예시] https://wit.nts-corp.com/2019/07/08/5594
<h1>My blog</h1>
<article>
<h2>Heading of a nice article</h2>
<p>Content here.</p>
</article>
<article>
<h2>Another heading of another article</h2>
<p>More content here.</p>
</article>
article {
contain: content;
/* content는 layout, paint의 축약어이다.*/
}
Control media via the OS and devices.
스마트워치를 생각하면 쉬울 듯.
can clone more things like blobs, image, bitmaps, typed array.
can use it even NodeJS, Deno
//before
const clone1 = JSON.parse(JSON.stringify(obj))
//after
const clone2 = structuredClone(obj)
async function blobToImg(blob){
const url = URL.createObjectURL(blob)
try {
const img = new Image();
img.src = url;
await img.decode();
return img;
} finally {
URL.revokeObjectURL(url)
}
}
const blobToImg = (blob) => createImageBitmap(blob);
class Whatever extends EventTarget {
#counter = 0
get counter() {
return this.#counter
}
#fireIncrementEvent() {
this.dispatchEvent(new Event('increment'))
}
incrementCounter() {
this.#counter++;
this.#fireIncrementEvent();
}
}
//before
const last = array[array.length - 1];
const last = array.slice(-1)[0];
//after
const last = array.at(-1)
User-controlled CSS layer precedence
layer는 말 그대로, css 스타일들을 layer라는 단위로 묶음하여 겹겹이 쌓으면서 적용할 수 있다는 것.
위쪽에 (나중에) 추가된 layer는 동일한 selector에 대한 속성값이 기존에 있다고 하더라도,
우선순위에 상관없이 덮어쓰게 된다.
CSS의 현재와 미래, State of CSS 2022 - Google I/O (0) | 2022.05.30 |
---|---|
QR 스마트 업로드 (feat.카카오톡 챗봇) (2) | 2020.07.23 |
웹 설문 영상 미리보기 (video src에 사용되는 영상의 코덱) (0) | 2020.07.21 |
비동기 작업들(Async Processes)과 시한폭탄(timeout) (2) | 2020.07.15 |
Javascript 엔진 (0) | 2019.08.31 |
댓글 영역