اتضح أنني واجهت بعض السلوكيات غير الطبيعية في قائمة UL في العمل.
بالإضافة إلى ذلك، رأيت المنشور http://bbs.blueidea.com/thread-2984871-1-1.html بالأمس، لذلك اختبرت سمات مختلفة لنمط القائمة واكتشفت ظاهرة مثيرة للاهتمام.
دعونا نلقي نظرة على شرح نمط القائمة في دليل CSS أولاً.
التعريف والاستخدام
تقوم السمة المختصرة لنمط القائمة بتعيين جميع خصائص القائمة في إعلان واحد.
يوضح
هذه الخاصية هي خاصية مختصرة تغطي كافة خصائص نمط القائمة الأخرى. نظرًا لأنه ينطبق على جميع العناصر التي تحتوي على عرض عنصر القائمة، فلا يمكن استخدامه إلا على عناصر li في HTML وXHTML العاديين، ولكن في الواقع يمكن تطبيقه على أي عنصر ويتم توريثه بواسطة عنصر عنصر القائمة.
يمكن ضبط الخصائص التالية بالترتيب:
• نوع القائمة
• قائمة نمط الموقف
•قائمة نمط الصورة
ليس من الضروري تعيين إحدى القيم، على سبيل المثال، "list-style:circle inside;" مسموح به أيضًا. الخصائص التي لم يتم تعيينها تستخدم قيمها الافتراضية.
القيمة الافتراضية: القرص خارج لا شيء
في العمل اليومي، غالبًا ما يكون من الضروري إجراء إعادة تعيين CSS على ul وli لإخفاء رموز القائمة.
الطريقة الأكثر استخدامًا في الكتابة هي Ul,li,ol{list-style:none;} (يستخدم بعض الأشخاص أيضًا ul,li,ol{list-style-type:none;})
تشغيل مربع التعليمات البرمجية
[Ctrl+A تحديد كافة النصائح: يمكنك تعديل جزء من الكود أولاً ثم الضغط على تشغيل]
لا توجد مشكلة في هذه الصفحة في IE6 و7 و8 وFF.
ولكن ما لا يمكننا تجاهله هو أن نمط القائمة: يحتوي على ثلاث سمات:
نوع نمط القائمة
موضع نمط القائمة
قائمة نمط img
إذا لم تنتبه لهذه السمات الثلاث، فسيتسبب نمط القائمة في بعض الأحيان في حدوث مشكلات.
على سبيل المثال، عندما يحتاج ul، بعد التعويم، إلى العرض: مضمن لحل مشكلة الهامش المزدوج في IE6، يحدث شيء غريب:
تشغيل مربع التعليمات البرمجية
[Ctrl+A تحديد كافة النصائح: يمكنك تعديل جزء من الكود أولاً ثم الضغط على تشغيل]
.ul01{تعويم:يسار؛عرض:مضمن؛}
.ul01,.ul01 لي {قائمة نمط: لا شيء؛}
الصفحة أعلاه لا تزال طبيعية في IE8 وff، ولكن في IE6 و7، هناك مسافة بين الجزء الداخلي من ul وli.
يمكن ملاحظة أنه عندما نحدد نمط القائمة: لا شيء، على الرغم من عدم ظهور رمز القائمة، إلا أن موضعه لا يزال موجودًا في IE6 و7.
تعرف على السمات التي يتمتع بها UL هذا في FF
كما يتبين من الصورة، عندما يتم تعريف نمط القائمة: لا شيء في CSS، فلن يكون له أي تأثير على موضع نمط القائمة، ولا يزال الإعداد الافتراضي لمتصفح FF، والقيمة خارجه.
في IE6 و7، من المرجح أن يكون list-style-position: inside هو الإعداد الافتراضي
لتأكيد ذلك، قمت بتغيير نمط القائمة: لا شيء إلى نمط القائمة: لا شيء داخل لا شيء واختبرته مرة أخرى
تشغيل مربع التعليمات البرمجية
[Ctrl+A تحديد كافة النصائح: يمكنك تعديل جزء من الكود أولاً ثم الضغط على تشغيل]
بعد تشغيله، يمكنك أن تجد أنه في IE6 و7، يتصرف تمامًا مثل نمط القائمة: لا شيء.
لذلك أعتقد أنه في IE6 و7، عندما يحتوي UL على سمات float:left وdisplay:inline ونمط القائمة: لا شيء، يتم تعيين موضع نمط القائمة أيضًا على الداخل؛
لذا فإن الاستنتاج الذي توصلت إليه هو أنه في ظل IE6 و7، عندما لا يكون لدى UL float:left;display:inline;:
بغض النظر عما إذا كان هناك نمط القائمة للسمة: لا شيء، فإن رموز القائمة مخفية ولا تشغل مساحة (5، 6 في الكود أدناه)
عندما يكون لدى UL سمة float:left;display:inline;
نمط القائمة: لا شيء، رمز القائمة مخفي، لكن الموضع لا يزال موجودًا (نمط القائمة: الموضع: بالداخل) (UL1، ul3 في الكود أدناه)
نمط القائمة: لا شيء لم يتم تعيينه؛ حرف القائمة مخفي ولا يشغل موضعًا (نمط القائمة: خارج) (رمز UL4)
كان أداء UL02 جيدًا نسبيًا في جميع المتصفحات المشاركة في الاختبار.
يقارن هذا الجزء الأخير من التعليمات البرمجية أداء نمط القائمة في ظل ظروف مختلفة، وخاصة أداء 4 و5 و6 ضمن IE6 و7.
تشغيل مربع التعليمات البرمجية
[Ctrl+A تحديد كافة النصائح: يمكنك تعديل جزء من الكود أولاً ثم الضغط على تشغيل]
من خلال مقارنة نتائج أداء الكود أعلاه، أعتقد:
في Firefox، طالما أن نوع نمط القائمة لا شيء، بغض النظر عن قيمة موضع نوع القائمة بالخارج أو بالداخل، يمكن إخفاء نمط القائمة جيدًا في IE6 و7، يتم تعيين نمط القائمة فقط: لا شيء ، لا يكفي لحل جميع المشكلات، لذلك أعتقد أنه من الأفضل استخدام list-style:none خارج none عند إعادة تعيين CSS.