SASS/SCSS компилирует файл css с относительными путями sass cli

У меня проблемы с компиляцией scss с относительными путями.

Вот моя файловая структура:

src/
├── css/
│   ├── bootstrap.scss
│   ├── main.scss
├── fonts/
│   ├── fonts.css
│   ├── font1.woff2
├── index.html
├── main.css    /* Compiled css */

основной.scss:

@import './bootstrap-init';
@import '../fonts/fonts';

шрифты.css:

@font-face {
  font-family: 'font1';
  src: url('./font1.woff2') format('woff2');
}

Если вы посмотрите на мой fonts.css, src: url(), URL-адрес указывает на правильный файл, который является src/fonts/font1.woff2. Однако после того, как он скомпилирован в src/main.css, src: url() теперь указывает на src/font1.woff2, который не завершается.

Аналогичный вопрос задан здесь для LESS: МЕНЬШЕ импорта CSS и относительных путей

Я использую sass CLI, и это то, что у меня есть на данный момент:

sass --watch css/main.scss main.css

Как мне решить эту проблему? Я могу заменить свои пути, чтобы они всегда указывали из корневой папки, но это не кажется хорошим подходом...

Могу ли я предложить вам использовать SCSS и для файла шрифта, а не смешивать CSS и SCSS? Я рекомендую переместить font.css в папку src/css/. а затем ссылаясь на шрифт оттуда как ../fonts/font1.woff2

BenHerbert 03.02.2019 12:07
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
1
1 965
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы смешиваете импорт CSS и импорт SASS.

Оператор @import в файле CSS заставит браузер загрузить импортированный файл CSS, как если бы это был еще один отдельный тег <style> в вашем документе. Таким образом, все пути в этом импортированном файле относятся к самому себе..

Оператор @import в файле SCSS заставит компилятор SASS скомпилировать импортированный файл css в ваш основной вывод sass, как если бы вы скопировали и вставили его туда. Таким образом, пути в файле SASS всегда относятся к выходному файлу..

Как упоминалось в комментариях, рекомендуется не смешивать файлы .CSS с файлами .SCSS. Скорее всегда используйте SASS для всего, и вы можете использовать переменные SASS для хранения пути к файлам шрифтов.

Простое изменение его на файл scss не сработало, по какой-то причине мне пришлось вернуться, а затем вернуться в папку fonts, и в итоге я получил url('.,/fonts/font1.woff2').

Rusty 04.02.2019 22:54

Это не сработает, просто изменив его на файл scss, вы также должны сделать все свои пути во всех ваших файлах scss относительно вашего корня. Я всегда так делаю, и я думаю, что проще всегда думать о вашем SCSS как о пути вывода вашего файла main.css.

Mikepote 05.02.2019 10:09

Другие вопросы по теме