2020 년 킬러 솔루션
상당히 최근까지 대부분의 브라우저는 파비콘을 .svg
형식 으로 처리 할 수 없었기 때문에이 솔루션은 질문이 처음 제기 된 지 9 년이 지나야 합니다.
더 이상 그렇지 않습니다.
참조 : https://caniuse.com/#feat=link-icon-svg
1) SVG를 Favicon 형식으로 선택하십시오
현재 2020 년 6 월에 이러한 브라우저는 SVG Favicons를 처리 할 수 있습니다 .
- 크롬
- Firefox
- 가장자리
- 오페라
- Android 용 Chrome
- KaiOS 브라우저
참고는 이 브라우저는 여전히 수 없습니다 :
- 원정 여행
- iOS 사파리
- 안드로이드 용 Firefox
위의 사항을 염두에두고 SVG Favicon을 자신있게 사용할 수 있습니다 .
2) SVG를 데이터 URI로 제시
여기서 주요 목표는 HTTP 요청을 피하는 것입니다.
다른 솔루션에서 언급했듯이,이를 수행하는 현명한 방법 은 HTTP URL 대신 Data URI 를 사용하는 것 입니다.
SVG (특히 작은 SVG) 는 Data URI에 완벽하게 적합합니다 . 후자는 단순히 일반 텍스트 (모호한 문자가 백분율로 인코딩되어 있음)이고 XML은 전자가 긴 일반 텍스트 형식으로 작성 될 수 있기 때문에 백분율 코드)를 엄청나게 간단합니다.
3) 전체 SVG는 이모티콘입니다
2019 년 12 월 Leandro Linares는 Chrome이 SVG Favicons를 지원하기 위해 Firefox에 합류 한 이래로 이모티콘에서 favicon을 만들 수 있는지 실험 해 볼 가치가 있다는 사실을 처음으로 알게되었습니다.
https://lean8086.com/articles/using-an-emoji-as-favicon-with-svg/
리나 레스의 직감이 맞았습니다.
몇 달 후 (2020 년 3 월) Code Pirate Lea Verou도 같은 사실을 깨달았습니다.
https://twitter.com/leaverou/status/1241619866475474946
그리고 파비콘은 다시는 같지 않았습니다.
4) 직접 솔루션 구현 :
간단한 SVG는 다음과 같습니다.
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 16 16">
<text x="0" y="14">🦄</text>
</svg>
그리고 여기에 데이터 URI 와 동일한 SVG가 있습니다 .
data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%3E🦄%3C/text%3E%3C/svg%3E
마지막으로 Favicon으로서의 데이터 URI는 다음 과 같습니다.
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%3E🦄%3C/text%3E%3C/svg%3E" type="image/svg+xml" />
5) 더 많은 트릭
Favicon은 SVG이기 때문에 여러 가지 필터 효과 (SVG 및 CSS 모두)를 적용 할 수 있습니다.
예를 들어 위 의 White Unicorn Favicon 과 함께 필터를 적용하여 Black Unicorn Favicon 을 쉽게 만들 수 있습니다 .
style="filter: invert(100%);"
검은 유니콘 파비콘 :
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%20style='filter:%20invert(100%);'%3E🦄%3C/text%3E%3C/svg%3E" type="image/svg+xml" />