문제
그런 파비콘에 애니메이션을 적용하는 방법은 무엇입니까?
Firefox에서만 작동하는 것 같습니다.
해결책
현재 Firefox에서만 지원되고 있지만 다른 브라우저는 앞으로도이를 지원할 것입니다. 효과를 달성하려면 GIF를 서버에 업로드 한 다음 아래 줄을 추가해야합니다. head
페이지 섹션 :
<link rel="icon" href="animated_favicon.gif" type="image/gif" >
보세요 animatedfavicon.com 추가 도움과 리소스를 위해.
다른 팁
거의 확실히 당신이 찾고있는 것이 아니지만 일부 사람들은 클라이언트 측 JavaScript의 Favicon에 프로그래밍 방식으로 글을 쓸 수 없었습니다. 다음 URL은 Favicon에서 연주하는 오래된 비디오 게임 'Defender'를 보여줍니다.
http://www.p01.org/defender_of_the_favicon/
이것은 Firefox, Opera 및 Safari에서 작동하지만 적어도 오래된 버전의 IE에서는 작동하지 않습니다. 최신 IE가 무엇을 할 수 있는지 잘 모르겠습니다.
이 페이지에서 '소스보기'를 수행하면 흥미로운 읽기가됩니다.
Firefox
Firefox는 애니메이션 파비콘을 지원합니다. GIF에 링크를 추가하십시오 <link rel="icon">
꼬리표:
<link rel="icon" href="/favicon.gif">
애니메이션 ICO 파일을 사용할 수도 있습니다. 이 경우 애니메이션 파비콘을 지원하지 않는 브라우저는 첫 번째 프레임 만 표시됩니다.
다른 브라우저
다른 브라우저에서는 JavaScript를 사용하여 Favicon을 애니메이션 할 수 있습니다. GIF에서 단일 프레임을 추출하고 변경하면됩니다. <link rel="favicon">
GIF 프레임이 변경 될 때마다 SRC. 예를 들어이 코드를 참조하십시오.JS 바이올린 데모):
var $parent = document.createElement("div")
$gif = document.createElement("img")
,$favicon = document.createElement("link")
// Required for CORS
$gif.crossOrigin = "anonymous"
$gif.src = "https://i.imgur.com/v0oxdQ8.gif"
$favicon.rel = "icon"
// JS Fiddle always displays the result in an <iframe>,
// so we have to add the favicon to the parent window
window.parent.document.head.appendChild($favicon)
// libgif.js requires the GIF <img> tag to have a parent
$parent.appendChild($gif)
var supergif = new SuperGif({gif: $gif})
,$canvas
supergif.load(()=> {
$canvas = supergif.get_canvas()
updateFavicon()
})
function updateFavicon() {
$favicon.href = $canvas.toDataURL()
window.requestAnimationFrame(updateFavicon)
}
나는 사용했다 libgif.js GIF 프레임을 추출합니다.
불행히도 크롬에서는 애니메이션이 그다지 부드럽 지 않습니다. Firefox에서는 훌륭하게 작동하지만 Firefox는 이미 GIF Favicons를 지원합니다.
확인하십시오 favico.js 도서관.
또한보십시오
저장소가 있습니다 GitHub 이를 수행하는 방법을 보여줍니다.
http://lab.ejci.net/favico.js/example-simple/
기본적으로 그들은 캔버스에 그림을 그린 다음 작업을 수행합니다. canvas.toDataURL('image/png')
그런 다음 <link>
해당 데이터 URL에 대한 href입니다.
나는 a 파비콘을 애니메이션하는 라이브러리, 기본값은 로더 애니메이션 (캔버스에서 생성)이지만 Box에서 GIF를 지원하지 않는 브라우저 용 GIF 애니메이션도 지원합니다 (버전 0.3.0).
API는 간단합니다
favloader.init({
color: 'red'
});
favloader.start();
favloader.stop();
버전 0.4.0은 다음과 같은 프레임을 생성하는 콜백 함수가 있습니다.
favloader.init({
frame: function(ctx /* canvas context 2D */) {
}
});
사용자는 단일 프레임을 그릴 수 있습니다
노트: 이와 같은 것을 구현하려는 경우 고려해야 할 사항 :
- 탭이 활성화되지 않은 시점에 애니메이션 웹 워커를 사용합니다.
- 웹 작업자에서도 MacOSX/Chrome에서 실행을 중단하기 때문에 requestAnimationFrame을 사용하지 마십시오.
거의 모든 브라우저에 대한 Favicon을 애니메이션하기 위해 다음은 저에게 효과적이었습니다.
GIF의 각 프레임 이미지를 다운로드하십시오.
첫 번째 이미지를 ID와 함께 아이콘으로 연결하십시오.
<link rel="icon" type="image/png" href="/image1.png" id="icon"/>
루프 기능을 만들고 사용할 함수를 만듭니다
setTimeout()
각 이미지에 대해. 타임즈는 가변적이며 애니메이션을 원하는 빠르게 설정할 수 있습니다. 예는 다음과 같습니다.function iconChange() { setTimeout(function(){ document.getElementById("icon").href = "/image1.png";}, 333); setTimeout(function(){ document.getElementById("icon").href = "/image2.png";}, 667); setTimeout(function(){ document.getElementById("icon").href = "/image.png";}, 1000); }
창이로드 될 때 루프를 만듭니다.
window.onload = function() { setInterval(function() { iconChange(); }, 250); };
이 방법은 다른 브라우저가 특정 브라우저와 브라우저 버전에서만 작동하기 때문에 더 많은 브라우저가 애니메이션을 볼 수 있도록하는 데 도움이됩니다.