원본: 아이폰12 소개 페이지
클론: netlify 배포 페이지
img
요소에 loading="lazy", decoding="async"
적용하여 viewport 영역 밖에 있는img
요소는 지연 로딩 및 비동기 디코딩을 적용하였습니다.
<img loading="lazy" decoding="async" src="./images/logo.png" >
해상도 구간별로 css를 작성한 후, link
요소의 media
속성을 적용해서 데스크탑은 데스크탑 코드만 태블릿은 태블릿 코드만 모바일은 모바일 코드만 렌더링 하도록 하였습니다.
<link rel="stylesheet" href="./scss/main.css">
<link rel="stylesheet" href="./scss/tablet.css" media="(max-width: 1023px)">
<link rel="stylesheet" href="./scss/mobile.css" media="(max-width: 768px)">
LCP를 줄이기 위해서 히어로 이미지를 preload
하였습니다.
<link rel="preload" as="image" href="./images/purple_full.jpeg">
chrome incognito 환경에서 측정하였습니다.
LCP 점수에서 많이 깎인 모습 ... 주요 원인으로 picture 요소를 사용하여 해상도 별로 작은 사이즈의 이미지를 사용 했어야 했는데, 클론이다 보니 이미지를 구할 수 없어서 아쉬웠네요.
gsap 라이브러리를 통해 스크롤 애니메이션 구현을 하였는데, 애니메이션이 뭔가 부드럽지 않은 것 같습니다. 아무래도 애플은 네이티브로 구현한 것 같은데 ...
스크롤에 따른 video
요소 제어는 video
리소스를 다운로드 받지 못하여서 iframe을 제어하려고 하다가 온갖 오류에 직면하여 결국엔 포기
두번째 nav바의 전환효과는 도무지 모르겠어서 포기한 점
애플은 float 속성을 활용하여 반응형 헤더바를 구현하였는데, float 속성을 이해하지못하여 이를 flex로 대체하였으나 어설프게 대체한 점 (모바일로 헤더바 전환시 로고 위치가 살짝 변경되는 문제)
BEM 방법론을 도입하려 하였으나, html 구조가 딥해질수록 변수 이름이 한없이 길어져서, 그리고 갈피를 못잡겠어서 포기한 점