적응형 파비콘 빌드

적응형 favicon을 빌드하는 방법에 관한 기본 개요입니다.

이 게시물에서는 SVG로 적응형 favicon을 빌드하는 방법에 관한 생각을 공유하고자 합니다. 데모를 사용해 보세요.

macOS 시스템 밝은 테마와 어두운 테마 변경에 맞게 조정된 브라우저 탭이 표시됩니다. 데모 사용해 보기

동영상을 선호하는 경우 이 게시물의 YouTube 버전을 참고하세요.

개요

맞춤 파비콘은 웹 프로젝트를 다듬는 데 좋은 방법입니다. 데스크톱 브라우저 탭에 표시되며 '나중에 읽기' 리더, 사이트로 연결되는 다른 블로그 게시물 등에도 표시됩니다. 기존에는 .ico 파일 형식으로 이 작업을 수행했지만 최근에는 브라우저에서 벡터 형식인 SVG를 사용할 수 있게 되었습니다. 점진적 개선을 사용하면 지원이 잘 되는 .ico favicon을 제공하고 가능한 경우 .svg로 업그레이드할 수 있습니다.

SVG는 품질 손실 없이 크기를 조절할 수 있으며 크기가 매우 작을 수 있습니다. 또한 삽입된 CSS, 심지어 삽입된 미디어 쿼리도 포함할 수 있습니다. 즉, 리더 앱 또는 북마크 바에서 SVG favicon이 사용되는 경우 SVG 내부에 제공된 어두운 환경설정 스타일로 인해 사용자가 테마 관련 (밝은 색상 또는 어두운 색상) 아이콘을 가져올 수 있습니다. 그러면 SVG는 밝은 색상과 어두운 색상 사용자 환경설정에 맞게 삽입된 스타일을 사용하여 조정됩니다.

밝은 색상과 어두운 색상을 쉽게 구분할 수 있는 큰 크기의 favicon 예시

각 브라우저의 밝은 탭과 어두운 탭에서 상단부터 하단까지 적응형 아이콘의 개요를 보여줍니다. Safari, Firefox, Chrome
각 브라우저의 밝은 탭과 어두운 탭에서 위에서 아래로 적응형 아이콘의 개요를 제공합니다. Safari, Firefox, Chrome

마크업

SVG 마크업은 더 동적 유형의 코드를 보유할 수 있는 .svg 파일 형식 확장자를 사용하는 XML입니다.

favicon.svg를 만들어 시작합니다.

favicon.svg라는 새 파일을 만들고 다음을 추가합니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">

</svg>

다음은 내 SVG 파일입니다. 아트워크와 관련된 viewBox의 크기를 조절했습니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">

</svg>

도형 및 경로 추가

다음으로 SVG 경로 코드를 추가합니다. 이는 코드 편집기에서 SVG를 여는 것을 의미하는 경우가 많지만, 이러한 코드는 일반적으로 인간 친화적이지 않습니다. 다음은 디자인 도구에서 SVG를 내보내고 최적화하는 방법을 안내하는 유용한 가이드입니다.

GUI 챌린지의 아트워크는 Adobe Illustrator로 제작한 디자이너가 제공했습니다. 최적화했습니다. SVGOMG를 통해 실행한 후 불필요한 부분을 수동으로 수정했습니다.

다음은 정리 후 내 skull 아트워크 경로 그룹의 예입니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <g id="skull">
    <path id="skull-outline" class="favicon-stroke" stroke-linejoin="round" d="M19.62 188.39A166.62 166.62 0 0 1 186.24 21.77c115.25 0 166.61 74.59 166.61 166.62 0 1.83-.08 3.64-.13 5.46h.13s.68 175.09.68 178.65c0 30.11-16.26 41.67-36.32 41.67-12.7 0-35.22-3.93-36.22-32.69h-.2c-1 28.76-16.81 32.69-36.22 32.69-18 0-32.87-6.78-35.77-32.53-2.9 25.75-17.8 32.53-35.8 32.53-20.06 0-36.32-11.56-36.32-41.67 0-2.48.36-24.88.36-24.88A166.68 166.68 0 0 1 19.62 188.39Z" />
    <path id="eyes-and-nose" d="M180.77 205.76c0 23.64 12.84 42.81 28.68 42.81s28.68-19.17 28.68-42.81-12.84-42.82-28.68-42.82-28.68 19.17-28.68 42.82M275 205.76c0 23.64 12.84 42.81 28.68 42.81s28.68-19.17 28.68-42.81-12.84-42.82-28.68-42.82S275 182.11 275 205.76M264.51 276.85s-29.26 43.53-20.12 49.23c7.07 4.41 20.49-16.71 20.49-16.71s12.82 22.58 16.76 20c16.24-10.71-17.13-52.5-17.13-52.5"/>
    <path id="jawline" class="favicon-stroke" fill="none" stroke-linecap="round" d="M114.92 284.33c22.54-1 22 7 22 62.48" />
  </g>
</svg>

사람이 읽을 수 있는 ID 선택자(예: #eyes-and-nose)와 클래스(예: .favicon-stroke)를 확인합니다. CSS를 준비하기 위해 직접 수정한 내용입니다. SVG가 적응형 favicon이 되기 위해 클래스와 ID를 추가할 필요는 없습니다.

HTML의 <head> 태그에서 .ico favicon 뒤에 다음을 추가합니다.

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">

새 아이콘이 .ico 버전과 동일하게 보일 수 있으므로 사용 중인지 확인합니다. DevTools의 Network 패널을 엽니다. 이미지로 필터링하고 favicon을 검색합니다.

favicon을 검색한 필터와 favicon.svg 리소스가 강조표시된 DevTools의 Network 창 스크린샷

스타일

HTML과 마찬가지로 마크업에 <style> 태그를 추가하여 해당 문서 범위에 사용할 수 있습니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
  </style>
  …
</svg>

밝은 테마 버전이 기본적으로 favicon SVG의 색상이 됩니다. 이 작업을 위해 작성한 스타일은 주로 획 및 채우기 색상입니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    .favicon-stroke {
      stroke-width: 8px;
      stroke: #8929ff;
    }
    #skull-outline { fill: white }
    #eyes-and-nose, #hat-outline { fill: #8929ff }
    #hat-fill, #hat-bill { fill: #e662e6 }
  </style>
  
</svg>

밝은 테마 favicon 미리보기 예시

다음은 가장 재미있는 부분인 어두운 테마 버전의 favicon 스타일 지정입니다. 이에 관한 스타일은 스타일 태그 내의 미디어 쿼리로 이동합니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
    @media (prefers-color-scheme: dark) {
      /* dark theme styles */
    }
  </style>
  
</svg>

SVG의 눈과 코의 채우기 색상을 덮어쓰는 어두운 테마 미디어 쿼리를 보여주는 DevTools의 스크린샷

제 결과는 다음과 같습니다.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
    @media (prefers-color-scheme: dark) {
      .favicon-stroke { stroke: #343a40 }
      #skull-outline { fill: #adb5bd }
      #hat-outline { fill: #343a40 }
      #eyes-and-nose { fill: #343a40 }
    }
  </style>
  
</svg>

어두운 테마 favicon 미리보기의 예시

밝은 보라색 테두리를 시원한 어두운 회색 (#343a40)으로 바꾸고, 두개골 뼈 색상을 흰색에서 밝은 회색 (#adb5bd)으로 변경했지만 핑크색 강조 표시 모자는 그대로 둡니다.

밝은 색과 어두운 색 favicon을 나란히 보여주는 미리보기

결론

이제 제가 어떻게 했는지 알았으니 어떻게 하시겠어요? 🙂

접근 방식을 다양화하고 웹에서 빌드하는 모든 방법을 알아보겠습니다. 데모를 만들어 트윗해 주시면 아래의 커뮤니티 리믹스 섹션에 추가해 드리겠습니다.

커뮤니티 리믹스