使用Sass集成Bootstrap时,图标未显示

14

我使用这个教程将Bootstrap集成到我的项目中:

https://laravel-news.com/2015/10/setup-bootstrap-sass-with-laravel-elixir/

这会在css文件夹中放置一个app.css文件。 然而,如果我尝试使用glyphicons,它们不会显示出来。 所以我尝试像这样修改elixir文件:

    elixir(function(mix) {

    mix.sass('app.scss')
        .browserify('app.js')
        .copy('node_modules/bootstrap-sass/assets/fonts', 'public/css/fonts')   

});

字体文件夹被复制到public/css/fonts下,但是没有图标显示出来。我这里漏掉了什么吗?有任何线索吗?

在我的app.css中,路径似乎是正确的,例如:

src: url("fonts/bootstrap/glyphicons-halflings-regular.eot");

当您在终端中调用<code>gulp</code>命令时,是否出现任何错误? - Semo
14个回答

24

我在安装 Laravel 5.2 时遇到了同样的问题。我所做的就是检查浏览器中的请求路径:

../build/fonts/bootstrap/glyphicons-halflings-regular.woff2

所以我刚刚添加到 gulp.js 中:

mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/','public/build/fonts/bootstrap'); 

然后在终端中输入:

gulp

对我来说那起作用了!


1
通过从目标路径中删除 build,这种方法对我有效。 - coding_idiot
2
对我没用。使用的是Laravel 5.3和修改过的gulpfile.js。 - Basil Musa
3
Laravel 5.3移除构建目录。 - cmac
2
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/bootstrap'); @BasilMusa - cmac

8

在包含Bootstrap文件之前,您应该在app.scss中正确设置变量$icon-font-path的值,可能在您的情况下应该是:

$icon-font-path: '/css/fonts/';

@Chriz74,你的字体实际上在public/css/fonts还是public/css/fonts/bootstrap中?如果在第二个路径中,请尝试更改为有效路径。 - Marcin Nabiałek
第二个,Bootstrap - Chriz74
在你的 app.scss 文件的开头处添加 $icon-font-path: '/css/fonts/bootstrap/';,然后尝试一下。 - Marcin Nabiałek
错误出在这里:我尝试使用<span class="glyphicons glyphicons-ok"></span>而不是<span class="glyphicon glyphicon-ok"></span> - Chriz74

7
这是我在Windows上使用Laravel 5.3的解决方案。
  1. First make sure you are using the NodeJS package latest version (v6.7.0)

    Click the tab "Current Latest Features" at the URL https://nodejs.org/en/download/current/

  2. Run npm install

  3. Modify the file gulpfile.js to contain the following:

    elixir(mix => {
        mix.sass('app.scss')
           .webpack('app.js');
        mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/','public/fonts/bootstrap');
    });
    
  4. Run gulp:

    gulp
    
  5. Thats it.


4
在 Laravel 5.4 中,只需安装 npm 依赖项,并根据需要在生产环境或开发环境下运行 npm。
npm install
npm run production

拉拉维尔将完成其余部分。

3
在Laravel 5.4中,我所做的是:
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/bootstrap');

resources/assets/sass/_variables.scssapp.scss 中。
$icon-font-path: '/fonts/bootstrap/';

我使用的是Laravel 5.4版本,图标不起作用。我检查了我的app.css文件,并发现字体路径是/fonts/。当我手动将此路径编辑为../fonts而不是/fonts时,它可以正常工作。我无法弄清楚如何设置这个路径。我无法将$icon-font-path'更改为../fonts`,它会报错。 - Rashad
嗨!请确保您的字体文件夹在“public”目录中,并且要修改您的路径,它应该像这样:$icon-font-path: '/fonts/';注意:您必须在resources/assets/sass/上进行编辑。 - Kzy
1
它是公开的。我修复了。我在“webconfig.mix.js”文件中更改了publicPath。将字体的publicPath设置为'../'。 - Rashad
在 Laravel 5.4 的干净安装中,您只需执行 npm installnpm run dev 即可;默认的 Laravel 设置已经是正确的。 - Jordan

1

Laravel 5.3移除构建

mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/bootstrap');

运行 gulp


1
我在使用 Laravel 5.4 时遇到了同样的问题。结果发现我没有运行 npm installnpm run dev 这两个命令。
一旦运行了这两个命令,字体(和 glyphicons)就会被正确地复制到 /public 目录中。不需要编辑任何 sass 或构建文件。

1

适用于Laravel 5.4

这篇答案并没有完全解决我的问题,但是它指引了我正确的方向。这是我的解决方案,它包括了两种情况:如果您已经为应用程序定义了URL(使用homestead或其他VM / Vagrant /等),或者如果您像我一样安装了lamp stack / xampp / wamp / mapm等,并从apache htdocs sbfolder进行开发。

首先,您需要在webpack.mix.js文件末尾添加以下内容:
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/');

接下来打开resources/assets/sass/_variable.scss并编辑$icon-font-path的值。

如果您没有使用Homestead,而是使用一些LAMP堆栈,您没有为应用程序定义开发URL(您没有设置vhost并更改hosts文件),而是作为子文件夹访问它,例如localhost/YOUR_APP/public/,那么您应该设置图标字体路径,如下所示:
$icon-font-path: "/YOUR_APP/public/fonts/"; 如果您已经为应用程序设置了URL,您只需要设置图标字体路径,如下所示:
$icon-font-path: "/public/fonts/"并重新编译CSS文件。在将应用程序推送到生产环境之前,如果一开始没有设置,请务必更改此设置!!! 对于不知道如何重新编译CSS和JS文件的人,请按照以下步骤操作:
1. 进入应用程序的根目录并在其中运行bash(git bash,cmd等)
2. npm install
3. npm run-script production(您还有其他可用的标志,但我更喜欢production,因为它会缩小js和css)
4. 恭喜您,您刚刚重新编译了您的js和css

0
  • 查看您浏览器的开发者工具,观察路径。
  • 在我的浏览器中,路径是public/fonts/glyphicons-halflings-regular.ttf。我手动下载了这些字体并放置在那里。
  • 然后它就可以工作了!

0
如果您在Blade模板中使用elixir()助手,您应该将字体文件放入/public/build。结果是/public/build/fonts,这个“fonts”文件夹包含所有字体文件。

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