الفرق بين المراجعتين لصفحة: «Bootstrap/extend»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:المنهجيّة المتّبعة في تطوير Bootstrap}}</noinclude> تصنيف:Bootstrap'
 
تحديث إلى 4.5
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:المنهجيّة المتّبعة في تطوير Bootstrap}}</noinclude>
<noinclude>{{DISPLAYTITLE:المنهجيّة المتّبعة في تطوير Bootstrap}}</noinclude>
[[تصنيف:Bootstrap]]
[[تصنيف:Bootstrap|{{SUBPAGENAME}}]]
تعرَّف على المبادئ التوجيهيّة والإستراتيجيّات  والتقنيّات المستخدَمة لبناء إطار العمل Bootstrap وصيّانته بحيث تستطيع تخصيصه أكثر وتمديده بنفسك.
 
تركّز هذه الصفحة، بخلاف صفحات البداية في هذا التوثيق والتي عرضت  مقدِّمة عامّة عن المشروع وما يوفّره،  تركّز على ''السبب'' الذي جعل فريق التطوير يعتمد طريقة التطوير التي اعتمدها؛ وتشرح فكرة المشروع القائمة على البناء على ما توفّره تقنيّات الويب بحيث يمكن للآخرين التعلّم من طريقة التطوير، والمساهمة في المشروع والمساعدة على تحسينه.
 
يمكن [https://github.com/twbs/bootstrap/issues/new فتح علّة على GitHub] عند ملاحظة أمر لا يعمل كما ينبغي في إطار العمل Bootstrap أو يمكن تحسينه.
 
== خلاصة ==
في ما يلي الخطوط العامّة التي وجَّهت عمليّة تطوير إطار العمل Bootstrap في إصداره الرابع:
* يجب أن تكون المكوِّنات متجاوبة وموَّجهة للجوّال أولًا.
* يجب أن تُبنَى المكوِّنات على أساس صنف قاعدي تُمدِّده أصناف معدِّلة.
* يجب أن تخضَع حالات المكوِّن لسلَّم <code>[[CSS/z-index|z-index]]</code> مشترك.
* يُفضَّل تنفيذ التصميم باستخدام [[HTML]] و [[CSS]] دون [[JavaScript]] كلّ ما كان ذلك ممكنًا.
* يُفضَّل استخدام الأدوات (الأصناف الخدميّة) بدلًا من التنسيقات الخاصّة كلّ ما كان ذلك ممكنًا.
* ينبغي تجنّب فرض متطلّبات HTML صارمة (محدِّدات الأبناء) كلّ ما كان ذلك ممكنًا.
 
== التجاوب ==
تُنشَأ أنماط Bootstrap لتكون متجاوبة، وهي مقاربة توصَف عادة بأنّها ''موجَّهة للجوّال أولًا'' (mobile-first). يُستخدَم هذا المُصطلَح في توثيق Bootstrap بنفس المعنى، إلّا أنّه قد يكون أحيانًا فضفاضًا جدّا. على الرغم من أنّه ''لا يتوجَّب'' على كلّ مكوِّن في Bootstrap أن يكون متجاوبًا تمامًا، إلّا أنّ مقاربة التجاوب هنا هي الحدّ من إعادة كتابة شيفرات CSS بدفع مستخدمي إطار العمل لإضافة أنماط مع ازدياد إطار العرض.
 
يتّضح هذا الأمر أكثر في استعلامات الوسائط. يستخدم إطار العمل غالبًا استعلامات <code>min-width</code> يبدأ مفعولها عند نقطة حدّيّة معيَّنة ويتنقّل إلى النقاط الحديّة العليا. على سبيل المثال، ينطبق الصنف <code>‎.d-none</code> من <code>min-width: 0</code> إلى ما لا نهاية؛ في حين ينطبق الصنف <code>‎.d-md-none</code> من النقطة الحديّة المتوسّطة فأعلى.
 
تُستخدَم أحيانًا الخاصيّة <code>max-width</code> عندما يتطلّب تعقيد وظيفة المكوِّن ذلك. تكون إعادة الكتابة هذه أوضح وظيفيًّا وعقليًّا في تنفيذها من كتابة جوهر الوظيفة باستخدام المكوِّنات الأخرى. يبذل مطوِّرو Bootstrap ما في وسعهم لتفادي هذه الطريقة، إلّا أنّهم يستخدمونها من حين لآخر.
 
== الأصناف ==
تهدف جميع الأنماط في إطار العمل Bootstrap، ما عدا تنسيقات Reboot التي هي ورقة أنماط لتطبيع تنسيقات عابرة للمتصفّحات، تهدف إلى استخدام الأصناف لتحديد العناصر. يعني هذا التخلّي عن محدِّدات الأنواع (مثل <code>input[type="text"]‎</code>) والأصناف الآباء الدخيلة (مثلًا <code>‎.parent .child</code>)
 
يجب أن تُبنى المكوِّنات، من هذا المنطلق، بصنف قاعديّ يحوي خاصيّات وقيّمًا مشتركة معدَّة لكي لا يُبطَل مفعولها (لا تُعاد كتابتها). الصنفان <code>‎.btn</code> و<code>‎.btn-primary</code> مثال على هذه النقطة. يُستخدَم الصنف <code>‎.btn</code> للأنماط المشتركة مثل العرض (<code>[[CSS/display|display]]</code>)، والحاشيّة (<code>[[CSS/padding|padding]]</code>) وعرض الإطار (<code>[[CSS/border-width|border-width]]</code>). ثم تأتي الأصناف المعدِّلة - مثل <code>‎.btn-primary</code> - لإضافة لون الخطّ، ولون الخلفيّة، ولون الإطار وغيرها.
 
يجب ألا تُستخدَم الأصناف المعدِّلة إلّا إذا كانت هناك خاصيّات أو قيّم عدّة يُرغَب في تغييرها عبر تنويعات متعدِّدة. ليس المعدِّلات ضروريّة دائمًا، لذا تأكّد عند إنشائها من أنّك فعلًا تقتصد في أسطُر الشفرة وتحول دون إعادة الكتابة غير الضروريّة. أصناف ألوان القالب وتنويعات الحجم أمثلة جيِّدة على الأصناف المعدِّلة.
 
== مستويات <code>z-index</code> ==
يوجَد مستويا <code>[[CSS/z-index|z-index]]</code> في إطار العمل Bootstrap: العناصر ضمن مكوِّن والطبقات الشفّافة (overlay).
 
=== عناصر المكوِّنات ===
* تُنشَأ بعضٌ من مكوِّنات Bootstrap بعناصر متراكبة (overlapping) لمنع تكرار الإطارات دون تغيير الخاصيّة <code>[[CSS/border|border]]</code>. على سبيل المثال، مجموعات الأزرار، ومجموعات الإدخال وترقيم الصفحات.
* تشترك هذه المكوِّنات في سُلَّم <code>[[CSS/z-index|z-index]]</code> من <code>0</code> إلى <code>3</code>.
* الدرجة <code>0</code> في السلَّم هي القيمة المبدئيّة (الابتدائيّة)،  والدرجة <code>1</code> للخاصيّة  <code>‎[[CSS/:hover|:hover]]</code>، و <code>2</code> الخاصيّة <code>[[CSS/:active|‎:active]]</code> أو الصنف <code>‎.active</code>، و <code>3</code> للخاصيّة <code>[[CSS/:focus|‎:focus]]</code>.
* تطابق هذه المقاربة توقّعاتنا بخصوص الأولويّة القصوى للمستخدِم. عند التركيز على عنصُر (<code>[[CSS/:focus|‎:focus]]</code>) فهذا يعني أنه مرئي ويحوز انتباه المستخدم. تأتي العناصر النشطة (<code>‎.active</code> أو <code>[[CSS/:active|‎:active]]</code>) ثانيّة في الأولويّة لأنّها تشير لحالة. يلي ذلك الحومان (<code>[[CSS/:hover|‎:hover]]</code>) في المرتبة الثالثة لأنّه يشير إلى نيّة مستخدم؛ يمكن تقريبًا الحومان ''على كلّ شيء''.
 
=== الطبقات الشفّافة ===
يحوي إطار العمل Bootstrap مكوِّنات عديدة تعمل كطبقة شفّافة. يتعلَّق الأمر بالمكوِّنات التاليّة (مرتَّبة تصاعديًّا حسب قيمة <code>z-index</code>): [[Bootstrap/dropdowns|القوائم المنسدلة]]، [[Bootstrap/navbar|وشرائط التنقّل]] المثبَّّتة واللاصقة، [[Bootstrap/modal|والنوافذ الشرطيّة]]، [[Bootstrap/tooltips|والتلميحات]] [[Bootstrap/popovers|والعناصر المنبثقة]]. لدى هذه المكوِّنات سلَّم درجات <code>z-index</code> خاصّ بها يبدأ من القيمة <code>1000</code>. اختيرت هذه القيمة المبدئيّة عشوائيًّا، وتهدف لأن تكون حافظة صغيرة بين أنماط إطار العمل والأنماط المُخصَّصة لمشروعك.
 
يزيد كلّ مكوِّن بطبقة شفّافة قيمة <code>[[CSS/z-index|z-index]]</code> قليلًا بحيث تُحتَرَم مبادئ تجربة المستخدم المتعارف عليها والتي تسمح للعناصر التي يركّز عليها المستخدم أو يحوم فوقها بالبقاء دائمًا في مجال الرؤية. [[Bootstrap/modal|النوافذ الشرطيّة]] - على سبيل المثال - تحجب المستند (لا يمكن تنفيذ إجراءات أخرى غير إجراء النافذة الشرطيّة)؛ لذا فإنها تكون فوق [[Bootstrap/navbar|شرائط التنقّل]].
 
راجع [[Bootstrap/layout overview#z-index|هذه الصفحة]] للمزيد عن الخاصيّة <code>z-index</code>.
 
== أولويّة [[HTML]] و [[CSS]] على [[JavaScript]] ==
يُفضِّل مطوِّرو Bootstrap كتابة شفرات [[HTML]] و [[CSS]] بدلًا من [[JavaScript]] كلّ ما أمكن ذلك. عمومًا تكون HTML و CSS أكثر إنتاجيّة وأسهل للكثير من الأشخاص من جميع الخبرات. علاوةً على ذلك، ينفّذ المتصفّح شفرات HTML و CSS أسرع من شفرات JavaScript.
 
هذا المبدأ هو الداعي لوجود خاصيّات البيانات (<code>data</code>) للتخاطب مع واجهة تطبيقات JavaScript باستخدام خاصيّات HTML. لن تحتاج تقريبًا لكتابة أي شفرة JavaScript لاستخدام مُلحقات JavaScript التي يتوفّر عليها إطار العمل Bootstrap. اقرأ [[Bootstrap/javascript#.D8.AE.D8.A7.D8.B5.D9.8A.D9.91.D8.A7.D8.AA .D8.A7.D9.84.D8.A8.D9.8A.D8.A7.D9.86.D8.A7.D8.AA|توثيق خاصيّات البيانات]] للمزيد من المعلومات.
 
تُبنَى أنماط Bootstrap على السلوك القاعديّ لعناصر الويب الشائعة، لذا يُفضَّل دائمًا استخدامُ ما يوفّره المتصفّح كلّ ما كان ذلك ممكنا. يمكن - على سبيل المثال - تطبيق الصنف ‎<code>.btn</code> على أي عنصُر HTML تقريبًا، إلّا أنّ أغلب العناصر لا توفّر أي قيمة دلاليّة للصنف أو وظيفة في المتصفّح. لذا يُستخدَم الصنف مع العنصريْن <code>[[HTML/button|<button>]]</code> و <code></code>.
 
ينطبق الأمر كذلك على المكوِّنات المعقَّدة. على الرغم من أنّه ''تمكن'' كتابة ملحق خاصّ للتصديق على الاستمارات لإضافة أصناف إلى العنصُر الأب اعتمادًا على حالة حقل الإدخال، وبالتالي يمكن تنسيق النصّ - مثلًا - باللون الأحمر؛ إلّا أنّ مطوِّري Bootstrap يفضّلون استخدام الصنفيْن الزائفيْن <code>[[CSS/:valid|‎:valid]]</code> و <code>‎[[CSS/:invalid|:invalid]]</code> اللذيْن يتوفّر عليهما كلّ متصفّح.
 
== الأدوات ==
الأدوات - المعروفة سابقًا بالمساعِدات (helpers) في الإصدار 3 - هي وسيلة فعّالة للحؤول دون تضخّم أنماط CSS ومشاكل الأداء في صفحات الويب. الأداة (الصنف الخدمي) هي عادة زوج خاصيّة-قيمة لا يمكن التعديل عليه ويُعبَّر عنه بصنف CSS‏ (<code>‎.d-block</code> تعني مثلًا <code>display: block;‎</code>). تهدف الأدوات أساسًا إلى أن تكون سريعة الاستخدام عند كتابة شفرات HTML وتحدّ من أنماط CSS المُخصَّصة المطلوب كتابتها.
 
في ما يتعلَّق بالأنماط المخصَّصة، يمكن للأدوات أن تساعد في مكافحة ازديّاد أحجام الملفّات باختصار أزواج الخاصيّات والقيّم في أصناف منفردة. يمكن أن ينتُج عن هذا الأمر تأثير كبير عند تمدّد المشروع.
 
== شفرات HTML مرنة ==
يعمل مطوّرو Bootstrap جاهدين على تفادي التخصيص المبالغ فيه في عناصر HTML المطلوبة للمكوِّنات، على الرغم من أنّ ذلك لا يكون ممكنًا دائما. من هذا المنطلق تركّز محدِّدات CSS على الأصناف المنفردة وتحاول تجنّب محدِّدات الأبناء المباشرين (<code><</code>). يمنحك هذا الأمر مرونة أكبر في التنفيذ ويساعد في الإبقاء على شفرات CSS أيسر وأقلّ تحديدًا.
 
== مصادر ==
* [https://getbootstrap.com/docs/4.5/extend/approach/ صفحة Extend Approach في توثيق Bootstrap].

المراجعة الحالية بتاريخ 06:10، 15 يوليو 2020

تعرَّف على المبادئ التوجيهيّة والإستراتيجيّات والتقنيّات المستخدَمة لبناء إطار العمل Bootstrap وصيّانته بحيث تستطيع تخصيصه أكثر وتمديده بنفسك.

تركّز هذه الصفحة، بخلاف صفحات البداية في هذا التوثيق والتي عرضت مقدِّمة عامّة عن المشروع وما يوفّره، تركّز على السبب الذي جعل فريق التطوير يعتمد طريقة التطوير التي اعتمدها؛ وتشرح فكرة المشروع القائمة على البناء على ما توفّره تقنيّات الويب بحيث يمكن للآخرين التعلّم من طريقة التطوير، والمساهمة في المشروع والمساعدة على تحسينه.

يمكن فتح علّة على GitHub عند ملاحظة أمر لا يعمل كما ينبغي في إطار العمل Bootstrap أو يمكن تحسينه.

خلاصة

في ما يلي الخطوط العامّة التي وجَّهت عمليّة تطوير إطار العمل Bootstrap في إصداره الرابع:

  • يجب أن تكون المكوِّنات متجاوبة وموَّجهة للجوّال أولًا.
  • يجب أن تُبنَى المكوِّنات على أساس صنف قاعدي تُمدِّده أصناف معدِّلة.
  • يجب أن تخضَع حالات المكوِّن لسلَّم z-index مشترك.
  • يُفضَّل تنفيذ التصميم باستخدام HTML و CSS دون JavaScript كلّ ما كان ذلك ممكنًا.
  • يُفضَّل استخدام الأدوات (الأصناف الخدميّة) بدلًا من التنسيقات الخاصّة كلّ ما كان ذلك ممكنًا.
  • ينبغي تجنّب فرض متطلّبات HTML صارمة (محدِّدات الأبناء) كلّ ما كان ذلك ممكنًا.

التجاوب

تُنشَأ أنماط Bootstrap لتكون متجاوبة، وهي مقاربة توصَف عادة بأنّها موجَّهة للجوّال أولًا (mobile-first). يُستخدَم هذا المُصطلَح في توثيق Bootstrap بنفس المعنى، إلّا أنّه قد يكون أحيانًا فضفاضًا جدّا. على الرغم من أنّه لا يتوجَّب على كلّ مكوِّن في Bootstrap أن يكون متجاوبًا تمامًا، إلّا أنّ مقاربة التجاوب هنا هي الحدّ من إعادة كتابة شيفرات CSS بدفع مستخدمي إطار العمل لإضافة أنماط مع ازدياد إطار العرض.

يتّضح هذا الأمر أكثر في استعلامات الوسائط. يستخدم إطار العمل غالبًا استعلامات min-width يبدأ مفعولها عند نقطة حدّيّة معيَّنة ويتنقّل إلى النقاط الحديّة العليا. على سبيل المثال، ينطبق الصنف ‎.d-none من min-width: 0 إلى ما لا نهاية؛ في حين ينطبق الصنف ‎.d-md-none من النقطة الحديّة المتوسّطة فأعلى.

تُستخدَم أحيانًا الخاصيّة max-width عندما يتطلّب تعقيد وظيفة المكوِّن ذلك. تكون إعادة الكتابة هذه أوضح وظيفيًّا وعقليًّا في تنفيذها من كتابة جوهر الوظيفة باستخدام المكوِّنات الأخرى. يبذل مطوِّرو Bootstrap ما في وسعهم لتفادي هذه الطريقة، إلّا أنّهم يستخدمونها من حين لآخر.

الأصناف

تهدف جميع الأنماط في إطار العمل Bootstrap، ما عدا تنسيقات Reboot التي هي ورقة أنماط لتطبيع تنسيقات عابرة للمتصفّحات، تهدف إلى استخدام الأصناف لتحديد العناصر. يعني هذا التخلّي عن محدِّدات الأنواع (مثل input[type="text"]‎) والأصناف الآباء الدخيلة (مثلًا ‎.parent .child)

يجب أن تُبنى المكوِّنات، من هذا المنطلق، بصنف قاعديّ يحوي خاصيّات وقيّمًا مشتركة معدَّة لكي لا يُبطَل مفعولها (لا تُعاد كتابتها). الصنفان ‎.btn و‎.btn-primary مثال على هذه النقطة. يُستخدَم الصنف ‎.btn للأنماط المشتركة مثل العرض (display)، والحاشيّة (padding) وعرض الإطار (border-width). ثم تأتي الأصناف المعدِّلة - مثل ‎.btn-primary - لإضافة لون الخطّ، ولون الخلفيّة، ولون الإطار وغيرها.

يجب ألا تُستخدَم الأصناف المعدِّلة إلّا إذا كانت هناك خاصيّات أو قيّم عدّة يُرغَب في تغييرها عبر تنويعات متعدِّدة. ليس المعدِّلات ضروريّة دائمًا، لذا تأكّد عند إنشائها من أنّك فعلًا تقتصد في أسطُر الشفرة وتحول دون إعادة الكتابة غير الضروريّة. أصناف ألوان القالب وتنويعات الحجم أمثلة جيِّدة على الأصناف المعدِّلة.

مستويات z-index

يوجَد مستويا z-index في إطار العمل Bootstrap: العناصر ضمن مكوِّن والطبقات الشفّافة (overlay).

عناصر المكوِّنات

  • تُنشَأ بعضٌ من مكوِّنات Bootstrap بعناصر متراكبة (overlapping) لمنع تكرار الإطارات دون تغيير الخاصيّة border. على سبيل المثال، مجموعات الأزرار، ومجموعات الإدخال وترقيم الصفحات.
  • تشترك هذه المكوِّنات في سُلَّم z-index من 0 إلى 3.
  • الدرجة 0 في السلَّم هي القيمة المبدئيّة (الابتدائيّة)، والدرجة 1 للخاصيّة :hover، و 2 الخاصيّة ‎:active أو الصنف ‎.active، و 3 للخاصيّة ‎:focus.
  • تطابق هذه المقاربة توقّعاتنا بخصوص الأولويّة القصوى للمستخدِم. عند التركيز على عنصُر (‎:focus) فهذا يعني أنه مرئي ويحوز انتباه المستخدم. تأتي العناصر النشطة (‎.active أو ‎:active) ثانيّة في الأولويّة لأنّها تشير لحالة. يلي ذلك الحومان (‎:hover) في المرتبة الثالثة لأنّه يشير إلى نيّة مستخدم؛ يمكن تقريبًا الحومان على كلّ شيء.

الطبقات الشفّافة

يحوي إطار العمل Bootstrap مكوِّنات عديدة تعمل كطبقة شفّافة. يتعلَّق الأمر بالمكوِّنات التاليّة (مرتَّبة تصاعديًّا حسب قيمة z-index): القوائم المنسدلة، وشرائط التنقّل المثبَّّتة واللاصقة، والنوافذ الشرطيّة، والتلميحات والعناصر المنبثقة. لدى هذه المكوِّنات سلَّم درجات z-index خاصّ بها يبدأ من القيمة 1000. اختيرت هذه القيمة المبدئيّة عشوائيًّا، وتهدف لأن تكون حافظة صغيرة بين أنماط إطار العمل والأنماط المُخصَّصة لمشروعك.

يزيد كلّ مكوِّن بطبقة شفّافة قيمة z-index قليلًا بحيث تُحتَرَم مبادئ تجربة المستخدم المتعارف عليها والتي تسمح للعناصر التي يركّز عليها المستخدم أو يحوم فوقها بالبقاء دائمًا في مجال الرؤية. النوافذ الشرطيّة - على سبيل المثال - تحجب المستند (لا يمكن تنفيذ إجراءات أخرى غير إجراء النافذة الشرطيّة)؛ لذا فإنها تكون فوق شرائط التنقّل.

راجع هذه الصفحة للمزيد عن الخاصيّة z-index.

أولويّة HTML و CSS على JavaScript

يُفضِّل مطوِّرو Bootstrap كتابة شفرات HTML و CSS بدلًا من JavaScript كلّ ما أمكن ذلك. عمومًا تكون HTML و CSS أكثر إنتاجيّة وأسهل للكثير من الأشخاص من جميع الخبرات. علاوةً على ذلك، ينفّذ المتصفّح شفرات HTML و CSS أسرع من شفرات JavaScript.

هذا المبدأ هو الداعي لوجود خاصيّات البيانات (data) للتخاطب مع واجهة تطبيقات JavaScript باستخدام خاصيّات HTML. لن تحتاج تقريبًا لكتابة أي شفرة JavaScript لاستخدام مُلحقات JavaScript التي يتوفّر عليها إطار العمل Bootstrap. اقرأ توثيق خاصيّات البيانات للمزيد من المعلومات.

تُبنَى أنماط Bootstrap على السلوك القاعديّ لعناصر الويب الشائعة، لذا يُفضَّل دائمًا استخدامُ ما يوفّره المتصفّح كلّ ما كان ذلك ممكنا. يمكن - على سبيل المثال - تطبيق الصنف ‎.btn على أي عنصُر HTML تقريبًا، إلّا أنّ أغلب العناصر لا توفّر أي قيمة دلاليّة للصنف أو وظيفة في المتصفّح. لذا يُستخدَم الصنف مع العنصريْن <button> و .

ينطبق الأمر كذلك على المكوِّنات المعقَّدة. على الرغم من أنّه تمكن كتابة ملحق خاصّ للتصديق على الاستمارات لإضافة أصناف إلى العنصُر الأب اعتمادًا على حالة حقل الإدخال، وبالتالي يمكن تنسيق النصّ - مثلًا - باللون الأحمر؛ إلّا أنّ مطوِّري Bootstrap يفضّلون استخدام الصنفيْن الزائفيْن ‎:valid و :invalid اللذيْن يتوفّر عليهما كلّ متصفّح.

الأدوات

الأدوات - المعروفة سابقًا بالمساعِدات (helpers) في الإصدار 3 - هي وسيلة فعّالة للحؤول دون تضخّم أنماط CSS ومشاكل الأداء في صفحات الويب. الأداة (الصنف الخدمي) هي عادة زوج خاصيّة-قيمة لا يمكن التعديل عليه ويُعبَّر عنه بصنف CSS‏ (‎.d-block تعني مثلًا display: block;‎). تهدف الأدوات أساسًا إلى أن تكون سريعة الاستخدام عند كتابة شفرات HTML وتحدّ من أنماط CSS المُخصَّصة المطلوب كتابتها.

في ما يتعلَّق بالأنماط المخصَّصة، يمكن للأدوات أن تساعد في مكافحة ازديّاد أحجام الملفّات باختصار أزواج الخاصيّات والقيّم في أصناف منفردة. يمكن أن ينتُج عن هذا الأمر تأثير كبير عند تمدّد المشروع.

شفرات HTML مرنة

يعمل مطوّرو Bootstrap جاهدين على تفادي التخصيص المبالغ فيه في عناصر HTML المطلوبة للمكوِّنات، على الرغم من أنّ ذلك لا يكون ممكنًا دائما. من هذا المنطلق تركّز محدِّدات CSS على الأصناف المنفردة وتحاول تجنّب محدِّدات الأبناء المباشرين (<). يمنحك هذا الأمر مرونة أكبر في التنفيذ ويساعد في الإبقاء على شفرات CSS أيسر وأقلّ تحديدًا.

مصادر