Favicon HTML 5 - Hỗ trợ?


170

Tôi đã đọc trang Favicon trên Wikipedia. Họ đề cập đến thông số HTML 5 cho Favicon:

Đặc tả HTML5 hiện tại khuyên bạn nên chỉ định các biểu tượng kích thước theo nhiều kích thước bằng cách sử dụng các thuộc tính rel = "icon" size = "danh sách kích thước biểu tượng được phân tách bằng dấu cách" trong thẻ. [ nguồn ] Nhiều định dạng biểu tượng, bao gồm các định dạng chứa như tệp Microsoft .ico và Macintosh .icns, cũng như Đồ họa vectơ có thể được cung cấp bằng cách bao gồm loại nội dung của biểu tượng ở dạng type = "loại nội dung tệp" trong nhãn.

Nhìn vào bài báo được trích dẫn (W3), họ cho thấy ví dụ này:

<link rel=icon href=favicon.png sizes="16x16" type="image/png">
<link rel=icon href=windows.ico sizes="32x32 48x48" type="image/vnd.microsoft.icon">
<link rel=icon href=mac.icns sizes="128x128 512x512 8192x8192 32768x32768">
<link rel=icon href=iphone.png sizes="57x57" type="image/png">
<link rel=icon href=gnome.svg sizes="any" type="image/svg+xml">

Câu hỏi của tôi là có trình duyệt nào hỗ trợ phương pháp HTML 5 không?

Lưu ý: Tôi biết Apple sử dụng apple-touch-iconphương pháp thẻ meta của họ so với phương thức HTML5.

Bài viết trên wikipedia tuyên bố:

Tuy nhiên, trình duyệt web Google Chrome sẽ chọn kích thước phù hợp gần nhất từ ​​các tiêu đề được cung cấp trong tiêu đề HTML để tạo biểu tượng ứng dụng 128 × 128 pixel khi người dùng chọn phím tắt Tạo ứng dụng ... từ menu "Công cụ".

Internet Explorer (v9 đến v11) và Firefox xử lý việc này như thế nào? Và bài viết có đúng trong cách Chrome xử lý Favicons HTML không? (Không có nguồn trích dẫn nào cho Chrome xác nhận điều này.)

Khi tìm kiếm, tôi không thể thực sự tìm thấy bất kỳ thông tin (đáng tin cậy) nào trên HTML 5 Favicon ngoài Điều khoản Wikipedia.


1
Một cái gì đó có vẻ kỳ lạ trong đoạn mã trên - html5 có cho phép không trích dẫn các giá trị thuộc tính không? Trả lời - stackoverflow.com/questions/6495310/ từ
jakubiszon

Câu trả lời:


330

Các câu trả lời được cung cấp (tại thời điểm của bài đăng này) chỉ là các câu trả lời liên kết nên tôi nghĩ rằng tôi sẽ tóm tắt các liên kết thành một câu trả lời và những gì tôi sẽ sử dụng.

Khi làm việc để tạo Cross Browser Favicons (bao gồm các biểu tượng cảm ứng), có một số điều cần xem xét.

Đầu tiên (tất nhiên) là Internet Explorer. IE không hỗ trợ favicon PNG cho đến phiên bản 11. Vì vậy, dòng đầu tiên của chúng tôi là một nhận xét có điều kiện cho favicon trong IE 9 trở xuống:

<!--[if IE]><link rel="shortcut icon" href="path/to/favicon.ico"><![endif]-->

Để bao gồm việc sử dụng biểu tượng, hãy tạo nó ở 32x32 pixel. Lưu ý rel="shortcut icon"cho IE để nhận ra biểu tượng nó cần từ shortcutkhông chuẩn. Ngoài ra, chúng tôi gói .icofavicon trong một nhận xét có điều kiện IE vì Chrome và Safari sẽ sử dụng .icotệp nếu có, mặc dù có các tùy chọn khác có sẵn, không phải là những gì chúng tôi muốn.

Ở trên bao gồm IE lên đến IE 9. IE 11 chấp nhận favicon PNG, tuy nhiên, IE 10 thì không. Ngoài ra IE 10 không đọc các bình luận có điều kiện, do đó IE 10 sẽ không hiển thị hình đại diện. Với IE 11 và Edge có sẵn, tôi không thấy IE 10 được sử dụng rộng rãi, vì vậy tôi bỏ qua trình duyệt này.

Đối với phần còn lại của các trình duyệt, chúng tôi sẽ sử dụng cách tiêu chuẩn để trích dẫn một favicon:

<link rel="icon" href="path/to/favicon.png">

Biểu tượng này phải có kích thước 196x196 pixel để bao phủ tất cả các thiết bị có thể sử dụng biểu tượng này.

Để che các biểu tượng cảm ứng trên thiết bị di động, chúng tôi sẽ sử dụng cách độc quyền của Apple để trích dẫn biểu tượng cảm ứng:

<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">

Sử dụng rel="apple-touch-icon-precomposed"sẽ không áp dụng độ sáng phản chiếu khi được đánh dấu trên iOS. Để iOS áp dụng sử dụng tỏa sáng rel="apple-touch-icon". Biểu tượng này phải có kích thước tới 180x180 pixel vì đó là kích thước hiện tại được Apple khuyên dùng cho iPhone và iPad mới nhất. Tôi đã đọc Blackberry cũng sẽ sử dụng rel="apple-touch-icon-precomposed".

Lưu ý: Chrome dành cho trạng thái Android:

Touch-touch- * không được dùng nữa và sẽ chỉ được hỗ trợ trong một thời gian ngắn. (Được viết dưới dạng beta cho m31 của Chrome).

Gạch tùy chỉnh cho IE 11+ trên Windows 8.1+

IE 11+ trên Windows 8.1+ cung cấp một cách để tạo các ô được ghim cho trang web của bạn.

Microsoft khuyên bạn nên tạo một vài ô ở kích thước sau:

Nhỏ: 128 x 128

Trung bình: 270 x 270

Rộng: 558 x 270

Lớn: 558 x 558

Đây phải là những hình ảnh trong suốt vì chúng ta sẽ xác định một nền màu tiếp theo.

Khi những hình ảnh này được tạo, bạn nên tạo một tệp xml được gọi browserconfig.xmlvới mã sau:

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
  <msapplication>
    <tile>
      <square70x70logo src="images/smalltile.png"/>
      <square150x150logo src="images/mediumtile.png"/>
      <wide310x150logo src="images/widetile.png"/>
      <square310x310logo src="images/largetile.png"/>
      <TileColor>#009900</TileColor>
    </tile>
  </msapplication>
</browserconfig>

Lưu tệp xml này trong thư mục gốc của trang web của bạn. Khi một trang web được ghim, IE sẽ tìm tệp này. Nếu bạn muốn đặt tên tệp xml một cái gì đó khác hoặc đặt nó ở một vị trí khác, hãy thêm thẻ meta này vào head:

<meta name="msapplication-config" content="path-to-browserconfig/custom-name.xml" />

Để biết thêm thông tin về các lát tùy chỉnh IE 11+ và sử dụng tệp XML, hãy truy cập trang web của Microsoft .

Để tất cả chúng cùng nhau:

Để kết hợp tất cả lại với nhau, đoạn mã trên sẽ như thế này:

<!-- For IE 9 and below. ICO should be 32x32 pixels in size -->
<!--[if IE]><link rel="shortcut icon" href="path/to/favicon.ico"><![endif]-->

<!-- Touch Icons - iOS and Android 2.1+ 180x180 pixels in size. --> 
<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">

<!-- Firefox, Chrome, Safari, IE 11+ and Opera. 196x196 pixels in size. -->
<link rel="icon" href="path/to/favicon.png">

Gạch ốp lát Windows Phone

Nếu người dùng đang sử dụng Windows Phone, họ có thể ghim một trang web vào màn hình bắt đầu của điện thoại. Thật không may, khi họ làm điều này, nó sẽ hiển thị một ảnh chụp màn hình của điện thoại của bạn chứ không phải hình đại diện (thậm chí không phải mã cụ thể của MS được tham chiếu ở trên). Để tạo "Ngói trực tiếp" cho Người dùng Windows Phone cho trang web của bạn, người ta phải sử dụng mã sau đây:

Dưới đây là hướng dẫn chi tiết từ Microsoft nhưng đây là tóm tắt:

Bước 1

Tạo một hình ảnh vuông cho trang web của bạn, để hỗ trợ màn hình độ phân giải cao tạo ra nó ở kích thước 768x768 pixel.

Bước 2

Thêm một lớp phủ ẩn của hình ảnh này. Dưới đây là mã ví dụ từ Microsoft:

<div id="TileOverlay" onclick="ToggleTileOverlay()" style='background-color: Highlight; height: 100%; width: 100%; top: 0px; left: 0px; position: fixed; color: black; visibility: hidden'>
  <img src="customtile.png" width="320" height="320" />
  <div style='margin-top: 40px'>
     Add text/graphic asking user to pin to start using the menu...
  </div>
</div>

Bước 3

Sau đó, bạn có thể thêm dòng sau đây để thêm ghim để bắt đầu liên kết:

<a href="javascript:ToggleTileOverlay()">Pin this site to your start screen</a>

Microsoft khuyên bạn nên phát hiện windows phone và chỉ hiển thị liên kết đó cho những người dùng đó vì nó không hoạt động cho những người dùng khác.

Bước 4

Tiếp theo, bạn thêm một số JS để chuyển đổi mức độ hiển thị của lớp phủ

<script>
function ToggleTileOverlay() {
 var newVisibility =     (document.getElementById('TileOverlay').style.visibility == 'visible') ? 'hidden' : 'visible';
 document.getElementById('TileOverlay').style.visibility =    newVisibility;
}
</script>

Lưu ý về kích thước

Tôi đang sử dụng một kích thước vì mọi trình duyệt sẽ thu nhỏ hình ảnh khi cần thiết. Tôi có thể thêm nhiều HTML hơn để chỉ định nhiều kích thước nếu muốn cho những người có băng thông thấp hơn nhưng tôi đã nén các tệp PNG rất nhiều bằng TinyPNG và tôi thấy điều này không cần thiết cho mục đích của mình. Ngoài ra, theo câu trả lời của philippe_b , Chrome và Firefox có lỗi khiến trình duyệt tải tất cả các kích thước của biểu tượng. Sử dụng một biểu tượng lớn có thể tốt hơn nhiều biểu tượng nhỏ hơn vì điều này.

Đọc thêm

Đối với những người muốn biết thêm chi tiết, xem các liên kết dưới đây:


1
Biểu tượng kích thước nào (cho ứng dụng web đánh dấu của tôi) tôi cần cho Apple? 320x460, 640x920, 640x1096, 72x72, 114x114, 144x144, 768x1004, 1024x748 ? Và cho Android?
Kiquenet

@Kiquenet Đối với web, tôi sử dụng 180x180 cho Apple và 196x196 cho Android (và các thiết bị khác, ngoại trừ IE 10 trở xuống.)
L84


Trong tất cả các cách tôi thêm câu hỏi và câu trả lời của biểu tượng fav, câu hỏi này phải là mục ưa thích của tôi vì nó cực kỳ nhiều thông tin và trên hết - CÔNG TRÌNH CNTT! Cảm ơn người đàn ông! Sử dụng định dạng .PNG thực sự đã cứu tôi!
twknab

16

Không, không phải tất cả các trình duyệt đều hỗ trợ sizesthuộc tính:

Lưu ý rằng một số nền tảng xác định kích thước cụ thể:


1
...yet it favors the Apple Touch icon if it finds it.Không chắc điều này là hoàn toàn đúng nữa, ít nhất là trong tương lai. Từ trang web Chrome:The apple-touch-* are deprecated, and will be supported only for a short time. (Written as of beta for m31 of Chrome).
L84

2
Đúng, nhưng ngay bây giờ Android Chrome 35 chọn biểu tượng cảm ứng Apple 152x52 và bỏ qua biểu tượng PNG 196x196 (Tôi đã sử dụng thử nghiệm tương thích: realfavicongenerator.net/favicon_compabilities_test ). Tôi không biết khi nào Google sẽ chuyển đổi, nhưng tôi đoán là điều đó sẽ không xảy ra sớm. Vâng, đó chỉ là một dự đoán.
philippe_b

Theo developer.apple.com/library/safari/documentation/UserExperience/... các kích thước cho Apple ( biểu tượng Web Clip ) là 76x76, 120x120, 152x152, 167x167, 180x180
Kiquenet

Theo developer.chrome.com/multidevice/android/installtohomescreen kích thước cho Android là 36x36, 48x48, 72x72, 96x96, 144x144, 192x192 , có thể quá 128x128
Kiquenet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.