无法加载 ionicons 字体
Cant load ionicons's fonts
我的文件夹结构:
/dist
index.html
/css
app.css
/js
app.js
/fonts
/vendor
/ionicons
/dist
ionicons.eot
ionicons.svg
ionicons.ttf
ionicons.woff
ionicons.woff2
/node_modules..
/src
/assets
/js
app.js
/sass
app.scss
Webpack:
let mix = require('laravel-mix');
mix.setPublicPath('dist');
mix.js('src/assets/js/app.js', 'dist/js')
.sass('src/assets/sass/app.scss', 'dist/css');
app.scss:
// Bootstrap
@import '~bootstrap/scss/bootstrap';
//ionicons
$ionicons-font-path: "~ionicons/dist/fonts";
@import '~ionicons/dist/scss/ionicons';
现在,我在 dist 文件夹 "index.html"
中有一个 HTML 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>example</title>
<link rel="stylesheet" href="./css/app.css">
</head>
<body>
<div id="example">
Hello!
<i class="icon ion-md-heart text-white"></i>
</div>
<script src="./js/app.js"></script>
</body>
</html>
当我使用 chrome 打开它时:file:///D:/Projects/exampleproject/dist/index.html
页面加载 bootstrap 4 ,而 ionicons 仅 css 没有字体 !
它向我展示了这个:
ionicons.woff2:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
ionicons.woff:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
ionicons.ttf:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
问题是对字体文件的引用。 css
中调用的相关文件(如 @import
、background-image
和其他类型的文件引用,例如网络字体源)是相对于 [=11= 所在文件夹的] 文件已加载。
所以在你的情况下,为了正确加载字体文件,需要相对于 /dist/css
引用它们,所以你应该将字体文件的源路径更改为 ../fonts/vendor/ionicons/dist/
:
$ionicons-font-path: '../fonts/vendor/ionicons/dist/fonts";
@import '~ionicons/dist/scss/ionicons';
或者,如果您 运行 您的项目在 Web 服务器中,您可以简单地引用文档根目录中的文件。在这种情况下,您可以使用 /fonts/vendor/ionicons/dist/
.
我的文件夹结构:
/dist
index.html
/css
app.css
/js
app.js
/fonts
/vendor
/ionicons
/dist
ionicons.eot
ionicons.svg
ionicons.ttf
ionicons.woff
ionicons.woff2
/node_modules..
/src
/assets
/js
app.js
/sass
app.scss
Webpack:
let mix = require('laravel-mix');
mix.setPublicPath('dist');
mix.js('src/assets/js/app.js', 'dist/js')
.sass('src/assets/sass/app.scss', 'dist/css');
app.scss:
// Bootstrap
@import '~bootstrap/scss/bootstrap';
//ionicons
$ionicons-font-path: "~ionicons/dist/fonts";
@import '~ionicons/dist/scss/ionicons';
现在,我在 dist 文件夹 "index.html"
中有一个 HTML 文件<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>example</title>
<link rel="stylesheet" href="./css/app.css">
</head>
<body>
<div id="example">
Hello!
<i class="icon ion-md-heart text-white"></i>
</div>
<script src="./js/app.js"></script>
</body>
</html>
当我使用 chrome 打开它时:file:///D:/Projects/exampleproject/dist/index.html
页面加载 bootstrap 4 ,而 ionicons 仅 css 没有字体 ! 它向我展示了这个:
ionicons.woff2:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
ionicons.woff:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
ionicons.ttf:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
问题是对字体文件的引用。 css
中调用的相关文件(如 @import
、background-image
和其他类型的文件引用,例如网络字体源)是相对于 [=11= 所在文件夹的] 文件已加载。
所以在你的情况下,为了正确加载字体文件,需要相对于 /dist/css
引用它们,所以你应该将字体文件的源路径更改为 ../fonts/vendor/ionicons/dist/
:
$ionicons-font-path: '../fonts/vendor/ionicons/dist/fonts";
@import '~ionicons/dist/scss/ionicons';
或者,如果您 运行 您的项目在 Web 服务器中,您可以简单地引用文档根目录中的文件。在这种情况下,您可以使用 /fonts/vendor/ionicons/dist/
.