적응형 파비콘 빌드

적응형 파비콘을 만드는 방법에 관한 기본적인 개요입니다.

이 게시물에서는 SVG로 적응형 파비콘을 만드는 방법을 공유하고자 합니다. 데모 사용해 보기

MacOS 시스템의 밝은 테마 및 어두운 테마 변경사항에 맞게 브라우저 탭이 표시되어 있습니다. 데모 사용해 보기

동영상을 선호한다면 이 게시물의 YouTube 버전을 참조하세요.

개요

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

SVG는 품질 손실 없이 확장 및 축소가 가능하며 크기가 매우 작을 수 있습니다. 삽입된 CSS, 심지어 삽입된 미디어 쿼리까지 포함할 수 있습니다. 즉, SVG 파비콘이 리더 앱이나 북마크바에서 사용되는 경우 SVG 내부에 제공된 어두운 환경설정 스타일로 인해 사용자가 테마 관련 (밝거나 어두운) 아이콘을 받을 가능성이 있습니다. 그런 다음 SVG는 밝은 사용자 및 어두운 사용자 선호도에 맞게 삽입된 스타일을 사용하여 조정합니다.

밝은 파비콘과 어두운 파비콘의 큰 예를 쉽게 구분할 수 있습니다.

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가 적응형 파비콘이 되기 위해 클래스 및 ID를 추가할 필요는 없습니다.

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

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

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

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

스타일

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

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

밝은 테마 버전이 파비콘 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>

밝은 테마 파비콘 미리보기의 예

다음은 가장 재미있는 부분입니다. 파비콘의 어두운 테마 버전을 스타일링하는 것입니다. 이러한 스타일은 스타일 태그 내 미디어 쿼리에 적용됩니다.

<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>

어두운 테마 파비콘 미리보기의 예

밝은 보라색 테두리를 멋진 진한 회색 (#343a40)으로 바꾸고 두개골 색을 흰색에서 연한 회색 (#adb5bd)으로 바꾸고 분홍색 악센트 모자는 남겨두었습니다.

밝은 파비콘과 어두운 파비콘을 나란히 놓고 미리 볼 수 있습니다.

결론

이제 제가 어떻게 했는지 알았으니 어떻게 되세요?‽ 🙂

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

커뮤니티 리믹스