Libsass: @import url(http://...) Échec des URL de police

Créé le 14 févr. 2014  ·  6Commentaires  ·  Source: sass/libsass

Dans mon fichier Scss j'ai cette ligne :
<strong i="6">@import</strong> url(http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600);

Résultats actuels:

Lorsque le fichier est compilé avec libsass, la ligne @import est complètement effacée et n'apparaît pas dans le fichier de sortie.

Résultats attendus:

La ligne @import doit être copiée textuellement dans le fichier CSS final car elle ne cible pas un fichier local. Il doit apparaître dans le fichier CSS pour que ma police soit chargée correctement.

Ruby Sass se comporte correctement. Il déplace l'instruction @import , textuellement, dans le fichier CSS compilé.

Remarque technique :

Pour résoudre ce problème, il ne suffit pas de tester la présence de http:// . Plusieurs fois, les gens utiliseront une URL sans protocole afin que l'importation fonctionne à la fois sur les pages HTTP et HTTPS. Un exemple de ceci serait :

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

Les doubles barres obliques menant à la déclaration doivent être traitées comme une URL vers une ressource distante sur Internet et, par conséquent, cette déclaration @import doit être placée, textuellement, dans le fichier CSS compilé.

Dev - Test Written

Commentaire le plus utile

Un cas de test simplifié :

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

Ruby Sass restructure correctement le CSS de sorte que les @import (s) soient en haut :

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

Libsass produit incorrectement :

.test {
  content: ''; }

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

Comme indiqué ci-dessus, la spécification CSS dit : « toutes les règles @import doivent précéder toutes les autres règles (à l'exception de la règle @charset , si elle est présente). »

Selon la façon dont le Sass est structuré, ce bogue peut produire et produira du code où les règles @import ne sont pas insérées correctement dans la sortie CSS et sont ensuite ignorées.


Un bug/différence mineur quelque peu lié dans Libsass et Ruby Sass est le résultat du test suivant :

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

Je ne prévois pas de problèmes résultant de ce bug en particulier, cependant c'est une différence intéressante à noter.

Tous les 6 commentaires

Bonne prise. Vous pouvez également @import un fichier .css , mais il semble qu'il recherche explicitement une extension .css . Les éléments suivants peuvent servir de solution de contournement :

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

Mais vraiment, cela devrait fonctionner aussi:

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

Libsass ne doit pas « valider » les importations qui ciblent un fichier distant (un sur Internet). Si l'URI à l'intérieur de l'instruction import est distant (ce qui peut être vérifié en voyant s'il contient une séquence // ), alors libsass devrait simplement jeter l'intégralité @import instruction

J'ai essayé votre exemple sur la branche master et l'importation apparaît dans la sortie (bien que LibSass ne le déplace pas en haut du fichier comme le fait Ruby Sass) ... avez-vous tiré au cours des deux dernières semaines ?

L'importation doit être en haut du fichier. C'est clairement dans la spécification CSS : @import doit être en haut.

Envoyé de mon iPhone

Le 14 février 2014, à 15 h 02, Aaron Leung [email protected] a écrit :

J'ai essayé votre exemple sur la branche master et l'importation apparaît dans la sortie (bien que LibSass ne le déplace pas en haut du fichier comme le fait Ruby Sass) ... avez-vous tiré au cours des deux dernières semaines ?

-
Répondez directement à cet e-mail ou consultez-le sur GitHub.

Un cas de test simplifié :

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

Ruby Sass restructure correctement le CSS de sorte que les @import (s) soient en haut :

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

Libsass produit incorrectement :

.test {
  content: ''; }

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

Comme indiqué ci-dessus, la spécification CSS dit : « toutes les règles @import doivent précéder toutes les autres règles (à l'exception de la règle @charset , si elle est présente). »

Selon la façon dont le Sass est structuré, ce bogue peut produire et produira du code où les règles @import ne sont pas insérées correctement dans la sortie CSS et sont ensuite ignorées.


Un bug/différence mineur quelque peu lié dans Libsass et Ruby Sass est le résultat du test suivant :

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

Je ne prévois pas de problèmes résultant de ce bug en particulier, cependant c'est une différence intéressante à noter.

Bon, ça devrait être corrigé maintenant. S'il vous plaît, essayez-le.

Cette page vous a été utile?
0 / 5 - 0 notes