Libsass: @import url (http: // ...) Fallo en las URL de fuente

Creado en 14 feb. 2014  ·  6Comentarios  ·  Fuente: sass/libsass

En mi archivo Scss tengo esta línea:
<strong i="6">@import</strong> url(http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600);

Resultados actuales:

Cuando el archivo se compila con libsass, la línea @import se borra por completo y no aparece en el archivo de salida.

Resultados previstos:

La línea @import debe copiarse, literalmente, en el archivo CSS final porque no apunta a un archivo local. Debe aparecer en el archivo CSS para que mi fuente se cargue correctamente.

Ruby Sass se comporta correctamente. Mueve la declaración @import , literalmente, al archivo CSS compilado.

Nota tecnica:

Para solucionar esto, no es suficiente probar la presencia de http:// . Muchas veces, la gente usará una URL sin protocolo para que la importación funcione tanto en páginas HTTP como HTTPS. Un ejemplo de esto sería:

<strong i="20">@import</strong> url(//path/to/some/file.css);

Las barras dobles que encabezan la declaración deben tratarse como una URL a un recurso remoto en Internet y, por lo tanto, esta declaración @import debe colocarse, literalmente, en el archivo CSS compilado.

Dev - Test Written

Comentario más útil

Un caso de prueba simplificado:

.test {
    content: '';
}
<strong i="6">@import</strong> url('test.css');

Ruby Sass reestructura correctamente el CSS de modo que los @import (s) estén en la parte superior:

<strong i="11">@import</strong> url("test.css");
.test {
  content: ''; }

Libsass produce incorrectamente:

.test {
  content: ''; }

<strong i="15">@import</strong> url('test.css');

Como se señaló anteriormente, la especificación CSS dice: "cualquier regla @import debe preceder a todas las demás reglas (excepto la regla @charset , si está presente)".

Dependiendo de cómo esté estructurado el Sass, este error puede producir y producirá código donde las reglas @import no se insertan correctamente en la salida CSS y se ignoran posteriormente.


Un error / diferencia menor algo relacionado en Libsass y Ruby Sass es el resultado de la siguiente prueba:

<strong i="26">@import</strong> "//example.com/test.css";

Ruby Sass:

<strong i="30">@import</strong> "//example.com/test.css";

Libsass:

<strong i="34">@import</strong> url("//example.com/test.css");

No preveo ningún problema que surja de este error en particular, sin embargo, es una diferencia interesante a tener en cuenta.

Todos 6 comentarios

Buena atrapada. También puede @import un archivo .css , pero parece que está comprobando explícitamente una extensión .css . Lo siguiente puede servir como solución alternativa:

<strong i="9">@import</strong> "http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600.css";

Pero realmente, esto también debería funcionar:

<strong i="13">@import</strong> "http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600";

Libsass no debería estar "validando" las importaciones que tienen como objetivo un archivo remoto (uno en Internet). Si el URI dentro de la declaración de importación es remoto (lo cual se puede determinar al ver si contiene una secuencia // ), entonces libsass debería arrojar toda esa declaración @import en el CSS.

Probé su ejemplo en la rama maestra y la importación aparece en la salida (aunque LibSass no lo mueve a la parte superior del archivo como lo hace Ruby Sass) ... ¿ha tirado en las últimas semanas?

La importación debe estar en la parte superior del archivo. Eso está claramente en la especificación CSS: @import debe estar en la parte superior.

Enviado desde mi iPhone

El 14 de febrero de 2014, a las 3:02 p.m., Aaron Leung [email protected] escribió:

Probé su ejemplo en la rama maestra y la importación aparece en la salida (aunque LibSass no lo mueve a la parte superior del archivo como lo hace Ruby Sass) ... ¿ha tirado en las últimas semanas?

-
Responda a este correo electrónico directamente o véalo en GitHub.

Un caso de prueba simplificado:

.test {
    content: '';
}
<strong i="6">@import</strong> url('test.css');

Ruby Sass reestructura correctamente el CSS de modo que los @import (s) estén en la parte superior:

<strong i="11">@import</strong> url("test.css");
.test {
  content: ''; }

Libsass produce incorrectamente:

.test {
  content: ''; }

<strong i="15">@import</strong> url('test.css');

Como se señaló anteriormente, la especificación CSS dice: "cualquier regla @import debe preceder a todas las demás reglas (excepto la regla @charset , si está presente)".

Dependiendo de cómo esté estructurado el Sass, este error puede producir y producirá código donde las reglas @import no se insertan correctamente en la salida CSS y se ignoran posteriormente.


Un error / diferencia menor algo relacionado en Libsass y Ruby Sass es el resultado de la siguiente prueba:

<strong i="26">@import</strong> "//example.com/test.css";

Ruby Sass:

<strong i="30">@import</strong> "//example.com/test.css";

Libsass:

<strong i="34">@import</strong> url("//example.com/test.css");

No preveo ningún problema que surja de este error en particular, sin embargo, es una diferencia interesante a tener en cuenta.

Bien, esto debería arreglarse ahora. Por favor inténtalo.

¿Fue útil esta página
0 / 5 - 0 calificaciones