تنسيقات المتصفحات المخصصة ودعمها وأداءها في CSS – CSS

تُضيف المتصفحات تلقائيًا بعض الأنماط على عناصر HTML، وتختلف هذه الأنماط باختلاف المتصفح مما يتسبب في ظهور الصفحة بأشكال مختلفة عند عرضها على متصفحات مختلفة، ولتفادي هذا الأمر يجب توحيد أنماط المتصفحات، ومن الشائع استخدام مكتبة normalize.css والتي تضبط بعض الأنماط وتُصحح بعض الأخطاء الشائعة في بعض المتصفحات.

الفرق بين normalize.css و reset.css

الفرق الأساسي بين مكتبة normalize.css ومكتبة reset.css هو أن الأولى تضبط بعض الأنماط لتوحيدها في جميع المتصفحات، بينما تُزيل الثانية جميع الأنماط الافتراضية من العناصر، مما يعني أنك ستضطر لكتابة جميع القواعد من الصفر.

مثال: استخدام Eric Meyer’s reset.css

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,GoalKicker.com  CSS Notes for Professionals 224
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

مزيد من المعلومات حول Eric Meyer’s reset.css.

مثال: استخدام normalize.css

/**
* 1. توحيد نوع الخط في جميع المتصفحات
* 2. تصحيح ارتفاع السطر وتوحيده في جميع المتصفحات
* 3. ‫منع تعديل حجم الخط عند تغيير اتجاه العرض في متصفح IE و Safari
*/
/* Document
========================================================================== */
html {
    font-family: sans-serif; /* 1 */
    line-height: 1.15; /* 2 */
    -ms-text-size-adjust: 100%; /* 3 */
    -webkit-text-size-adjust: 100%; /* 3 */
}

/*
========================================================================== */
/**
* إزالة الهوامش
*/
body {
    margin: 0;
}
/**
* تصحيح طريقة العرض
*/
article,
aside,
footer,
header,
nav,
section {
    display: block;
}
/**
* تصحيح حجم الخط والهوامش
*/
h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

التحايل على متصفح Internet Explorer

دعم القاعدة display: inline-block في متصفح IE6 و IE7

القاعدة display: inline-block غير مدعومة في متصفحات IE6 و IE7، ولكن من الممكن الحصول على سلوك مماثل لسلوكها عن طريق تطبيق الشيفرة التالية:

zoom: 1;
*display: inline;
  • تُشغِّل الخاصية zoom ميزة hasLayout للعناصر، وهي متاحة فقط في متصفح Internet Explorer.
  • تُطبق الخاصية display* القاعدة المحددة فقط على المتصفحات التي تتأثر بالخاصية zoom.

وضع التباين العالي

أُضيف محدد الوسائط ms-high-contrast- في متصفحات Internet Explorer ابتداءً من الإصدار العاشر والإصدارات التي تليه، مما يسمح للمبرمج بضبط الأنماط بناءّ على ما إذا كان المستخدم يستخدم وضع التباين العالي أم لا.

للمحدد ms-high-contrast- ثلاث حالات هي: active، وblack-on-white، وwhite-on-black.

مثال

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: black-on-white) {
    .header {
        background: #fff;
        color: #000;
    }
}

في هذا المثال يتغير لون خلفية العنصر header إلى اللون الأبيض ولون الكتابة للون الأسود إذا كان وضع التباين العالي مُفعَّلًا وفي الحالة black-on-white.

مثال

@media screen and (-ms-high-contrast: white-on-black) {
    .header {
        background: #000;
        color: #fff;
    }
}

في هذا المثال يتغير لون خلفية العنصر header إلى اللون الاسود ولون الكتابة للون الأبيض إذا كان وضع التباين العالي مُفعَّلًا وفي الحالة white-on-black.

لمزيد من المعلومات زر توثيق مايكروسوفت.

استهداف متصفحات IE6 و IE7 فقط

لاستهداف متصفحات IE6 و IE7 فقط يجب بدء الخواص بالعلامة (*)

مثال

.hide-on-ie6-and-ie7 {
    *display: none;
}

استهداف متصفح IE8 فقط

لاستهداف متصفح IE8 فقط يجب وضع جميع المُحددات داخل الاستعلام ‎@media screen { }

مثال

@media  screen {
    .hide-on-ie8 {
        display: none;
    }
}

أداء المتصفحات

استخدام الخصائص transform و opacity لتجنب تنبيه التخطيط

تغيير بعض الخصائص في CSS يُنبِّه المتصفح لإعاده حساب القيم النهائية للأنماط و التخطيط، مما يتسبب في تبطيء تحميل الصفحة.

مثال: التحريك باستخدام الخواص left و top

#box {
    left: 0;
    top: 0;
    transition: left 0.5s, top 0.5s;
    position: absolute;
    width: 50px;
    height: 50px;
    background-color: gray;
}
#box.active {
    left: 100px;
    top: 100px;
}

اطلع على تجربة حية لهذا المثال على JSFiddle.

تستغرق الصفحة حوالي 11.7 ملي ثانية للتحميل، ومن ثم تستغرق 9.8 ملي ثانية لإعادة رسم الصندوق في الموضع الجديد.

AOima.png

ولتحسين الأداء وتسريع تحميل الصفحة يجب استخدام الخواص transform وopacity للحصول على نفس النتيجة كما هو موضح في المثال التالي:

#box {
    left: 0;
    top: 0;
    position: absolute;
    width: 50px;
    height: 50px;
    background-color: gray;
    transition: transform 0.5s;
    transform: translate3d(0, 0, 0);
}
#box.active 
    transform: translate3d(100px, 100px, 0);
}

اطلع على تجربة حية لهذا المثال على JSFiddle.

تستغرق الصفحة حوالي 1.3 ملي ثانية للتحميل، ومن ثم تستغرق 2.0 ملي ثانية لإعادة رسم الصندوق في الموضع الجديد.

MLTAH.png

ترجمة -وبتصرف- للفصول Browser Support & Prefixes – Normalizing Browser Styles – Internet Explorer Hacks – Performance من كتاب CSS Notes for Professionals


Source link

اظهر المزيد
زر الذهاب إلى الأعلى

أنت تستخدم إضافة Adblock

الاعلانات هي مصدرنا الوحيد لدفع التكلفة التشغيلية لهذا المشروع الريادي يرجى الغاء تفعيل حاجب الأعلانات