在 css 背景中使用图标 *.ico
Use favicon *.ico in css background
我正在构建一个 chrome 扩展,它使用可搜索的列表框来执行常用命令。 windows 打开的选项卡也将出现在此列表框中,并且 Tab
对象带有 favIconUrl,有时会包含 *.png 或 *.ico 引用等。
我想用 *.ico 设计我的列表项的样式,但看起来 css 不会尊重图标。我在想可能有一种服务可以将图标动态转换为 png 或对 css.
有用的东西
那我可以用background-image: url(http://ico2png.com/convert?ico=<favIconUrl>);
有没有这样的动物,或者其他方法?
编辑:
糟糕,在 Chrome.
中这看起来确实有效
<img src="https://www.google.com/favicon.ico">
<div style="height:32px;width:32px;background-image:url(https://www.google.com/favicon.ico);">
</div>
我以为 ico 可能真的是 png,但我猜不是。由于我没有时间进行调查,因此我将保留其他浏览器的问题。
我不建议在您的代码中使用直接的网站图标 URL。
许多网站的网站图标不在其根目录中。
但不用担心,您有很多选择。
1。 Chrome 网站图标
您可以使用 chrome 网站图标。这些将由浏览器缓存提供。
manifest.json
"permissions": [
...
"chrome://favicon/"
]
background.js
如果您想在页面上下文(内容脚本)中使用图标,您可能必须将它们转换为数据 URL 才能绕过 CORS 限制。
function convertImgToBase64URL(url, callback, outputFormat){
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'), dataURL;
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
canvas = null;
};
img.src = url;
}
function getFaviconFromURL(url, callback){
return convertImgToBase64URL("chrome://favicon/" + url, callback);
}
getFaviconFromURL('http://google.com', function(dataURL){
console.log(dataURL);
});
您甚至可以获得不同大小的图标:
chrome://favicon/size/16@1x/https://www.google.com
chrome://favicon/size/16@2x/https://www.google.com
2。使用网站图标 API
我正在构建一个 chrome 扩展,它使用可搜索的列表框来执行常用命令。 windows 打开的选项卡也将出现在此列表框中,并且 Tab
对象带有 favIconUrl,有时会包含 *.png 或 *.ico 引用等。
我想用 *.ico 设计我的列表项的样式,但看起来 css 不会尊重图标。我在想可能有一种服务可以将图标动态转换为 png 或对 css.
有用的东西那我可以用background-image: url(http://ico2png.com/convert?ico=<favIconUrl>);
有没有这样的动物,或者其他方法?
编辑:
糟糕,在 Chrome.
中这看起来确实有效<img src="https://www.google.com/favicon.ico">
<div style="height:32px;width:32px;background-image:url(https://www.google.com/favicon.ico);">
</div>
我以为 ico 可能真的是 png,但我猜不是。由于我没有时间进行调查,因此我将保留其他浏览器的问题。
我不建议在您的代码中使用直接的网站图标 URL。 许多网站的网站图标不在其根目录中。
但不用担心,您有很多选择。
1。 Chrome 网站图标
您可以使用 chrome 网站图标。这些将由浏览器缓存提供。
manifest.json
"permissions": [
...
"chrome://favicon/"
]
background.js
如果您想在页面上下文(内容脚本)中使用图标,您可能必须将它们转换为数据 URL 才能绕过 CORS 限制。
function convertImgToBase64URL(url, callback, outputFormat){
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'), dataURL;
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
canvas = null;
};
img.src = url;
}
function getFaviconFromURL(url, callback){
return convertImgToBase64URL("chrome://favicon/" + url, callback);
}
getFaviconFromURL('http://google.com', function(dataURL){
console.log(dataURL);
});
您甚至可以获得不同大小的图标:
chrome://favicon/size/16@1x/https://www.google.com
chrome://favicon/size/16@2x/https://www.google.com