โซลูชันนักฆ่าในปี 2020
การแก้ปัญหานี้จำเป็นต้องมาเก้าปีหลังจากที่คำถามถูกถามเดิมเพราะจนกระทั่งเมื่อไม่นานมานี้เบราว์เซอร์ส่วนใหญ่ไม่สามารถจัดการ favicons ใน.svg
รูปแบบได้
นั่นไม่ใช่กรณีอีกต่อไป
ดู: https://caniuse.com/#feat=link-icon-svg
1) เลือก SVG เป็นรูปแบบ Favicon
ตอนนี้ในเดือนมิถุนายน 2020 เบราว์เซอร์เหล่านี้สามารถรองรับSVG Favicons :
- โครเมียม
- Firefox
- ขอบ
- อุปรากร
- Chrome สำหรับ Android
- เบราว์เซอร์ KaiOS
โปรดทราบว่าเบราว์เซอร์เหล่านี้ยังไม่สามารถ:
- การแข่งรถวิบาก
- iOS Safari
- Firefox สำหรับ Android
จากที่กล่าวมาข้างต้นเราสามารถใช้SVG Faviconได้อย่างมั่นใจ
2) แสดง SVG เป็น Data URI
วัตถุประสงค์หลักที่นี่คือการหลีกเลี่ยงการร้องขอ HTTP
ในฐานะที่เป็นโซลูชั่นอื่น ๆ ที่ได้กล่าวเป็นวิธีที่ฉลาดสวยที่จะทำเช่นนี้คือการใช้URI ข้อมูลมากกว่าHTTP URL
SVGs (โดยเฉพาะ SVG ขนาดเล็ก) ยืมตัวเองอย่างสมบูรณ์แบบไปยัง Data URIs เพราะส่วนหลังนั้นเป็นเพียงข้อความธรรมดา (ด้วยอักขระที่อาจคลุมเครือใด ๆ ที่เข้ารหัสเปอร์เซ็นต์) และที่ผ่านมาเป็น XML สามารถเขียนออกมาเป็นบรรทัดยาวของข้อความธรรมดา ของรหัสเปอร์เซ็นต์) ตรงไปตรงมาอย่างไม่น่าเชื่อ
3) SVG ทั้งหมดเป็น Emoji
ในเดือนธันวาคม 2019 ลีอันโดรลินาเรสเป็นหนึ่งในคนแรกที่ตระหนักว่าตั้งแต่ Chrome เข้าร่วม Firefox ในการสนับสนุน SVG Favicons มันคุ้มค่าที่จะทำการทดลองเพื่อดูว่า favicon สามารถสร้างจากอิโมจิได้หรือไม่:
https://lean8086.com/articles/using-an-emoji-as-favicon-with-svg/
ลางสังหรณ์ของ Linares ถูกต้อง
หลายเดือนต่อมา (มีนาคม 2563) รหัสโจรสลัด Lea Verou ตระหนักในสิ่งเดียวกัน:
https://twitter.com/leaverou/status/1241619866475474946
และพวกฟaviconsก็ไม่เหมือนเดิมอีกเลย
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>
และนี่คือ SVG เดียวกันกับData URI :
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
และสุดท้ายนี่คือData URIในฐานะ Favicon:
<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%);"
Black Unicorn Favicon:
<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" />