В моем файле Scss есть такая строка:
<strong i="6">@import</strong> url(http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600);
Когда файл компилируется с помощью libsass, строка @import полностью стирается и не появляется в выходном файле.
Строку @import следует дословно скопировать в окончательный файл CSS, поскольку она не нацелена на локальный файл. Он должен появиться в файле CSS, чтобы мой шрифт загружался правильно.
Ruby Sass ведет себя правильно. Он дословно перемещает оператор @import в скомпилированный файл CSS.
Чтобы исправить это, недостаточно проверить наличие http://
. Часто люди будут использовать URL-адреса без протокола, чтобы импорт работал как на страницах HTTP, так и на HTTPS. Примером этого может быть:
<strong i="20">@import</strong> url(//path/to/some/file.css);
Двойные косые черты перед оператором следует рассматривать как URL-адрес удаленного ресурса в Интернете, и, следовательно, этот оператор @import необходимо дословно поместить в скомпилированный файл CSS.
Хороший улов. Вы также можете @import
a .css
file, но похоже, что он явно проверяет наличие расширения .css
. Следующее может служить обходным решением:
<strong i="9">@import</strong> "http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600.css";
Но на самом деле это тоже должно сработать:
<strong i="13">@import</strong> "http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600";
Libsass не должен «проверять» импорт, предназначенный для удаленного файла (файла в Интернете). Если URI внутри оператора импорта является удаленным (что можно определить, проверив, содержит ли он последовательность //
), то libsass следует просто перебросить весь этот оператор @import
в CSS.
Я пробовал ваш пример в основной ветке, и импорт появляется в выводе (хотя LibSass не перемещает его в начало файла, как это делает Ruby Sass) ... вы тянули за последние пару недель?
Импорт должен быть в верхней части файла. Это явно указано в спецификации CSS: @import должен быть наверху.
отправлено из моего Айфона
14 февраля 2014 г. в 15:02 Аарон Люнг [email protected] написал:
Я пробовал ваш пример в основной ветке, и импорт появляется в выводе (хотя LibSass не перемещает его в начало файла, как это делает Ruby Sass) ... вы тянули за последние пару недель?
-
Ответьте на это письмо напрямую или просмотрите его на GitHub.
Упрощенный тестовый пример:
.test {
content: '';
}
<strong i="6">@import</strong> url('test.css');
Ruby Sass правильно реструктурирует CSS так, чтобы @import
(s) были вверху:
<strong i="11">@import</strong> url("test.css");
.test {
content: ''; }
Libsass неправильно выдает:
.test {
content: ''; }
<strong i="15">@import</strong> url('test.css');
Как отмечалось выше, в спецификации CSS сказано: «любые правила @import должны предшествовать всем другим правилам (кроме правила @charset , если оно есть)».
В зависимости от того, как структурирован Sass, эта ошибка может и будет приводить к созданию кода, в котором правила @import
неправильно вставляются в вывод CSS и впоследствии игнорируются.
Отчасти связанная небольшая ошибка / различие в Libsass и Ruby Sass является результатом следующего теста:
<strong i="26">@import</strong> "//example.com/test.css";
Руби Сасс:
<strong i="30">@import</strong> "//example.com/test.css";
Либсасс:
<strong i="34">@import</strong> url("//example.com/test.css");
Я не предвижу каких-либо проблем, связанных, в частности, с этой ошибкой, однако следует отметить интересную разницу.
Хорошо, теперь это нужно исправить. Пожалуйста, попробуйте.
Самый полезный комментарий
Упрощенный тестовый пример:
Ruby Sass правильно реструктурирует CSS так, чтобы
@import
(s) были вверху:Libsass неправильно выдает:
Как отмечалось выше, в спецификации CSS сказано: «любые правила @import должны предшествовать всем другим правилам (кроме правила @charset , если оно есть)».
В зависимости от того, как структурирован Sass, эта ошибка может и будет приводить к созданию кода, в котором правила
@import
неправильно вставляются в вывод CSS и впоследствии игнорируются.Отчасти связанная небольшая ошибка / различие в Libsass и Ruby Sass является результатом следующего теста:
Руби Сасс:
Либсасс:
Я не предвижу каких-либо проблем, связанных, в частности, с этой ошибкой, однако следует отметить интересную разницу.