Giải pháp sát thủ năm 2020
Giải pháp này nhất thiết phải đến chín năm sau khi câu hỏi ban đầu được hỏi, bởi vì cho đến gần đây, hầu hết các trình duyệt đã không thể xử lý favicon ở .svg
định dạng.
Đó không phải là trường hợp nữa.
Xem: https://caniuse.com/#feat=link-icon-svg
1) Chọn SVG làm định dạng Favicon
Ngay bây giờ, vào tháng 6 năm 2020, các trình duyệt này có thể xử lý SVG Favicons :
- Trình duyệt Chrome
- Firefox
- Cạnh
- Opera
- Chrome cho Android
- Trình duyệt KaiOS
Lưu ý rằng các trình duyệt này vẫn không thể:
- Safari
- Safari Safari
- Firefox cho Android
Với suy nghĩ trên, chúng tôi có thể tự tin sử dụng Favicon SVG .
2) Trình bày SVG dưới dạng URI dữ liệu
Mục tiêu chính ở đây là để tránh các Yêu cầu HTTP.
Như các giải pháp khác đã đề cập, một cách khá thông minh để thực hiện việc này là sử dụng URI dữ liệu thay vì URL HTTP .
Các SVG (đặc biệt là các SVG nhỏ) tự cho vay hoàn toàn vào URI dữ liệu, vì cái sau chỉ đơn giản là văn bản gốc (với bất kỳ ký tự mơ hồ nào được mã hóa theo tỷ lệ phần trăm) và trước đây, là XML, có thể được viết ra dưới dạng một dòng văn bản dài mã phần trăm) vô cùng đơn giản.
3) Toàn bộ SVG là một biểu tượng cảm xúc
Vào tháng 12 năm 2019, Leandro Linares là một trong những người đầu tiên nhận ra rằng vì Chrome đã tham gia Firefox để hỗ trợ SVG Favicons, nên thử nghiệm xem liệu một favicon có thể được tạo ra từ biểu tượng cảm xúc hay không:
https://lean8086.com/articles/USE-an-emoji-as-favicon-with-svg/
Linh cảm của Linares đã đúng.
Vài tháng sau (tháng 3 năm 2020), Code Pirate Lea Verou nhận ra điều tương tự:
https://twitter.com/leaverou/status/1241619866475474946
Và favicon không bao giờ giống nhau một lần nữa.
4) Tự thực hiện giải pháp:
Đây là một SVG đơn giản:
<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>
Và đây là cùng một SVG như một URI dữ liệu :
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
Và cuối cùng, đây là URI dữ liệu dưới dạng 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) Nhiều mánh khóe hơn
Vì Favicon là một SVG, nên bất kỳ số lượng hiệu ứng bộ lọc nào (cả SVG và CSS) đều có thể được áp dụng cho nó.
Chẳng hạn, bên cạnh Favicon White Unicorn ở trên, chúng ta có thể dễ dàng tạo Favicon Unicorn đen bằng cách áp dụng bộ lọc:
style="filter: invert(100%);"
Kỳ lân đen 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" />