Libsass: @import url(http://...) Gagal Untuk URL Font

Dibuat pada 14 Feb 2014  ·  6Komentar  ·  Sumber: sass/libsass

Dalam file Scss saya, saya memiliki baris ini:
<strong i="6">@import</strong> url(http://fonts.googleapis.com/css?family=Titillium+Web:400,300,200,600);

Hasil nyata:

Ketika file dikompilasi dengan libsass, garis @ impor benar-benar lenyap dan tidak muncul dalam file output.

Hasil yang diharapkan:

Baris @import harus disalin, kata demi kata, ke file CSS final karena tidak menargetkan file lokal. Itu perlu muncul di file CSS agar font saya dimuat dengan benar.

Ruby Sass berperilaku dengan benar. Ini memindahkan pernyataan @import , kata demi kata, ke file CSS yang dikompilasi.

Catatan Teknis:

Dalam memperbaiki ini, tidak cukup menguji keberadaan http:// . Sering kali, orang akan menggunakan URL tanpa protokol sehingga impor akan berfungsi pada halaman HTTP dan HTTPS. Contohnya adalah:

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

Garis miring ganda yang memimpin pernyataan perlu diperlakukan sebagai URL ke sumber daya jarak jauh di internet dan, oleh karena itu, pernyataan @import ini perlu ditempatkan, kata demi kata, dalam file CSS yang dikompilasi.

Dev - Test Written

Komentar yang paling membantu

Kasus uji yang disederhanakan:

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

Ruby Sass merestrukturisasi CSS dengan benar sehingga @import (s) berada di atas:

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

Libsass salah menghasilkan:

.test {
  content: ''; }

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

Seperti disebutkan di atas, spesifikasi CSS mengatakan: "aturan @import apa pun harus mendahului semua aturan lainnya (kecuali aturan @charset , jika ada)."

Bergantung pada bagaimana Sass disusun, bug ini dapat dan akan menghasilkan kode di mana aturan @import tidak dimasukkan ke dalam keluaran CSS dengan benar dan kemudian diabaikan.


Bug/perbedaan kecil yang agak terkait di Libsass dan Ruby Sass adalah output dari tes berikut:

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

Ruby Sas:

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

Libass:

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

Saya tidak memperkirakan masalah apa pun yang timbul dari bug ini secara khusus, namun ini adalah perbedaan yang menarik untuk diperhatikan.

Semua 6 komentar

Tangkapan yang bagus. Anda juga dapat @import sebuah file .css , tetapi sepertinya file tersebut secara eksplisit memeriksa ekstensi .css . Berikut ini dapat berfungsi sebagai solusi:

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

Tapi sungguh, ini juga harus berhasil:

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

Libsass tidak boleh "memvalidasi" impor yang menargetkan file jarak jauh (satu di internet). Jika URI di dalam pernyataan impor jauh (yang dapat dipastikan dengan melihat apakah itu berisi urutan // ), maka libsass harus melemparkan seluruh pernyataan @import ke dalam CSS.

Saya mencoba contoh Anda di cabang master dan impor muncul di output (walaupun LibSass tidak memindahkannya ke atas file seperti yang dilakukan Ruby Sass) ... sudahkah Anda menariknya dalam beberapa minggu terakhir?

Impor harus berada di bagian atas file. Itu jelas dalam spesifikasi CSS: @import harus di atas.

dikirim dari iPhone saya

Pada 14 Februari 2014, pukul 15:02, Aaron Leung [email protected] menulis:

Saya mencoba contoh Anda di cabang master dan impor muncul di output (walaupun LibSass tidak memindahkannya ke atas file seperti yang dilakukan Ruby Sass) ... sudahkah Anda menariknya dalam beberapa minggu terakhir?


Balas email ini secara langsung atau lihat di GitHub.

Kasus uji yang disederhanakan:

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

Ruby Sass merestrukturisasi CSS dengan benar sehingga @import (s) berada di atas:

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

Libsass salah menghasilkan:

.test {
  content: ''; }

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

Seperti disebutkan di atas, spesifikasi CSS mengatakan: "aturan @import apa pun harus mendahului semua aturan lainnya (kecuali aturan @charset , jika ada)."

Bergantung pada bagaimana Sass disusun, bug ini dapat dan akan menghasilkan kode di mana aturan @import tidak dimasukkan ke dalam keluaran CSS dengan benar dan kemudian diabaikan.


Bug/perbedaan kecil yang agak terkait di Libsass dan Ruby Sass adalah output dari tes berikut:

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

Ruby Sas:

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

Libass:

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

Saya tidak memperkirakan masalah apa pun yang timbul dari bug ini secara khusus, namun ini adalah perbedaan yang menarik untuk diperhatikan.

Oke, ini harus diperbaiki sekarang. Ayo cobalah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

xzyfer picture xzyfer  ·  7Komentar

c0d3xpl0it picture c0d3xpl0it  ·  4Komentar

mikeebee picture mikeebee  ·  8Komentar

delijah picture delijah  ·  7Komentar

ashleykolodziej picture ashleykolodziej  ·  3Komentar