繁体   English   中英

在 svg 中显示超赞的图标

[英]Displaying fontawesome icons inside svg

我如何在 svg snipet 中显示一个 fontawesome 图标? 我尝试了以下操作,但不起作用:

<svg xmlns="http://www.w3.org/2000/svg">
<g>
  <rect x="0" y="0" width="100" height="100" fill="red" ></rect>
  <text x="30" y="30" font-family="FontAwesome" font-size="20" fill="blue" >&#xf042;</text>
</g>
</svg>

Unicode &#xf042; 对应于可在此处找到的 fa-adjust 图标。 另外,我如何从图标的名称中获取 unicode?

你的样式表应该声明 font-family

svg text {
   font-family: FontAwesome;
   font-size:20px;
   background-color:blue;
}

html

<text x="30" y="30">&#xf042;</text>

您的代码应该可以工作,假设您在文档中正确包含了 fontawesome css。 我真的把你的代码粘贴到了一个小提琴中,并通过 CDN 包含了最新版本的 fontawesome 并且它起作用了: http : //jsfiddle.net/mayacoda/o59uak50/

对于第二部分,我假设您希望能够只输入图标名称而不必查找每个 unicode。 考虑到我不知道上下文,我还将假设您正在使用 javascript,并且此功能的可用形式将是具有键值对的对象(名称:“unicode”)。

您可以在备忘单页面上运行此脚本,它将扫描页面上的元素并返回一个具有键值对的对象,如下所示:

{
 "fa-adjust": "&#xf042;"
 ...
}

在控制台中运行脚本。

(function () {
    var unicode = {};

    $('.fa').each(function() {
        var code = $(this).siblings().text().match(/\[(.*)\]/);
        code = code ? code[1] : '';

        var name = $(this).parent()[0].innerText.match(/\b(.*)\[/);
        if (!name || !name[1]) {
            return;
        }

        name = name[1].trim();
        unicode[name] = code;
    });

    return unicode;
})();
  1. 将 FontAwesome 样式表添加到您的页面(我使用 5.14.10)

  2. 将“fas”(或“fa”)设置为 svg 文本元素的类。

  3. 在元素中,在字符前面提供“&#x”而不是“\\”(此示例是向下箭头(fa-var-arrow-down)

见下面的片段

 <head> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css" integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog==" crossorigin="anonymous" /> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" width="800" height="500"> <text x="0" y="15" class="fas">&#xf063;</text> </svg> </body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM