패스트캠퍼스 강의를 정리한 내용입니다.
"The RED : 견고한 UI 설계를 위한 마크업 가이드 by 정찬명"
참고 : https://web.dev/cls/
첫 페인팅 이후 뷰포트 안에서 배치가 바뀌는 상황
(페이지가 덜컬덜컥 로딩 되면서 사용자가 정확한 위치에 포인팅 하기 어려운 사황)
충격 비율: CLS 발생으로 배치가 바뀐 영역의 비율
이동 비율: CLS 발생을 초래한 영역의 비율 (예를 들어 갑자기 등장한 배너 영역의 비율)
동적으로 추가하는 콘텐츠에 자리 표시자(콘텐츠가 들어갈 고정 사이즈 영역) 제공
<style>
.heroBanner {
min-height: 100px;
background: gray;
}
</style>
이미지/영상 요소에 비율 힌트 제공 (width, height 값 설정)
→ 인라인으로 width, height 값 작성 후 CSS로 width, height 값을 따로 설정하여 해당 인라인 값으로 사이즈가 제공되지 않더라도 width, height 값의 비율이 중요한 것이므로 꼭 작성할 것
→ 웹브라우저는 img 태그 내 작성한 width, height 값으로 이미지 비율을 계산함
[이미지 비율 제공 에제]
// As is 👎
<img src="..." alt>
// To be 👍
<img src="..." width="800" height="534" alt>
<style>
max-width: 100%;
height: auto;
</style>
[영상 비율 제공 예제]
* 영상 종횡비 유지하기
<style>
.Yutube {
position: relative;
padding-top: 56.25%; /* 315 / 560 * 100 */
}
.Yutube__iframe {
position: absolute;
width: 100%;
height: 100%;
top: 0;
}
</style>
*애니메이션 적용 시에는 transform 사용 (width, height 값이 변경되지 않도록 설정)
웹 폰트 사용 시 대체 글꼴로 통상적인 시스템 글꼴을 제공하는 것이 아니라, 사용 중인 웹 폰트와 특성이 비슷한 대체 글꼴 지정
예) NotoSans 웹폰트에서 Sans-serif로 변경되면 기존의 5줄이던 텍스트가 6줄로 바뀜 → 자간이 비슷한 Verdana 글꼴을 대체 글꼴로 지정하여 텍스트 5줄로 유지함으로써 컨텐츠 영역이 덜컥이는 현상 해결
<style>
// As is 🤔
font-family: 'Noto Sans KR', sans-serif;
// To be 👍
font-family: 'Noto Sans KR', Verdana, sans-serif;
</style>