Khác với thực tế là PNG là một định dạng hình ảnh phổ biến hơn, có lý do kỹ thuật nào để ủng hộ favicon.png so với favicon.ico không?
Tôi đang hỗ trợ các trình duyệt hiện đại mà tất cả đều hỗ trợ các biểu tượng yêu thích PNG.
Khác với thực tế là PNG là một định dạng hình ảnh phổ biến hơn, có lý do kỹ thuật nào để ủng hộ favicon.png so với favicon.ico không?
Tôi đang hỗ trợ các trình duyệt hiện đại mà tất cả đều hỗ trợ các biểu tượng yêu thích PNG.
Câu trả lời:
Câu trả lời được thay thế (và biến Cộng đồng Wiki) do nhiều cập nhật và ghi chú từ nhiều người khác trong chuỗi này:
Hãy tham khảo các câu trả lời khác ở đây để biết thêm chi tiết.
Tất cả các trình duyệt hiện đại (đã được thử nghiệm với Chrome 4, Firefox 3.5, IE8, Opera 10 và Safari 4) sẽ luôn yêu cầu favicon.ico
trừ khi bạn đã chỉ định một biểu tượng phím tắt thông qua <link>
. Vì vậy, nếu bạn không chỉ định rõ ràng một tệp, tốt nhất là luôn có favicon.ico
tệp, để tránh 404. Yahoo! đề nghị bạn làm cho nó nhỏ và lưu trữ.
Và bạn cũng không cần phải có một PNG cho độ trong suốt alpha. Các tệp ICO chỉ hỗ trợ độ trong suốt alpha (tức là màu 32 bit), mặc dù hầu như không có công cụ nào cho phép bạn tạo chúng. Tôi thường xuyên sử dụng Trình tạo FavIcon của Dynamic Drive để tạo favicon.ico
các tệp có độ trong suốt alpha. Đây là công cụ trực tuyến duy nhất tôi biết có thể làm điều đó.
Ngoài ra còn có một plugin Photoshop miễn phí có thể tạo ra chúng.
.ico
chỉnh sửa trong PS. Và ngay cả khi bạn làm như vậy, kết quả cuối cùng rất tệ, bạn nghĩ rằng đó .bmp
là một định dạng tốt hơn (nó bổ sung rất nhiều dữ liệu meta khiến việc chỉnh sửa lại trở thành một nỗi đau rất lớn).
Các tệp .png rất đẹp, nhưng các tệp .ico cũng cung cấp độ trong suốt của kênh alpha, cộng với chúng cung cấp cho bạn khả năng tương thích ngược.
Hãy xem ví dụ về loại StackOverflow sử dụng (lưu ý rằng nó trong suốt):
<link rel="shortcut icon" href="http://sstatic.net/so/favicon.ico">
<link rel="apple-touch-icon" href="http://sstatic.net/so/apple-touch-icon.png">
Điều thú vị của apple là dành cho người dùng iphone tạo lối tắt đến trang web.
Ưu điểm về mặt lý thuyết của các tệp * .ico là chúng là các thùng chứa có thể chứa nhiều hơn một biểu tượng. Chẳng hạn, bạn có thể lưu trữ hình ảnh với kênh alpha và phiên bản 16 màu cho các hệ thống cũ hoặc bạn có thể thêm các biểu tượng 32x32 và 48x48 (sẽ hiển thị khi kéo liên kết đến Windows explorer).
Ý tưởng tốt này, tuy nhiên, có xu hướng xung đột với việc triển khai trình duyệt.
PNG có 2 ưu điểm: nó có kích thước nhỏ hơn và được sử dụng và hỗ trợ rộng rãi hơn (trừ trường hợp favicon). Như đã đề cập trước ICO, có thể có nhiều biểu tượng kích thước, rất hữu ích cho các ứng dụng máy tính để bàn, nhưng không quá nhiều cho các trang web. Tôi khuyên bạn nên đặt một favicon.ico trong thư mục gốc của ứng dụng. Nếu bạn có quyền truy cập vào Đầu trang của trang web, hãy sử dụng thẻ để trỏ đến tệp png. Vì vậy, trình duyệt cũ hơn sẽ hiển thị favicon.ico và các trình duyệt mới hơn png.
Để tạo tệp Png và Biểu tượng, tôi muốn giới thiệu The Gimp .
Một số công cụ xã hội như Google+ sử dụng một phương pháp đơn giản để lấy favicon cho các liên kết bên ngoài, tìm nạp http://your.domainname.com/favicon.ico
Vì họ không tìm nạp trước nội dung HTML, <link>
thẻ sẽ không hoạt động. Trong trường hợp này, bạn có thể muốn sử dụng quy tắc mod_rewrite hoặc chỉ đặt tệp vào vị trí mặc định.
Một ico có thể là một png.
Chính xác hơn, bạn có thể lưu trữ một hoặc nhiều png bên trong định dạng chứa tối thiểu này, thay vì bitmap + alpha thông thường mà mọi người đều liên kết mạnh mẽ với ico.
Hỗ trợ đã cũ, xuất hiện trong Windows Vista (2007) và được các trình duyệt hỗ trợ tốt, mặc dù không nhất thiết phải bằng phần mềm chỉnh sửa biểu tượng.
Bất kỳ png hợp lệ (toàn bộ bao gồm tiêu đề) có thể được thêm vào bởi một tiêu đề ico 6 byte và thư mục hình ảnh 16 byte.
GIMP có hỗ trợ riêng. Chỉ cần xuất dưới dạng ico và đánh dấu "Nén (PNG)".
Tránh PNG trong mọi trường hợp nếu bạn muốn tương thích IE6 đáng tin cậy.
<link>
mã trong trang cho các trình duyệt hiện đại.
Đối với những gì nó có giá trị, tôi làm điều này:
<!-- Favicon - Generic -->
<link rel="icon" href="path/favicon-32_x_32.png" sizes="32x32">
<link rel="icon" href="path/favicon-57_x_57.png" sizes="57x57">
<link rel="icon" href="path/favicon-76_x_76.png" sizes="76x76">
<link rel="icon" href="path/favicon-96_x_96.png" sizes="96x96">
<link rel="icon" href="path/favicon-128_x_128.png" sizes="128x128">
<link rel="icon" href="path/favicon-192_x_192.png" sizes="192x192">
<link rel="icon" href="path/favicon-228_x_228.png" sizes="228x228">
<!-- Favicon - Android -->
<link rel="shortcut icon" href="path/favicon-196_x_196.png" sizes="196x196">
<!-- Favicon - iOS -->
<link rel="apple-touch-icon" href="path/favicon-120_x_120.png" sizes="120x120">
<link rel="apple-touch-icon" href="path/favicon-152_x_152.png" sizes="152x152">
<link rel="apple-touch-icon" href="path/favicon-180_x_180.png" sizes="180x180">
Và tôi vẫn giữ favicon.ico trong root.