Libsass: @import url (http: // ...) Ошибка для URL-адресов шрифтов

Созданный на 14 февр. 2014  ·  6Комментарии  ·  Источник: sass/libsass

В моем файле 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.

Dev - Test Written

Самый полезный комментарий

Упрощенный тестовый пример:

.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");

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

Все 6 Комментарий

Хороший улов. Вы также можете @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");

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

Хорошо, теперь это нужно исправить. Пожалуйста, попробуйте.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги