如何获取 Font Awesome 5 图标作为光标
How to get a Font Awesome 5 icon as cursor
在 Font Awesome 4x 中,我通过将其更改为 base-64 图像 url 设法将光标设置为图标。现在在 Font Awesome 5 中它不再起作用了。
我找到了 this 解决方案,但它在这里不起作用。
这是我试过的。
var canvas = document.createElement("canvas");
canvas.width = 20;
canvas.height = 20;
var ctx = canvas.getContext("2d");
document.fonts.ready.then(function() {
ctx.font = "400 20px Font Awesome 5 Pro";
ctx.fillStyle = "red";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
setTimeout(function() {
ctx.fillText("\uf2ed", 10, 10)
var dataURL = canvas.toDataURL('image/png')
$('#foo').css('cursor', 'url(' + dataURL + '), auto');
}, 200)
})
我得到的只是一个 20x20 的黑色正方形
有大神知道怎么弄吗?
看下面的例子...
var hex = 0xF25A;
var unicode = String.fromCharCode(parseInt(hex, 16));
var canvas = document.getElementById("cache");
canvas.width = 64; canvas.height = 64;
var context = canvas.getContext("2d");
context.font = '900 32px "Font Awesome 5 Free"';
context.fillText(unicode, canvas.width/2, canvas.width/2);
document.fonts.ready.then(function() {
$('body').css('cursor', 'url(' + canvas.toDataURL('image/png') + '), auto');
});
html, body {height: 100%; width:100%; margin:0; padding: 0;}
canvas#cache {display: none;}
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.2.0/css/solid.css" integrity="sha384-wnAC7ln+XN0UKdcPvJvtqIH3jOjs9pnKnq9qX68ImXvOGz2JuFoEiCjT8jyZQX2z" crossorigin="anonymous">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="cache"/>
这是一个老问题,但我使用 jquery.awesomecursor 成功了,这个 JS:
$('body').awesomeCursor('cut', {color: '#3097d1',
font: {cssClass: 'far fa-%s',
family:'"Font Awesome 5 Pro"'
}
});
这里的关键是:
. FontAwesome 5 的 cssClass(“常规”图标是 'far fa-X',而不是之前版本中的 'fa fa-X')
. “家庭”的指定方式 - 我需要内部引号集才能正常工作。
FWIW,我将它与 WebPack 一起使用,所以我需要确保 faCut 是从“@fortawesome/pro-regular-svg-icons”加载的;您可以阅读更多相关信息 here。
在 Font Awesome 4x 中,我通过将其更改为 base-64 图像 url 设法将光标设置为图标。现在在 Font Awesome 5 中它不再起作用了。
我找到了 this 解决方案,但它在这里不起作用。
这是我试过的。
var canvas = document.createElement("canvas");
canvas.width = 20;
canvas.height = 20;
var ctx = canvas.getContext("2d");
document.fonts.ready.then(function() {
ctx.font = "400 20px Font Awesome 5 Pro";
ctx.fillStyle = "red";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
setTimeout(function() {
ctx.fillText("\uf2ed", 10, 10)
var dataURL = canvas.toDataURL('image/png')
$('#foo').css('cursor', 'url(' + dataURL + '), auto');
}, 200)
})
我得到的只是一个 20x20 的黑色正方形
有大神知道怎么弄吗?
看下面的例子...
var hex = 0xF25A;
var unicode = String.fromCharCode(parseInt(hex, 16));
var canvas = document.getElementById("cache");
canvas.width = 64; canvas.height = 64;
var context = canvas.getContext("2d");
context.font = '900 32px "Font Awesome 5 Free"';
context.fillText(unicode, canvas.width/2, canvas.width/2);
document.fonts.ready.then(function() {
$('body').css('cursor', 'url(' + canvas.toDataURL('image/png') + '), auto');
});
html, body {height: 100%; width:100%; margin:0; padding: 0;}
canvas#cache {display: none;}
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.2.0/css/solid.css" integrity="sha384-wnAC7ln+XN0UKdcPvJvtqIH3jOjs9pnKnq9qX68ImXvOGz2JuFoEiCjT8jyZQX2z" crossorigin="anonymous">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="cache"/>
这是一个老问题,但我使用 jquery.awesomecursor 成功了,这个 JS:
$('body').awesomeCursor('cut', {color: '#3097d1',
font: {cssClass: 'far fa-%s',
family:'"Font Awesome 5 Pro"'
}
});
这里的关键是: . FontAwesome 5 的 cssClass(“常规”图标是 'far fa-X',而不是之前版本中的 'fa fa-X') . “家庭”的指定方式 - 我需要内部引号集才能正常工作。
FWIW,我将它与 WebPack 一起使用,所以我需要确保 faCut 是从“@fortawesome/pro-regular-svg-icons”加载的;您可以阅读更多相关信息 here。