سؤال

  • يحتوي CSS على @import، أليس كذلك؟
  • يفهم IE6 *html selector الاختراق، أليس كذلك؟

هل من الممكن الجمع بينهما مثل

//*html @import url(ie6hacks.css);

أو ربما،

//*html { @import url(ie6hacks.css); }

?

يجب على المتصفحات الجيدة تخطي هذا، فهل ستظل تعمل في IE6؟كيف يبدو الحل؟أستطيع أن أرى بوضوح أنها تبدو قبيحة مثل CSS العادي.

هل كانت مفيدة؟

المحلول

هل من الممكن الجمع بينهما مثل

* html @import url(ie6hacks.css);

لا.قواعد at مثل @import ليست محددات، لذا لا يمكن دمجها مع محددات أخرى.

هناك طرق لجعل القواعد تعمل كاختراق، على سبيل المثال:

@import url(/* no! */iehacks.css);

سيتم تحميله بواسطة IE6/7 ولكن ليس بواسطة المتصفحات الأخرى.ومع ذلك، لا أنصح باستخدامه؛هذا النوع من الأشياء يمكن أن يكون هشًا حقًا.هذا المثال بالذات هو أيضًا CSS غير صالح.

كما يقول دانيال، إذا كنت تريد ملفات .css منفصلة للاختراق، فإن أفضل طريقة هي وضع علامة رابط مضمنة بشكل مشروط.يكمن جمال "* html" في أنه يمكنك وضع قواعد الاختراق في نفس ورقة الأنماط، والتي تكون إدارتها أسهل إذا كان هناك عدد قليل منها فقط؛إذا كان لديك ورقة أنماط منفصلة على أي حال، فلن تقدم أي ميزة.

إن IMO "* html" لـ IE6 هو الاختراق الوحيد الذي لا يزال من المشروع استخدامه حتى اليوم.جميع عناصر النموذج الصندوقي ميتة مع IE5   - على افتراض أنك لا تستخدم IE6 Quirks Mode، وهو ما لا ينبغي لك -   والمتصفحات الأخرى، حتى IE7، جيدة جدًا بشكل عام بحيث لا تتمكن من الهجوم باختراق بسيط؛إن الاختراقات القليلة التي يمكن أن تستهدفهم معقدة جدًا/هشة/غير صالحة للاستخدام حقًا.

(وبصفتي مخترع نموذج الصندوق المبسط، أقول لهم بئس المصير.)

نصائح أخرى

لماذا تهتم بهذا الاختراق الغريب عندما يمكنك استخدام التعليقات الشرطية لتضمين CSS الذي تحتاجه فقط؟

<!--[if IE 6]>
    <link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->

بعض الموارد:

إذا كان يجب عليك حقًا استخدام @import، فيمكنك الاستفادة من حقيقة أن IE لا يتبع مواصفات قاعدة @import.عادةً، يجب أن يكون هذا هو أول ما يتم التفكير فيه في ورقة الأنماط أو علامة النمط، وإلا فسيتم تجاهله تمامًا.ومع ذلك، يبدو أن IE6 (على الأقل عندما اختبرته) لا يهتم.وعلى هذا المنوال، يمكنك القيام بذلك:

<style type="text/css">
.NotARealClass { }

@import url("ie-style.css");
</style>

لاحظ أنني لم أختبر هذا في أي شيء إلى جانب FF3 (حيث يفشل في تحميل ie-style.css) وIE6 (حيث يتم تحميله على أي حال).قد تختلف المسافة المقطوعة الخاصة بك.

لسوء الحظ، ال *html لا يمكن استخدام hack لاستيراد أوراق أنماط أخرى.

هنا مقال شرح هذا الاختراق وغيره من الأمور المفيدة لمهاجمة الأخطاء الخاصة بـ IE.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top