#css #sass #font-face #mixins
#css #sass #font-face #mixins
Вопрос:
У меня следующая структура папок:
style.scss
выглядит так:
@import "mixins.scss";
@import "theme/**.scss";
Все из style.scss
скомпилировано внутри theme.min.css
.
В _mixin.scss
, у меня есть mixin для font-face
:
@mixin font-face($font-name, $file-name, $weight: normal, $style: normal) {
@font-face {
font-family: quote($font-name);
src: url($file-name '.eot');
src: url($file-name '.eot?#iefix') format('embedded-opentype'),
url($file-name '.otf') format('otf'),
url($file-name '.woff') format('woff'),
url($file-name '.woff2') format('woff2'),
url($file-name '.ttf') format('truetype'),
url($file-name '.svg##{$font-name}') format('svg');
font-weight: $weight;
font-style: $style;
font-display: swap;
}
}
@mixin lemonmilk-bold{
@include font-face("lemonmilk", "/assets/build/fonts/lemon-milk/bold/lemonmilk-bold", $style: normal, $weight: normal);
}
И в _typography.scss
, у меня есть следующее:
h1{
@include lemonmilk-bold;
}
Однако стили шрифтов не применяются к интерфейсу?
Я думал, что это как-то связано с путем к папке, возможно (поскольку все стили компилируются theme.min.css
). Но изменение путей тоже ничего не дало для меня.
Не уверен, где я ошибаюсь?
Комментарии:
1. Похоже, это не проблема с путем к папке. Но если бы это было так, вы могли бы легко проверить это, посмотрев, есть ли у вас какие-либо ошибки 404 на
Network
вкладке вашего браузера.2. Это было решено? Если это так, и любой из ответов был вам полезен, пожалуйста, отметьте один из них как «Принятый». В противном случае, если вы хотите получить дополнительные разъяснения или у вас все еще есть проблема, просто скажите об этом.
Ответ №1:
Ваша проблема может быть проще, чем вы думаете. Объявления Font face должны отображаться на странице перед любым другим селектором CSS.
Вот так:
@font-face{
font-family: 'Your Font;;
src: url(/var/fonts/yourfont.woff);
font-weight: 500;
}
body{
margin: 0;
}
/* more CSS code */
Не это:
/* Code before the font face declaration */
body{
margin: 0;
}
@font-face{
font-family: 'Your Font;;
src: url(/var/fonts/yourfont.woff);
font-weight: 500;
}
/* more CSS code */
Ответ №2:
Основная проблема, по-видимому, @font-face
заключается в том, что она не должна помещаться в селектор CSS. Вместо @font-face
этого стоит сам по себе, и вы используете его с. font-family
Вот как это следует использовать:
@font-face{
font-family: fishes;
src: url(/path/to/file);
font-weight: 400;
}
h1{
font-family:fishes;
}
Но, похоже, ваш код неправильно компилируется в это:
h1{
@font-face{
font-family: fishes;
src: url(/path/to/file);
font-weight: 400;
}
}
Что является недопустимым CSS.
Вместо этого вам, вероятно, следует сделать что-то вроде этого:
//Beginning of CSS file.
@include font-face("lemonmilk", "/assets/build/fonts/lemon-milk/bold/lemonmilk-bold", $style: normal, $weight: normal);
...
...
...
h1{
font-family:lemonmilk;
font-weight:normal;
}
и удалите @mixin lemonmilk-bold
.