Libsass: import url (http: // ...) فشل لعناوين URL للخطوط

تم إنشاؤها على ١٤ فبراير ٢٠١٤  ·  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 حتى يتم تحميل الخط بشكل صحيح.

روبي ساس يتصرف بشكل صحيح. يقوم بنقل 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 ، ولكن يبدو أنه يبحث صراحة عن امتداد .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: يجب أن يكون الاستيراد في الأعلى.

مرسل من الايفون الخاص بي

في 14 شباط (فبراير) 2014 ، الساعة 3:02 مساءً ، كتب آرون ليونغ إخطارات github.com:

لقد جربت المثال الخاص بك على الفرع الرئيسي ويظهر الاستيراد في الإخراج (على الرغم من أن 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 التقييمات