如何在不使用Bootstrap CSS的情况下包含Glyphicons

20

我的客户项目使用了一些基本的HTML和CSS,但他们喜欢网站菜单上的Glyphicons。因此,我尝试使用Bootstrap CSS包括Glyphicons,它确实有效,但在包括Bootstrap CSS后,其他的CSS也受到了影响。

所以问题可能有点傻,我只想在客户网站菜单链接中包含Glyphicons,而不使用Bootstrap CSS。

首先,这是否可能?我知道Glyphicons free将随Bootstrap Package提供。

另外,我的客户不希望我包含Bootstrap CSS,因为它会影响页面结构。

因此,是否可以在没有Bootstrap CSS或自己的自定义CSS的情况下包括Glyphicons呢?

任何帮助将不胜感激!


1
替代方案:Font Awesome - HddnTHA
2
如果你想不使用bootstrap,你必须购买PRO版本。 - AndrewL64
2
一定要切换到http://fontawesome.io。 - Jeff Puckett
据我所知,未经Bootstrap许可使用Glyphicons会侵犯版权。请不要这样做,使用免费的替代品,如Font Awesome。 "Glyphicons Halflings通常不是免费提供的,但它们的创建者已经免费为Bootstrap提供了它们。作为感谢,我们只要求您在可能的情况下包含指向Glyphicons的链接。" - http://getbootstrap.com/components/#glyphicons - Nick McCurdy
你的问题并不傻;让Bootstrap在标准CSS上肆虐的方式才是愚蠢的!有一个库需要使用Glyphicons,但我不想让Bootstrap破坏我的CSS。如果Bootstrap只在具有特定类和它们的后代元素上生效,那就更好了,我不明白为什么Bootstrap不是这样工作的。(如果你真的想要它接管一切,请将该类添加到你的<html>元素中!)也许我只是老了——我已经使用CSS20年了,虽然我一直在跟进,但我仍然希望CSS3以某种特定的方式工作。 - Michael Scheper
6个回答

16

这里有这样一段话:

<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css">

然而,如果你想节省一些带宽,你可以直接从CDN加载字体,然后像这样内联所需的CSS:

<style>
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.eot');
  src: url('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),
       url('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2') format('woff2'),
       url('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff') format('woff'),
       url('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.ttf') format('truetype'),
       url('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font: normal normal 16px/1 'Glyphicons Halflings';
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  margin-right: 4px;
}
/* Add icons you will be using below */
.glyphicon-fire:before {
  content: '\e104';
}
.glyphicon-eye-open:before {
  content: '\e105';
}
</style>
你可以在这里的演示中看到一个例子("Eye of Medusa" 和 "Rain of Fire" 菜单项)。

2
给downvoter:如果这个解决方案对你不起作用,请提供建设性的反馈。 - thdoan
不是我给你点了踩,我也非常讨厌那些没有留下理由就点踩的人——网站甚至要求留言!但是你的CDN链接仍然会出现标准CSS混乱的问题(尽管它声称可以“规范化”),因此它实际上与Bootstrap具有相同的问题,因此并没有真正回答问题。然而,你在这里发布的显式CSS没有这个问题,这最终是我为什么点赞你的答案的原因——谢谢!不过,我不同意它可以节省带宽。CDN的整个目的是让浏览器缓存库,并减轻你的Web服务器的负载。 - Michael Scheper
@MichaelScheper 感谢您的评论。虽然这是很久以前的事情了,但我想当我说“节省一些带宽”时,我是指他们可以直接链接到字体文件,而不是下载整个Bootstrap库来使用图标字体。 - thdoan

14
我曾试图在不安装整个bootstrap.css文件的情况下让Bootstrap的图标字体(glyphicons)起作用,但是中途变得太麻烦了,我放弃了。相反,我发现Font Awesome。Bootstrap 3本身使用它(或曾经使用)。它被设计成一个独立的工具,因此非常简单和轻巧。你需要做的只是:
  1. 下载 Font Awesome包;

  2. font-awesome.min.css复制到你的css文件夹中,并将所有字体文件从Font Awesome字体文件夹中复制到你的字体文件夹中;

  3. 在你HTML的<head>中包含<link rel="stylesheet" href="path/to/css/font-awesome.min.css">

  4. 图标库中选择图标,并像使用Bootstrap的glyphicons一样将它们放入你的应用程序中。


1
谢谢,这帮了我很多! - user4367461
1
也许我错过了什么,但我不明白这怎么可能起作用。FontAwesome 使用不同的类,因此如果您使用期望 GlyphIcon 类的库,例如 <i class="glyphicon glyphicon-chevron-up"> </i>,则不会出现任何内容。我喜欢使用FontAwesome,但不幸的是,我想要使用的第三方库期望GlyphIcons,即使是非Bootstrap版本。(也许这是库作者的疏忽,但我正在尝试解决它。) - Michael Scheper
问题是关于如何在不使用Bootstrap的情况下使用Bootstrap Glyphicons,而不是用其他东西替换它。 - Andreas Hinderberger
我认为这是一个非常好的答案,对于那些可能因为不同的原因(比如我!)而阅读问题的人来说非常有用。似乎已经有一些变化,现在 font-awesome 的说明说要将 all.min.css 复制到您的 css 目录中,并将 webfonts 目录的内容复制到您的 webfonts 目录中。all.min.css 期望字体文件在 ../webfonts 中,所以请确保它们在那里(而不是像上面建议的 ../fonts!)(参考:https://fontawesome.com/v5.15/how-to-use/on-the-web/setup/hosting-font-awesome-yourself - 参见使用 CSS 使用 Web 字体)。 - jenniwren

11

这里提供一个可以让你只使用Bootstrap中的图标字形的Bower包。

请查看此Github存储库:https://github.com/ohpyupi/glyphicons-only-bootstrap

或者

bower install glyphicons-only-bootstrap

编辑

现在可以通过NPM下载该软件包。

npm install glyphicons-only-bootstrap

3
既然我今天已经留下了一个愤怒的评论(请参见上面):那些没有解释原因就给答案点踩的人应该被禁止在 Stack Exchange 上发言!当他们尝试遵循这个建议时会发生什么?还是他们无知或冷酷地将其评为负分,因为他们不使用 Bower 呢? - Michael Scheper
1
有很多人会被某些东西的花哨和复杂程度所迷惑。我完全同意你的看法。现在在Stack Overflow上提问并得到答案变得更加棘手了。我很高兴每两周有大约400人访问这个仓库,并且能够获得他们日常开发所需的内容。 - supergentle

1

是的。但免费版本没有CSS选项,只有PNG可用。对于CSS版本,我需要购买专业版或Bootstrap。谢谢。 - Raja
1
能否只使用Bootstrap的CSS和字体文件而不是整个框架?我不确定这是否可行,但这是一个想法。或者你可以像HdddnTHA建议的那样尝试使用Font Awesome。 - Alejandro Garrido

1
我曾经遇到过Bootstrap的同样问题,我只需要一个箭头,但当我添加它时出了问题。
所以我转向了FontAwesome,效果非常好!
您也可以获取类似于以下内容的CDN:
<script src="https://use.fontawesome.com/2734t3et304.js"></script>

你需要自己去获取!:)


这基本上与Arthur上面的答案相同。https://dev59.com/V1oU5IYBdhLWcg3wc2tW#39436226 感谢您的建议,但请查看我在那里的评论,了解为什么我认为它没有帮助。(我不会给您投反对票并收回您的一个声望点。但我鼓励您在撰写自己的答案之前阅读其他答案,并熟悉StackExchange的习惯。) - Michael Scheper

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接