English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
:
بعدbox-shadow
).rgb()
،rgba()
،hsl()
،hsla()
أو rect()
القيمداخلأضف مسافة بعد علامة الاستفهام في قائمة الخصائص. هذا يساعد في التمييز بين قيم الخصائص المتعددة (تتضمن علامات الاستفهام والفضاءات) وقيم الألوان المتعددة (تتضمن علامات الاستفهام فقط، دون فضاءات)..5
بديلاً عن 0.5
;-.5px
بديلاً عن -0.5px
).#fff
، لأن الحروف الصغيرة سهلة التمييز أثناء مراجعة المستند، لأن شكلها أكثر تمييزًا.#fff
بديلاً عن #ffffff
.input[type="text"]
.هي اختيارية في بعض الحالات فقط، ولكن، من أجل توحيد الكود، يُنصح بوضعها في قوالب مزدوجة.margin: 0;
بديلاً عن margin: 0px;
.لديك أي استفسارات حول المصطلحات المستخدمة هنا؟ يرجى الرجوع إلى كيفية كتابة الجداول - بنية الجملة.
/* Bad CSS */ .selector, .selector-secondary, .selector[type=text] { padding:15px; margin:0px 0px 15px; background-color:rgba(0, 0, 0, 0.5); box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF } /* CSS جيد */ .selector, .selector-secondary, .selector[type="text"] { padding: 15px; margin-bottom: 15px; background-color: rgba(0,0,0,.5); box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff; }
يجب أن تكون التصريحات ذات الصلة مجمعة وترتبها وفقًا للترتيب التالي:
بسبب تحديد الموقع (positioning) يمكن إزالة العنصر من تدفق الوثيقة العادي ويمكنه أيضًا تغطية النمذجة (box model) للنمط، لذا ت排名 في المقدمة. النمذجة ت排名 ثانيًا لأنها تحدد حجم المكون وموقعه.
خصائص أخرى تؤثر فقط على المكونداخلية (داخلية)أو لا تؤثر على مجموعة الخصائص الأولى، لذا ت排名 في النهاية.
قائمة الخصائص الكاملة وترتيبها يمكن العثور عليها في التقديم.
.declaration-order { /* تحديد الموقع */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* نموذج الصندوق */ display: block; float: right; width: 100px; height: 100px; /* خط النص */ font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; color: #333; text-align: center; /* مرئي */ background-color: #f5f5f5; border: 1px solid #e5e5e5; border-radius: 3px; /* غير متناسق */ opacity: 1; }
@import
مع <link>
العلامة المميزة مقارنة بـ@import
التعليمات أبطأ بكثير، ليس فقط أنها تزيد من عدد الطلبات الإضافية، بل قد تؤدي إلى مشاكل غير متوقعة. طرق بديلة تتضمن ما يلي:
<link>
العنصريرجى الرجوع إلى مقالة Steve Soudersللإطلاع على المزيد من المعلومات.
<!-- استخدم عناصر الرابط --> <link rel="stylesheet" href="core.css"> <!-- تجنب @imports --> <style> @import url("more.css"); </style>
ضع استعلامات وسائل الإعلام قرب القواعد ذات الصلة قدر الإمكان. لا تجمعهم في ملف نمط واحد أو في نهاية المستند. إذا قمت بفصلهم، سيتم نسيانهم في المستقبل. يُقدم هنا مثال نموذجي.
.element { ... } .element-avatar { ... } .element-selected { ... } @media (min-width: 480px) { .element { ...} .element-avatar { ... } .element-selected { ... } }
عند استخدام خصائص مسبقة للشركات المحددة، من خلال الطريقة المعدلة، اجعل قيمة كل خاصية تتساوى في الاتجاه العمودي، مما يسهل التعديل المتعدد.
في Textmate، استخدم نص → تعديل كل سطر في التحديد (⌃⌘A). في Sublime Text 2، استخدم تحديد → إضافة سطر سابق (⌃⇧↑) و تحديد → إضافة سطر جديد (⌃⇧↓).
/* خصائص مسبقة */ .selector { -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15); box-shadow: 0 1px 2px rgba(0,0,0,.15); }
بالنسبة لـيحتوي فقط على بيانة واحدةالنمط، من أجل سهولة القراءة والتعديل السريع، يُنصح بوضع الجمل في نفس السطر. بالنسبة للنمط الذي يحتوي على بيانات متعددة، يجب أن يتم تقسيم البيانات إلى سطور متعددة.
العناصر الرئيسية لفعل ذلك هي لتحديد الأخطاء -- على سبيل المثال، مسبح CSS يشير إلى أن هناك خطأ في الصيغة في السطر 183. إذا كان هناك بيانات واحدة على سطر واحد، لن تتجاهل هذا الخطأ؛ إذا كان هناك بيانات متعددة على سطر واحد، يجب عليك تحليله بعناية لتجنب فقدان الأخطاء.
/* Single declarations on one line */ .span1 { width: 60px; } .span2 { width: 140px; } .span3 { width: 220px; } /* Multiple declarations, one per line */ .sprite { display: inline-block; width: 16px; height: 15px; background-image: url(../img/sprite.png); } .icon { background-position: 0 0; } .icon-home { background-position: 0 -20px; } .icon-account { background-position: 0 -40px; }
في الحالات التي تحتاج إلى تعيين جميع القيم بوضوح، يجب الحد من استخدام الخصائص المختصرة. من الأمثلة الشائعة على استعمال الخصائص المختصرة بشكل غير صحيح كالتالي:
padding
margin
font
background
border
border-radius
في معظم الحالات، لا نحتاج إلى تحديد جميع القيم للخصائص المختصرة. على سبيل المثال، عناصر التهيئة في HTML تحتاج فقط إلى تعيين قيم الهوامش العلوية والسفلية (margin)، لذا، في الحاجة، يمكن تغطية هاتين القيمتين فقط. الاستخدام المفرط للخصائص المختصرة يمكن أن يؤدي إلى فوضى في الكود، ويمكن أن يؤدي إلى تغطية القيم بشكل غير ضروري مما يؤدي إلى تأثيرات غير متوقعة.
هناك مقال رائع في MDN (مجتمع مطوري موزيلا) عنخصائص اختصار للأشخاص الذين لا يعرفون جيدًا خصائص البيان الصغير و سلوكياتها، مفيد جدًا.
/* مثال سيء */ .element { margin: 0 0 10px; background: red; background: url("image.jpg"); border-radius: 3px 3px 0 0; } /* مثال جيد */ .element { margin-bottom: 10px; background-color: red; background-image: url("image.jpg"); border-top-left-radius: 3px; border-top-right-radius: 3px; }
تجنب التغليف غير الضروري. هذا لأنه حتى لو كان بإمكانك استخدام التغليف، فإن ذلك لا يعني أنه يجب استخدامه. استخدم التغليف فقط عندما يكون من الضروري تقييد النمط في العنصر الأم (هذا هو الخيار التفضيلي) ووجود عدة عناصر تحتاج إلى التغليف.
// بدون التغليف .table > thead > tr > th { … } .table > thead > tr > td { … } // مع التغليف .table > thead > tr { > th { … } > td { … } }
الشيفرة مكتوبة ومحافظة من قبل البشر. تأكد من أن شيفرةك قابلة للشرح والتعليق الجيد والفهم من قبل الآخرين. يمكن للتعليقات الجيدة للـ code توضيح العلاقات الـ contextية وأهداف الشيفرة. لا تعيد تكرار أسماء المكونات أو class.
بالنسبة للتعليقات الطويلة، تأكد من كتابة جملة كاملة؛ بالنسبة للتعليقات العامة، يمكنك كتابة عبارات مختصرة.
/* مثال سيء */ /* رأس النموذج */ .modal-header { ... } /* مثال جيد */ /* عناصر التغليف لـ .modal-title و .modal-close */ .modal-header { ... }
.btn
و .btn-danger
)..btn
يعني button، ولكن .s
لا يمكن أن تعبر عن أي معنى..js-*
استخدم class لتحديد السلوك (مقابل النمط) ولا تدخل هذه class في ملفات CSS.في تسمية المتغيرات في Sass وLess يمكن الاستعانة بالنماذج المذكورة أعلاه.
/* مثال سيء */ .t { ... } .red { ... } .header { ... } /* مثال جيد */ .tweet { ... } .important { ... } .tweet-header { ... }
[class^="..."]
()). أداء المتصفح سيؤثر هذه العوامل.قراءة متعمقة:
/* مثال سيء */ span { ... } .page-container #stream .stream-item .tweet .tweet-header .username { ... } .avatar { ... } /* مثال جيد */ .avatar { ... } .tweet-header .username { ... } .tweet .avatar { ... }
/* * عنوان قسم العنصر */ .element { ... } /* * عنوان قسم العنصر * * في بعض الأحيان قد تحتاج إلى تضمين سياق اختياري للعنصر كله. قم بذلك هنا إذا كان مهمًا بما يكفي. */ .element { ... } /* مكون فرعي سياقي أو محدث */ .element-heading { ... }
ضبط محرر الخاص بك وفقًا للإعدادات التالية لتجنب التباينات الشائعة في الكود
يرجى مراجعة المستندات وأضف هذه معلومات التكوين إلى .editorconfig
في ملف. على سبيل المثال:مثال .editorconfig في Bootstrap. لمزيد من المعلومات، يرجى الرجوع إلى عن EditorConfig.