【问题标题】:Custom icon in static website静态网站中的自定义图标
【发布时间】:2017-07-20 06:13:23
【问题描述】:

我正在使用 R blogdown 包构建一个静态网站以用作博客,该包充当 Hugo 静态网站生成器的包装器。

我想在标题下方有一行社交媒体图标,我使用FontAwesome 工具包在一定程度上实现了这一点,该工具包已经被我选择的主题使用。

但是,我想包含一些工具包中不存在的图标。我在Academions 项目中找到了一些,还有一个是我在 Inkscape 中制作的单层 SVG。这是 Pocket 的方形图标。

我使用Icomoon 应用程序将它们全部组合成一个自定义字体(称为customfonts),并将字体放在我的Hugo static/fonts 目录中,并将CSS 文件放在我的static/css 目录中。我还修改了 CSS 文件中的文件路径以指向 static/fonts 目录,并添加了类似于 FontAwesome CSS 文件中的样式类。

我在页脚中调用 CSS 文件并尝试插入图标。

当我使用来自 Academicons 字体的图标之一时,如下所示:

<i class="cf cf-GoogleScholar cf-3x"></i>

我得到了图标,但是当我尝试像这样插入我的自定义图标时:

<i class="cf-pocket-square cf-3x"></i>

我没有显示图标。

当我检查 HTML 时,我可以在代码中看到它。

因此,我制作的 SVG 一定有问题。但是我不知道那是什么或如何解决它。

我已经将自己制作的 SVG、CSS 文件和字体文件放在了this directory

如何让我的图标显示?

编辑:我在上面链接的目录中添加了一个 MWE。

这里是 HTML:

<html class="wf-opensans-i3-active wf-opensans-i7-active wf-opensans-n3-active wf-opensans-n7-active wf-breeserif-n4-active wf-active" lang="en-us">
  <head>
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.css">
    <link rel="stylesheet" href="./customfonts.css">
  </head>
  <body>
    This one works:
    <div>
      <a href="EXAMPLE" rel="me"><i class="fa fa-twitter-square fa-3x"></i></a>
      <a href="EXAMPLE" rel="me"><i class="fa fa-facebook-square fa-3x"></i></a>
      <a href="EXAMPLE" rel="me"><i class="cf cf-GoogleScholar cf-3x"></i></a>
    </div>
    This one with my custom icon does not:
    <div>
      <a href="EXAMPLE" rel="me"><i class="fa fa-twitter-square fa-3x"></i></a>
      <a href="EXAMPLE" rel="me"><i class="fa fa-facebook-square fa-3x"></i></a>
      <a href="EXAMPLE" rel="me"><i class="cf cf-pocket-square cf-3x"></i></a>
    </div>
  </body>
</html>

这是输出的样子:

这是 CSS 文件顶部的样子:

@font-face {
  font-family: 'customfonts';
  src:  url('./customfonts.eot?7cqlun');
  src:  url('./customfonts.eot?7cqlun#iefix') format('embedded-opentype'),
    url('./customfonts.ttf?7cqlun') format('truetype'),
    url('./customfonts.woff?7cqlun') format('woff'),
    url('./customfonts.svg?7cqlun#customfonts') format('svg');
  font-weight: normal;
  font-style: normal;
}

.cf {
    display:inline-block;
    font:normal normal normal 14px/1 customfonts;
    font-size:inherit;
    text-rendering:auto;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
}

.cf-pocket-square .path1:before {
  content: "\e900";
  color: rgb(0, 0, 0);
}
.cf-pocket-square .path2:before {
  content: "\e901";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.cf-pocket-square .path3:before {
  content: "\e902";
  margin-left: -1em;
  color: rgb(255, 255, 255);
}
.cf-GoogleScholar:before {
  content: "\e903";
}

+ style classes ...

编辑#2:@grinmax 正确指出 HTML 结构不一致。按照他的建议,结果如下:

  • 更改 HTML

  • 更改 CSS

在生成图标时,这是不正确的,因为 IcoMoon 似乎已经分离了我用来创建图标的图层。但是,当我查看我用来制作字体的 SVG 时,我可以确认我将它们全部压缩到一层中,所以我不知道这是怎么回事。我错过了什么?

编辑#3:由于我的 SVG 似乎是我一直试图解决的问题。我已经取得了一些进展,但也问了question here

【问题讨论】:

  • 我不明白,你用字体显示字符..为什么你认为你可以用 svg 替换它们?
  • 我是这种事情的新手,所以可能是错误的,但据我了解,我将新图标制作为 SVG,然后用它来创建新字体。我从这个问题中得到了这个想法stackoverflow.com/questions/17941120/…
  • @Hogan -- G_T 使用了Icomoon,它允许您使用 SVG 创建自定义字体集以用于网页。

标签: css svg fonts icons font-awesome


【解决方案1】:

@grinmax 正确地指出我的 HTML 结构不一致,并且按照他的建议,我克服了自定义图标不显示的问题。但是显示不正确。

我意识到 Icomoon 应用程序创建的字体已将 SVG 中的形状拆分为单独的字形,尽管它是 Inkscape 上的单层。因此,我将 SVG 重新绘制为包含在单个 &lt;path&gt; 标记中(请参阅 here)并使用 Icomoon 重新生成字体。

我为 MWE 创建了一个附加项,如下所示:

这就是我想要的。 HTML 与我上面介绍的相同,CSS 是 @grinmax 建议的。

【讨论】:

    【解决方案2】:

    这不遵循你的 html 结构

    .cf-pocket-square .path1:before {
      content: "\e900";
      color: rgb(0, 0, 0);
    }
    .cf-pocket-square .path2:before {
      content: "\e901";
      margin-left: -1em;
      color: rgb(0, 0, 0);
    }
    .cf-pocket-square .path3:before {
      content: "\e902";
      margin-left: -1em;
      color: rgb(255, 255, 255);
    }
    

    尝试使用这个 html 结构

    <i class="cf cf-pocket-square cf-3x">
      <span class="path1"></span>
      <span class="path2"></span>
      <span class="path3"></span>
    </i>
    

    .cf-pocket-square:before {
      content: "\e900";
      color: rgb(0, 0, 0);
    }
    

    请告诉我结果

    【讨论】:

    • 嗨@grinmax,感谢您的帮助。我已经用结果更新了我的问题。
    • 虽然你的回答没有完全回答我的问题,但它确实做到了一半,它让我为另一半找到了正确的方向,所以我奖励了你。
    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多