스타일이 지정되지 않은 텍스트 플래시(FOUT) 물리치기
4097 단어 typographydesignwebdevcss
원래 글꼴을 로드하기 위해
typeface-roboto
라는 NPM 패키지를 사용하고 있었습니다. CDN에서 가져오는 대신 글꼴을 직접 호스팅하고 싶었기 때문에 이것은 굉장했습니다. 패키지에 포함된 스타일이 FOUT(Flash of Unstyled Text)의 이유라는 것을 깨달았습니다.패키지 내부의 코드를 살펴보고 CSS 파일을 확인했습니다. 다음은 글꼴을 추가하는 방법의 예입니다.
@font-face {
font-family: 'Roboto';
font-style: normal;
font-display: swap; /* Line Causing FOUT */
font-weight: 500;
src:
local('Roboto Medium '),
local('Roboto-Medium'),
url('/fonts/roboto-latin-500.woff2') format('woff2'),
url('/fonts/roboto-latin-500.woff') format('woff');
}
@font-face
스타일이 font-display: swap;
를 사용하고 있음을 확인했습니다. swap
가 설정되면 브라우저는 폴백을 사용하기 전에 글꼴을 로드할 수 있는 매우 짧은 시간을 제공합니다. 글꼴이 완전히 로드되면 예상 글꼴로 다시 변환됩니다. 이 옵션은 성능 관점에서 보면 훌륭하지만 사용자 경험에 영향을 미칠 수 있습니다. font-display: block
를 설정하면 브라우저가 페이지에 항목을 표시하기 전에 글꼴을 가져와야 하는 시간이 늘어납니다. block
는 사용자 경험을 위해 성능을 희생합니다.내 솔루션
NPM 패키지를 사용하는 대신 모든 글꼴 파일을 내 프로젝트로 가져왔습니다. 그런 다음 CSS 내에서
font-display: block
를 사용하여 글꼴을 로드했습니다.@font-face {
font-family: 'Roboto';
font-style: normal;
font-display: block; /* No longer causing FOUT */
font-weight: 500;
src:
local('Roboto Medium '),
local('Roboto-Medium'),
url('/fonts/roboto-latin-500.woff2') format('woff2'),
url('/fonts/roboto-latin-500.woff') format('woff');
}
내 웹 사이트 디자인은 타이포그래피에 중점을 둡니다. 어떤 것이 표시되기 전에 글꼴을 로드할 시간을 조금 더 주기 위해 일부 성능을 기꺼이 희생했습니다.
Reference
이 문제에 관하여(스타일이 지정되지 않은 텍스트 플래시(FOUT) 물리치기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codebycorey/defeating-flash-of-unstyled-text-fout-5hcj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)