الفرق بين المراجعتين لصفحة: «Bootstrap/theming»
لا ملخص تعديل |
لا ملخص تعديل |
||
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
خصِّص إطار العمل Bootstrap بمتغيّرات Sass الجديدة - المعدَّة | <noinclude>{{DISPLAYTITLE:تخصيص مظهر إطار Bootstrap}}</noinclude> | ||
خصِّص إطار العمل Bootstrap بمتغيّرات Sass الجديدة - المعدَّة مسبقًا - الخاصّة بتفضيلات التنسيق العامّ من أجل '''تهيئة القوالب''' Theming والتعديل على العناصر بسهولة. | |||
== مقدّمة == | == مقدّمة == | ||
كانت تهيئة القوالب في الإصدار الثالث من إطار العمل Bootstrap تعتمد | كانت تهيئة القوالب في الإصدار الثالث من إطار العمل Bootstrap تعتمد كثيرًا على تعديل متغيّرات LESS، وصفحات أنماط مخصَّصة، وقالب [[CSS]] يُضمَّن في ملفات المُجلَّد <code>dist</code>. يمكن ببذل جهد يسير إعادة تصميم مظهر في الإصدار الثالث من Bootstrap دون المساس بالملفات الأصلية لإطار العمل. يوفّر الإصدار الرابع من إطار العمل Bootstrap مقاربة اعتيادية للمطورين، ولكنّها مختلفة قليلاً عن الإصدار الذي يسبقه. | ||
أصبحت القوالب تهيَّأ الآن بمتغيّرات [[Sass]]، | أصبحت القوالب تهيَّأ الآن بمتغيّرات [[Sass]]، وخرائط [[Sass]]، وبصفحات [[CSS]] مخصَّصة. لم يعد يوجد قالب [[CSS]] مخصَّص؛ يمكنك بدلًا من ذلك تفعيل القالب المُعدّ مسبقًا لإضافة التدرّجات اللونية والظلال وغيرها. | ||
استخدم ملفات [[Sass]] المصدرية للاستفادة من المتغيّرات، | === Sass === | ||
استخدم ملفات [[Sass]] المصدرية للاستفادة من المتغيّرات، والمخاليط (mixins)، والجداول (maps) وغيرها. لقد غيرنا دقة التقريب في Sass إلى 6 (افتراضيا تساوي 5) لتجنب المشاكل الناجمة عن تقريب المتصفحات. | |||
=== بنية الملفات === | === بنية الملفات === | ||
تجنّب تغيير ملفات [[Bootstrap]] الداخليّة كلّ ما أمكنك ذلك. يعني هذا - على مستوى Sass - إنشاء صفحات أنماط خاصّة تستورد تنسيقات [[Bootstrap]] لكي تعدّل عليها وتمدّدها. ستكون لديك، على اعتبار أنك تستخدم مدير حزم مثل <code>npm</code>، بنية ملفات تشبه التالي:<syntaxhighlight> | تجنّب تغيير ملفات [[Bootstrap]] الداخليّة كلّ ما أمكنك ذلك. يعني هذا - على مستوى Sass - إنشاء صفحات أنماط خاصّة تستورد تنسيقات [[Bootstrap]] لكي تعدّل عليها وتمدّدها. ستكون لديك، على اعتبار أنك تستخدم مدير حزم مثل <code>npm</code>، بنية ملفات تشبه التالي:<syntaxhighlight lang="text"> | ||
your-project/ | your-project/ | ||
├── scss | ├── scss | ||
سطر 17: | سطر 19: | ||
├── js | ├── js | ||
└── scss | └── scss | ||
</syntaxhighlight>إن نزّلت الملفات المصدرية بدون استخدام مدير حزم فستحتاج لإعداد بنية مشابهة لما سبق يدويّا. | </syntaxhighlight>إن نزّلت الملفات المصدرية بدون استخدام مدير حزم فستحتاج لإعداد بنية مشابهة لما سبق يدويّا. أبقِ ملفات [[Bootstrap]] المصدرية منفصلةً عن ملفاتك الخاصّة.<syntaxhighlight lang="text"> | ||
your-project/ | your-project/ | ||
├── scss | ├── scss | ||
سطر 27: | سطر 29: | ||
=== الاستيراد === | === الاستيراد === | ||
يستورد الملف <code>custom.scss</code> ملفات Sass المصدرية من إطار العمل [[Bootstrap]]. لديك خياران: تضمين جميع الملفات المصدرية من Bootstrap أو اختيار الأجزاء التي تحتاجها. يشجّع مطوّرو Bootstrap الخيار الثاني، لكن انتبه إلى أنه توجد متطلّبات واعتماديّات بين عناصر إطار العمل. تحتاج | يستورد الملف <code>custom.scss</code> ملفات Sass المصدرية من إطار العمل [[Bootstrap]]. لديك خياران: تضمين جميع الملفات المصدرية من Bootstrap أو اختيار الأجزاء التي تحتاجها. يشجّع مطوّرو Bootstrap الخيار الثاني، لكن انتبه إلى أنه توجد متطلّبات واعتماديّات بين عناصر إطار العمل. تحتاج أيضًا لتضمين بعض ملفات [[JavaScript]] لتعمل الملحقات.<syntaxhighlight lang="sass"> | ||
// Custom.scss | // Custom.scss | ||
// الخيار الأول: تضمين إطار العمل كاملا | // الخيار الأول: تضمين إطار العمل كاملا | ||
@import "node_modules/bootstrap/scss/bootstrap"; | @import "../node_modules/bootstrap/scss/bootstrap"; | ||
// Custom.scss | // Custom.scss | ||
// الخيار الثاني: تضمين أجزاء من إطار العمل | // الخيار الثاني: تضمين أجزاء من إطار العمل | ||
// مطلوب | // مطلوب | ||
@import "node_modules/bootstrap/scss/functions"; | @import "../node_modules/bootstrap/scss/functions"; | ||
@import "node_modules/bootstrap/scss/variables"; | @import "../node_modules/bootstrap/scss/variables"; | ||
@import "node_modules/bootstrap/scss/mixins"; | @import "../node_modules/bootstrap/scss/mixins"; | ||
// اختياري | // اختياري | ||
@import "node_modules/bootstrap/scss/reboot"; | @import "../node_modules/bootstrap/scss/reboot"; | ||
@import "node_modules/bootstrap/scss/type"; | @import "../node_modules/bootstrap/scss/type"; | ||
@import "node_modules/bootstrap/scss/images"; | @import "../node_modules/bootstrap/scss/images"; | ||
@import "node_modules/bootstrap/scss/code"; | @import "../node_modules/bootstrap/scss/code"; | ||
@import "node_modules/bootstrap/scss/grid"; | @import "../node_modules/bootstrap/scss/grid"; | ||
</syntaxhighlight>يمكن بعد إعدادات الضّبط أعلاه البدء في التعديل على متغيّرات Sass وجداوله ضمن الملف <code>custom.scss</code>. يمكنك إضافة أجزاء من إطار العمل Bootstrap ضمن المقطع الاختياري حسب الحاجة. نقترح إضافة القائمة الكاملة للاستيرادات من ملف <code>bootstrap.scss</code> لتكون نقطة بداية لك. | </syntaxhighlight>يمكن بعد إعدادات الضّبط أعلاه البدء في التعديل على متغيّرات Sass وجداوله ضمن الملف <code>custom.scss</code>. يمكنك إضافة أجزاء من إطار العمل Bootstrap ضمن المقطع الاختياري حسب الحاجة. نقترح إضافة القائمة الكاملة للاستيرادات من ملف <code>bootstrap.scss</code> لتكون نقطة بداية لك. | ||
=== القيم المبدئية للمتغيّرات === | === القيم المبدئية للمتغيّرات === | ||
يحوي كلّ متغيّر Sass في إطار العمل Bootstrap العلامة <code>!default</code> ليعطيك إمكانية إبطال القيمة المبدئية للمتغيّر في ملفات Sass الخاصّة بك دون الحاجة للتعديل على الملفات المصدرية لإطار العمل. انسخ المتغيّرات وألصقها حسب الحاجة، غيّر قيمها واحذف العلامة <code>!default</code>. إن أسندت | يحوي كلّ متغيّر Sass في إطار العمل Bootstrap العلامة <code>!default</code> ليعطيك إمكانية إبطال القيمة المبدئية للمتغيّر في ملفات Sass الخاصّة بك دون الحاجة للتعديل على الملفات المصدرية لإطار العمل. انسخ المتغيّرات وألصقها حسب الحاجة، غيّر قيمها واحذف العلامة <code>!default</code>. إن أسندت قيمةً إلى متغيّر فلن يعيد Bootstrap إسنادها بالقيم المبدئية. | ||
يمكنك العثور على القائمة الكاملة لمتغيرات Bootstrap في الملف <code>scss/_variables.scss</code>. بعض المتغيرات مُعيَّنة إلى القيمة <code>null</code>. لا تُخرج هذه المتغيرات الخاصية إلا في حال أعدت تعريفهما في الإعدادات. | |||
يمكن أن | يمكن أن تُسند قيمةٌ إلى متغيّر في ملفّ Sass قبل المتغيّرات المبدئية أو بعدها؛ إلا أن القيم العابرة للملفات يجب أن تأتي قبل استيراد ملفات Sass الخاصّة بإطار العمل Bootstrap. | ||
في ما يلي مثال على تغيير لون الخلفية ولون النّص بالنسبة للعنصر <code><body></code> عند استيراد Bootstrap وتجميعه بواسطة <code>npm</code>:<syntaxhighlight lang="sass"> | في ما يلي مثال على تغيير لون الخلفية ولون النّص بالنسبة للعنصر <code>[[HTML/body|<body>]]</code> عند استيراد Bootstrap وتجميعه بواسطة <code>npm</code>:<syntaxhighlight lang="sass"> | ||
// إبطال القيم المبدئية | // إبطال القيم المبدئية | ||
$body-bg: #000; | $body-bg: #000; | ||
سطر 65: | سطر 69: | ||
=== الجداول والحلقات === | === الجداول والحلقات === | ||
يحوي إطار العمل [[Bootstrap]] | يحوي إطار العمل [[Bootstrap]] مجموعةً من جداول Sass، وهي أزواج من المفاتيح والقيم المصاحبة لها تسهّل توليد مجموعات من صفحات [[CSS]] المترابطة. يستخدم Bootstrap الجداول للألوان، وحدود الشبكة (grid breakpoints)، وغيرها. تتضمّن جدوال Sass جميعًا - كما في المتغيّرات - العلامة <code>!default</code> ويمكن إبطال مفعولها وتمديدها. | ||
بعض الجداول تُدمج في جدول فارغا افتراضيا وذلك لتسهيل توسيع الجدول. بيد أنّ ذلك على حساب جعل إزالة العناصر من الجدول أصعب قليلا. | |||
==== تغيير جدول ==== | ==== تغيير جدول ==== | ||
أضف التالي إلى ملفّ Sass المخصَّص الخاصّ بك لتغيير اللون في جدول ألوان القالب <code>$theme-colors</code>:<syntaxhighlight lang="sass"> | أضف التالي إلى ملفّ Sass المخصَّص الخاصّ بك لتغيير اللون في جدول ألوان القالب <code>$theme-colors</code>:<syntaxhighlight lang="sass"> | ||
$theme-colors: ( | $theme-colors: ( | ||
"primary": #0074d9, | "primary": #0074d9, | ||
سطر 76: | سطر 82: | ||
==== الإضافة إلى جدول ==== | ==== الإضافة إلى جدول ==== | ||
أضف | أضف مفتاحًا وقيمة جديديْن إلى <code>$theme-colors</code> لإضافة لون جديد:<syntaxhighlight lang="sass"> | ||
$theme-colors: ( | $theme-colors: ( | ||
"custom-color": #900 | "custom-color": #900 | ||
سطر 83: | سطر 89: | ||
==== الحذف من جدول ==== | ==== الحذف من جدول ==== | ||
استخدم <code>map-remove</code> لحذف الألوان من <code>$theme-colors</code>، أو أي جدول آخر. انتبه إلى أنه يتوجّب إدراج العنصُر بين | استخدم <code>map-remove</code> لحذف الألوان من <code>$theme-colors</code>، أو أي جدول آخر. انتبه إلى أنه يتوجّب إدراج العنصُر بين الملفات المطلوبة من إطار العمل والملفات الاختيارية:<syntaxhighlight lang="sass"> | ||
// مطلوب | // مطلوب | ||
@import "node_modules/bootstrap/scss/functions"; | @import "node_modules/bootstrap/scss/functions"; | ||
سطر 99: | سطر 105: | ||
==== المفاتيح المطلوبة ==== | ==== المفاتيح المطلوبة ==== | ||
يفترض إطار العمل Bootstrap تواجد بعض المفاتيح المحدَّدة في جداول Sass؛ يستخدم Bootstrap هذه المفاتيح ويمدّدها. عند تخصيص الجداول المُضمَّنة، قد تلاقي أخطاء في أماكن يُستخدَم فيها مفتاح Sass مُحدَّد. | يفترض إطار العمل Bootstrap تواجد بعض المفاتيح المحدَّدة في جداول Sass؛ يستخدم Bootstrap هذه المفاتيح ويمدّدها (extend). عند تخصيص الجداول المُضمَّنة، قد تلاقي أخطاء في أماكن يُستخدَم فيها مفتاح Sass مُحدَّد. | ||
على سبيل المثال، يستخدم Bootstrap المفاتيح <code>success</code>، <code>primary</code> و<code>danger</code> من الجدول <code>$theme-colors</code> في تنسيق الروابط، | على سبيل المثال، يستخدم Bootstrap المفاتيح <code>success</code>، <code>primary</code> و<code>danger</code> من الجدول <code>$theme-colors</code> في تنسيق الروابط، والأزرار، وحالات النماذج (form states). لا يمثّل إبدال قيم هذه المفاتيح أية مشكلة؛ إلا أن حذفها قد يتسبّب في أخطاء عند تجميع Sass. يتوجّب في هذه الحالات تعديل شفرة Sass التي تستخدم هذه القيم. | ||
=== | === الدوال === | ||
يستخدم Bootstrap دوالّ Sass عدّة، إلا أنه لا يمكن تطبيق سوى جزء منها لتهيئة القوالب بصفة عامة. توجد ثلاث دوالّ للحصول على قيم من جداول الألوان:<syntaxhighlight lang="sass"> | يستخدم Bootstrap دوالّ Sass عدّة، إلا أنه لا يمكن تطبيق سوى جزء منها لتهيئة القوالب بصفة عامة. توجد ثلاث دوالّ للحصول على قيم من جداول الألوان:<syntaxhighlight lang="sass"> | ||
@function color($key: "blue") { | @function color($key: "blue") { | ||
سطر 121: | سطر 127: | ||
background-color: theme-color("dark"); | background-color: theme-color("dark"); | ||
} | } | ||
</syntaxhighlight>توجد دالّة أخرى تمكّن من الحصول على ''مستوى'' معيَّن من لون في جدول <code>$theme-colors</code>. تخفّف القيم السالبة من كثافة اللون، في ما تزيد القيم الموجبة هذه الكثافة.<syntaxhighlight lang="sass"> | </syntaxhighlight>توجد دالّة أخرى تمكّن من الحصول على ''مستوى'' معيَّن من لون في جدول <code>$theme-colors</code>. تخفّف القيم السالبة من كثافة اللون، في ما تزيد القيم الموجبة هذه الكثافة.<syntaxhighlight lang="sass"> | ||
@function theme-color-level($color-name: "primary", $level: 0) { | @function theme-color-level($color-name: "primary", $level: 0) { | ||
$color: theme-color($color-name); | $color: theme-color($color-name); | ||
سطر 129: | سطر 135: | ||
@return mix($color-base, $color, $level * $theme-color-interval); | @return mix($color-base, $color, $level * $theme-color-interval); | ||
} | } | ||
</syntaxhighlight>يعني هذا | |||
</syntaxhighlight>يعني هذا عمليًا أن تستدعي الدالة وتمرّر لها معامليْن: اسم اللون في <code>$theme-colors</code> (مثلًا <code>primary</code> أو <code>danger</code>) ومستوى عددي.<syntaxhighlight lang="sass"> | |||
.custom-element { | .custom-element { | ||
color: theme-color-level(primary, -10); | color: theme-color-level(primary, -10); | ||
سطر 136: | سطر 143: | ||
=== تباين الألوان === | === تباين الألوان === | ||
يتضمّن Bootstrap دالة إضافية لتباين الألوان: <code>color-yiq</code>.تستخدم هذه الدالة [[wikipedia:YIQ|فضاء الألوان YIQ]] للحصول | يتضمّن Bootstrap دالة إضافية لتباين الألوان: <code>color-yiq</code>.تستخدم هذه الدالة [[wikipedia:YIQ|فضاء الألوان YIQ]] للحصول تلقائيًا على تباين لوني مضيء (<code>#fff</code>) أو مظلم (<code>#111</code>) بالاعتماد على اللون القاعدي الأساسي المحدَّد. هذه الدالة مفيدة، خصوصا في المخاليط (mixins) والحلقات (loops) عندما تولّد أصنافًا (classes) عدّة. | ||
يوضّح المثال التالي توليد عيّنات ألوان من الجدول <code>$theme-colors</code>:<syntaxhighlight lang="sass"> | يوضّح المثال التالي توليد عيّنات ألوان من الجدول <code>$theme-colors</code>:<syntaxhighlight lang="sass"> | ||
@each $color, $value in $theme-colors { | @each $color, $value in $theme-colors { | ||
.swatch-#{$color} { | .swatch-#{$color} { | ||
سطر 151: | سطر 158: | ||
.custom-element { | .custom-element { | ||
color: color-yiq(theme-color("dark")); // ترجع `color: #fff` | color: color-yiq(theme-color("dark")); // ترجع `color: #fff` | ||
} | |||
</syntaxhighlight> | |||
=== تهريب SVG === | |||
نستخدم الدالة escape-svg لتهريب المحارف <code>></code> و <code><</code> و <code>#</code>في خلفية صور SVG. لا بد من تهريب هذه المحارف لضمان عرض سليم لخلفيات الصور في IE. | |||
=== دوال الجمع والطرح === | |||
نستخدم الدالتين <code>add</code> و <code>subtract</code> لتغليف دالة <code>calc</code>في CSS. الغاية الأساسية من هاتين الدالتين هي تجنب وقوع الأخطاء في حال تمرير القيمة <code>0</code> بلا وحدة إلى الدالة <code>calc</code>. مثلا، يطلق التعبير <code>calc(10px - 0)</code>خطأ في جميع المتصفحات، رغم أنّه صحيح رياضيا. | |||
هذا مثال على استخدام صحيح للدالة <code>calc</code>:<syntaxhighlight lang="sass"> | |||
$border-radius: .25rem; | |||
$border-width: 1px; | |||
.element { | |||
// Output calc(.25rem - 1px) is valid | |||
border-radius: calc($border-radius - $border-width); | |||
} | |||
.element { | |||
// Output the same calc(.25rem - 1px) as above | |||
border-radius: subtract($border-radius, $border-width); | |||
} | |||
</syntaxhighlight>هذا مثال على استخدام غير صحيح للدالة <code>calc</code>:<syntaxhighlight lang="sass"> | |||
$border-radius: .25rem; | |||
$border-width: 0; | |||
.element { | |||
// Output calc(.25rem - 0) is invalid | |||
border-radius: calc($border-radius - $border-width); | |||
} | |||
.element { | |||
// Output .25rem | |||
border-radius: subtract($border-radius, $border-width); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== خيارات Sass == | == خيارات Sass == | ||
استخدم ملف المتغيّرات المخصَّصة المُضمّن لتخصيص Bootstrap وبدّل تفضيلات CSS العامّة بمتغيّرات Sass الجديدة <code>$enable-*</code>. أبطل قيمة المتغيّرات وأعد تجميع الشفرة المصدرية حسب الحاجة بالأمر <code>npm run test</code>. | استخدم ملف المتغيّرات المخصَّصة المُضمّن لتخصيص Bootstrap وبدّل تفضيلات CSS العامّة بمتغيّرات Sass الجديدة <code>$enable-*</code>. أبطل قيمة المتغيّرات وأعد تجميع الشفرة المصدرية حسب الحاجة بالأمر <code>npm run test</code>. | ||
يمكن أن تعثُر على هذه المتغيّرات وتخصّص عبرها | يمكن أن تعثُر على هذه المتغيّرات وتخصّص عبرها الخيارات الأساسية العامّة في الملف <code>scss/_variables.scss</code> ضمن إطار العمل Bootstrap. | ||
{| class="wikitable" | {| class="wikitable" | ||
!المتغيّر | !المتغيّر | ||
سطر 163: | سطر 204: | ||
!الوصف | !الوصف | ||
|- | |- | ||
|<code>$spacer</code> | |<code>$spacer</code> | ||
|<code>1rem</code> ( | |<code>1rem</code> (مبدئيًا)، أو أي قيمة > 0 | ||
|يحدّد قيمة التباعد Spacer المبدئية لتوليد أدوات التباعد برمجيا. | |يحدّد قيمة التباعد Spacer المبدئية لتوليد أدوات التباعد برمجيا. | ||
|- | |- | ||
|<code>$enable-rounded</code> | |<code>$enable-rounded</code> | ||
|<code>true</code> ( | |<code>true</code> (مبدئيًا) أو <code>false</code> | ||
|يفعّل تنسيقات <code>border-radius</code> | |يفعّل تنسيقات <code>[[CSS/border-radius|border-radius]]</code> المعرَّفة مسبقًا على عناصر مختلفة. | ||
|- | |- | ||
|<code>$enable-shadows</code> | |<code>$enable-shadows</code> | ||
|<code>true</code> أو <code>false</code> ( | |<code>true</code> أو <code>false</code> (مبدئيًا) | ||
|يفعّل تنسيقات <code>box-shadow</code> | |يفعّل تنسيقات <code>[[CSS/box-shadow|box-shadow]]</code> المعرَّفة مسبقًا على عناصر مختلفة. | ||
|- | |- | ||
|<code>$enable-gradients</code> | |<code>$enable-gradients</code> | ||
|<code>true</code> أو <code>false</code> ( | |<code>true</code> أو <code>false</code> (مبدئيًا) | ||
|يفعّل التدرّجات المعرَّفة | |يفعّل التدرّجات المعرَّفة مسبقًا عبر تنسيقات <code>background-image</code>. | ||
|- | |- | ||
|<code>$enable-transitions</code> | |<code>$enable-transitions</code> | ||
|<code>true</code> ( | |<code>true</code> (مبدئيًا) أو <code>false</code> | ||
|يفعّل الانتقالات | |يفعّل الانتقالات (transitions) المُعرَّفة مسبقًا على عناصر مختلفة. | ||
|- | |- | ||
|<code>$enable-hover-media-query</code> | |<code>$enable-hover-media-query</code> | ||
|<code>true</code> or <code>false</code> ( | |<code>true</code> or <code>false</code> (مبدئيًا) | ||
|'''لم يعد | |'''لم يعد منصوحًا به''' | ||
|- | |- | ||
|<code>$enable-grid-classes</code> | |<code>$enable-grid-classes</code> | ||
|<code>true</code> ( | |<code>true</code> (مبدئيًا) أو <code>false</code> | ||
|يفعّل أصناف CSS لنظام الشبكة | |يفعّل أصناف CSS لنظام الشبكة (مثلًا <code>.container</code> و <code>.row</code> و <code>.col-md-1</code> ). | ||
|- | |- | ||
|<code>$enable-caret</code> | |<code>$enable-caret</code> | ||
|<code>true</code> ( | |<code>true</code> (مبدئيًا) أو <code>false</code> | ||
|يفعّل العنصر المزيَّف <code>caret</code> على <code>.dropdown-toggle</code>. | |يفعّل العنصر المزيَّف <code>caret</code> على <code>.dropdown-toggle</code>. | ||
|- | |- | ||
|<code>$enable-print-styles</code> | |<code>$enable-print-styles</code> | ||
|<code>true</code> ( | |<code>true</code> (مبدئيًا) أو <code>false</code> | ||
|يفعّل تنسيقات لتحسين الطباعة. | |يفعّل تنسيقات لتحسين الطباعة. | ||
|- | |||
|<code>$enable-prefers-reduced-motion-media-query</code> | |||
|<code>true</code> (مبدئيًا) أو <code>false</code> | |||
|إتاحة استعلام الوسائط <code>prefers-reduced-motion</code>، الذي يزيل بعض الحركات/النقلات حسب تفضيلات متصفح/نظام تشغيل المستخدم | |||
|- | |||
|<code>$enable-pointer-cursor-for-buttons</code> | |||
|<code>true</code> (مبدئيًا) أو <code>false</code> | |||
|إضافة مؤشر اليد إلى الأزرار غير المعطلة | |||
|- | |||
|$enable-responsive-font-sizes | |||
|<code>true</code> (مبدئيًا) أو <code>false</code> | |||
|إتاحة أحجام خطوط متجاوبة | |||
|- | |||
|<code>$enable-validation-icons</code> | |||
|<code>true</code> (مبدئيًا) أو <code>false</code> | |||
|إتاحة أيقونات <code>background-image</code> في مربعات الإدخال النصية وبعض الاستمارات المخصصة لتصحيح الحالة | |||
|- | |||
|<code>$enable-deprecation-messages</code> | |||
|<code>true</code> (مبدئيًا) أو <code>false</code> | |||
|إن أردت عرض تنبيهات بخصوص استخدام أي دوال أو مخاليط متجاوزة يُتوقع إزالتها فعيّن قيمتها إلى <code>true</code>. | |||
|} | |} | ||
== الألوان == | == الألوان == | ||
تنشئ سلسلة من الألوان المُعرَّفة | تنشئ سلسلة من الألوان المُعرَّفة مسبقًا في جدول Sass عناصر وأدوات متعدّدة في Bootstrap. يمكن تنفيذ حلقات تكرارية في Sass على هذا الجدول لتوليد سلسلة من مجموعات القواعد بسرعة. | ||
=== جميع الألوان === | === جميع الألوان === | ||
سطر 247: | سطر 308: | ||
* gray-800 | * gray-800 | ||
* gray-900 | * gray-900 | ||
تجد في الملف <code>scss/_variables.scss</code> المتغيّرات وجدول Sass الخاصّين بالألوان. في ما يلي مثال على الجدول <code>$colors</code>:<syntaxhighlight lang="sass"> | تجد في الملف <code>scss/_variables.scss</code> المتغيّرات وجدول Sass الخاصّين بالألوان. في ما يلي مثال على الجدول <code>$colors</code>:<syntaxhighlight lang="sass"> | ||
$colors: ( | $colors: ( | ||
"blue": $blue, | "blue": $blue, | ||
سطر 263: | سطر 324: | ||
"gray-dark": $gray-800 | "gray-dark": $gray-800 | ||
) !default; | ) !default; | ||
</syntaxhighlight>أضف | </syntaxhighlight>أضف قيمًا جديدة، وغيّر أو احذف قيما موجودة في الجدول لتحديث كيف تستخدم هذه الألوان في العناصر الأخرى من إطار العمل. للأسف، لا تعتمد ''جميع'' العناصر على هذا الجدول. ستسعى التحديثات المقبلة لإطار العمل من أجل تحسين هذا الأمر. خطّط في انتظار ذلك لاستخدام متغيّرات <code>${color}</code> والجدول <code>$colors</code>. | ||
== العناصر == | == العناصر == | ||
تُنشَأ عناصر وأدوات كثيرة في Bootstrap بحلقة <code>@each</code> تمرّ على جدول Sass. يساعد هذا الأمر كثيرًا في توليد تنويعات على عنصُر بتمديد الجدول <code>$theme-colors</code> وإنشاء تنويعات متجاوبة لكلّ نقطة حدية. سترى انعكاس التغييرات مباشرة في الحلقات بعد تخصيص جداول Sass وتجميع الشفرة. | تُنشَأ عناصر وأدوات كثيرة في Bootstrap بحلقة <code>@each</code> تمرّ على جدول Sass. يساعد هذا الأمر كثيرًا في توليد تنويعات على عنصُر بتمديد الجدول <code>$theme-colors</code> وإنشاء تنويعات متجاوبة لكلّ نقطة حدية. سترى انعكاس التغييرات مباشرة في الحلقات بعد تخصيص جداول Sass وتجميع الشفرة. | ||
=== المعدّلات Modifiers === | === المعدّلات Modifiers === | ||
تُنشَأ الكثير من عناصر Bootstrap حسب مقاربة تعتمد على صنف معدِّل قاعدي. يعني هذا أن التنسيق المُجمَل للعنصُر محتوًى في صنف قاعدي (مثل <code>.btn</code>) بينما تُضمَّن تنويعات التنسيق ضمن أصناف معدِّلة (مثل <code>.btn-danger</code>). تُنشَأ الأصناف المعدِّلة من الجدول <code>$theme-colors</code> من أجل تخصيص عدد الأصناف المعدِّلة وأسمائها. | تُنشَأ الكثير من عناصر Bootstrap حسب مقاربة تعتمد على صنف معدِّل قاعدي. يعني هذا أن التنسيق المُجمَل للعنصُر محتوًى في صنف قاعدي (مثل <code>.btn</code>) بينما تُضمَّن تنويعات التنسيق ضمن أصناف معدِّلة (مثل <code>.btn-danger</code>). تُنشَأ الأصناف المعدِّلة من الجدول <code>$theme-colors</code> من أجل تخصيص عدد الأصناف المعدِّلة وأسمائها. | ||
في ما يلي مثالان لكيفية المرور على الجدول <code>$theme-colors</code> لتوليد أصناف معدِّلة على العنصُر <code>.alert</code> (تنبيه) وجميع أدوات الخلفية <code>.bg-*</code>.<syntaxhighlight lang="sass"> | في ما يلي مثالان لكيفية المرور على الجدول <code>$theme-colors</code> لتوليد أصناف معدِّلة على العنصُر <code>.alert</code> (تنبيه) وجميع أدوات الخلفية <code>.bg-*</code>.<syntaxhighlight lang="sass"> | ||
// توليد الأصناف المعدِّلة للعنصُر alert | // توليد الأصناف المعدِّلة للعنصُر alert | ||
@each $color, $value in $theme-colors { | @each $color, $value in $theme-colors { | ||
سطر 278: | سطر 339: | ||
} | } | ||
} | } | ||
// توليد ألوان أدوات `.bg-*` | // توليد ألوان أدوات `.bg-*` | ||
@each $color, $value in $theme-colors { | @each $color, $value in $theme-colors { | ||
@include bg-variant('.bg-#{$color}', $value); | @include bg-variant('.bg-#{$color}', $value); | ||
سطر 287: | سطر 348: | ||
=== التجاوب === | === التجاوب === | ||
لا تقتصر حلقات Sass على جداول الألوان، بل يمكنك كذلك توليد تنويعات متجاوبة من عناصر إطار العمل وأدواته. خذ على سبيل المثال الأدوات المتجاوبة لمحاذاة النصّ حيث نجمع بين تطبيق الحلقة <code>@each</code> على الجدول <code>$grid-breakpoints</code> مع تضمين [[CSS/@media| | لا تقتصر حلقات Sass على جداول الألوان، بل يمكنك كذلك توليد تنويعات متجاوبة من عناصر إطار العمل وأدواته. خذ على سبيل المثال الأدوات المتجاوبة لمحاذاة النصّ حيث نجمع بين تطبيق الحلقة <code>@each</code> على الجدول <code>$grid-breakpoints</code> مع تضمين [[CSS/@media|استعلامات الوسائط]] Media query.<syntaxhighlight lang="sass"> | ||
@each $breakpoint in map-keys($grid-breakpoints) { | @each $breakpoint in map-keys($grid-breakpoints) { | ||
@include media-breakpoint-up($breakpoint) { | @include media-breakpoint-up($breakpoint) { | ||
سطر 297: | سطر 358: | ||
} | } | ||
} | } | ||
</syntaxhighlight>إن احتجت للتعديل على الجدول <code>$grid-breakpoints</code> الخاصّ بك فستُطبَّق جميع تغييراتك على الحلقات المارّة على هذا الجدول. | </syntaxhighlight>إن احتجت للتعديل على الجدول <code>$grid-breakpoints</code> الخاصّ بك فستُطبَّق جميع تغييراتك على الحلقات المارّة على هذا الجدول. | ||
== متغيّرات CSS == | == متغيّرات CSS == | ||
يحوي Bootstrap 4 ضمن شفرته المُجمَّعة حوالي دزينتيْن من [[CSS/--*|خاصيّات CSS المُخصَّصة (متغيّرات)]]. توفّر هذه المتغيّرات | يحوي Bootstrap 4 ضمن شفرته المُجمَّعة حوالي دزينتيْن من [[CSS/--*|خاصيّات CSS المُخصَّصة (متغيّرات)]]. توفّر هذه المتغيّرات وصولًا سهلًا إلى القيم التي يكثُر استخدامها مثل ألوان القالب، والنقاط الحديّة، وحزمة الخطوط الأساسية للعمل عليها في مفتّش المتصفّح (browser’s inspector)، وآلية تحديد الوصول إلى شفرة برمجية (sandbox)، والنمذجة (prototyping) العامة. | ||
=== المتغيّرات المتوفّرة === | === المتغيّرات المتوفّرة === | ||
في ما يلي متغيّرات [[CSS]] المُضمَّنة في Bootstrap 4 (لاحظ | في ما يلي متغيّرات [[CSS]] المُضمَّنة في Bootstrap 4 (لاحظ أنَّ الصنف الزائف [[CSS/:root|<code>:root</code>]] مطلوب). توجد هذه المتغيّرات في الملف <code>_root.scss</code>.<syntaxhighlight lang="css"> | ||
:root { | :root { | ||
--blue: #007bff; | --blue: #007bff; | ||
سطر 331: | سطر 392: | ||
--breakpoint-lg: 992px; | --breakpoint-lg: 992px; | ||
--breakpoint-xl: 1200px; | --breakpoint-xl: 1200px; | ||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; | --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; | ||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; | --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
سطر 346: | سطر 406: | ||
color: var(--blue); | color: var(--blue); | ||
} | } | ||
</syntaxhighlight>يمكن كذلك استخدام متغيّرات النقاط الحدّيّة | </syntaxhighlight>يمكن كذلك استخدام متغيّرات النقاط الحدّيّة (breakpoints) في استعلامات الوسائط:<syntaxhighlight lang="sass"> | ||
.content-secondary { | .content-secondary { | ||
display: none; | display: none; | ||
سطر 354: | سطر 414: | ||
.content-secondary { | .content-secondary { | ||
display: block; | display: block; | ||
} | |||
} | |||
</syntaxhighlight> | |||
=== متغيرات النقاط الحدية === | |||
لقد أضفنا نقاطا حدية إلى إلى متغيرات CSS (مثل <code>--breakpoint-md</code>)، لكنها '''غير مدعومة في استعلامات الوسائط'''. مع ذلك يمكنك استخدامها في مجموعات القواعد (rulesets) في استعلامات الوسائط. تبقى متغيرات النقاط الحدية في ملف CSS المُصرّف لأغراض التوافقية نظرا لأنها تُستخدم من قبل جافاسكربت. | |||
هذا مثال غير مدعوم:<syntaxhighlight lang="sass"> | |||
@media (min-width: var(--breakpoint-sm)) { | |||
... | |||
} | |||
</syntaxhighlight>هذا مثال مدعوم.:<syntaxhighlight lang="sass"> | |||
@media (min-width: 768px) { | |||
.custom-element { | |||
color: var(--primary); | |||
} | } | ||
} | } | ||
سطر 359: | سطر 434: | ||
== المصادر == | == المصادر == | ||
* صفحة [https://getbootstrap.com/docs/4. | * صفحة [https://getbootstrap.com/docs/4.5/getting-started/theming/ Theming Bootstrap] في توثيق Bootstrap. | ||
[[تصنيف:Bootstrap]] | [[تصنيف:Bootstrap|{{SUBPAGENAME}}]] | ||
[[تصنيف:Bootstrap Getting Started]] | [[تصنيف:Bootstrap Getting Started|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 11:16، 13 يوليو 2020
خصِّص إطار العمل Bootstrap بمتغيّرات Sass الجديدة - المعدَّة مسبقًا - الخاصّة بتفضيلات التنسيق العامّ من أجل تهيئة القوالب Theming والتعديل على العناصر بسهولة.
مقدّمة
كانت تهيئة القوالب في الإصدار الثالث من إطار العمل Bootstrap تعتمد كثيرًا على تعديل متغيّرات LESS، وصفحات أنماط مخصَّصة، وقالب CSS يُضمَّن في ملفات المُجلَّد dist
. يمكن ببذل جهد يسير إعادة تصميم مظهر في الإصدار الثالث من Bootstrap دون المساس بالملفات الأصلية لإطار العمل. يوفّر الإصدار الرابع من إطار العمل Bootstrap مقاربة اعتيادية للمطورين، ولكنّها مختلفة قليلاً عن الإصدار الذي يسبقه.
أصبحت القوالب تهيَّأ الآن بمتغيّرات Sass، وخرائط Sass، وبصفحات CSS مخصَّصة. لم يعد يوجد قالب CSS مخصَّص؛ يمكنك بدلًا من ذلك تفعيل القالب المُعدّ مسبقًا لإضافة التدرّجات اللونية والظلال وغيرها.
Sass
استخدم ملفات Sass المصدرية للاستفادة من المتغيّرات، والمخاليط (mixins)، والجداول (maps) وغيرها. لقد غيرنا دقة التقريب في Sass إلى 6 (افتراضيا تساوي 5) لتجنب المشاكل الناجمة عن تقريب المتصفحات.
بنية الملفات
تجنّب تغيير ملفات Bootstrap الداخليّة كلّ ما أمكنك ذلك. يعني هذا - على مستوى Sass - إنشاء صفحات أنماط خاصّة تستورد تنسيقات Bootstrap لكي تعدّل عليها وتمدّدها. ستكون لديك، على اعتبار أنك تستخدم مدير حزم مثل npm
، بنية ملفات تشبه التالي:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
إن نزّلت الملفات المصدرية بدون استخدام مدير حزم فستحتاج لإعداد بنية مشابهة لما سبق يدويّا. أبقِ ملفات Bootstrap المصدرية منفصلةً عن ملفاتك الخاصّة.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
الاستيراد
يستورد الملف custom.scss
ملفات Sass المصدرية من إطار العمل Bootstrap. لديك خياران: تضمين جميع الملفات المصدرية من Bootstrap أو اختيار الأجزاء التي تحتاجها. يشجّع مطوّرو Bootstrap الخيار الثاني، لكن انتبه إلى أنه توجد متطلّبات واعتماديّات بين عناصر إطار العمل. تحتاج أيضًا لتضمين بعض ملفات JavaScript لتعمل الملحقات.
// Custom.scss
// الخيار الأول: تضمين إطار العمل كاملا
@import "../node_modules/bootstrap/scss/bootstrap";
// Custom.scss
// الخيار الثاني: تضمين أجزاء من إطار العمل
// مطلوب
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
// اختياري
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/code";
@import "../node_modules/bootstrap/scss/grid";
يمكن بعد إعدادات الضّبط أعلاه البدء في التعديل على متغيّرات Sass وجداوله ضمن الملف custom.scss
. يمكنك إضافة أجزاء من إطار العمل Bootstrap ضمن المقطع الاختياري حسب الحاجة. نقترح إضافة القائمة الكاملة للاستيرادات من ملف bootstrap.scss
لتكون نقطة بداية لك.
القيم المبدئية للمتغيّرات
يحوي كلّ متغيّر Sass في إطار العمل Bootstrap العلامة !default
ليعطيك إمكانية إبطال القيمة المبدئية للمتغيّر في ملفات Sass الخاصّة بك دون الحاجة للتعديل على الملفات المصدرية لإطار العمل. انسخ المتغيّرات وألصقها حسب الحاجة، غيّر قيمها واحذف العلامة !default
. إن أسندت قيمةً إلى متغيّر فلن يعيد Bootstrap إسنادها بالقيم المبدئية.
يمكنك العثور على القائمة الكاملة لمتغيرات Bootstrap في الملف scss/_variables.scss
. بعض المتغيرات مُعيَّنة إلى القيمة null
. لا تُخرج هذه المتغيرات الخاصية إلا في حال أعدت تعريفهما في الإعدادات.
يمكن أن تُسند قيمةٌ إلى متغيّر في ملفّ Sass قبل المتغيّرات المبدئية أو بعدها؛ إلا أن القيم العابرة للملفات يجب أن تأتي قبل استيراد ملفات Sass الخاصّة بإطار العمل Bootstrap.
في ما يلي مثال على تغيير لون الخلفية ولون النّص بالنسبة للعنصر <body>
عند استيراد Bootstrap وتجميعه بواسطة npm
:
// إبطال القيم المبدئية
$body-bg: #000;
$body-color: #111;
// Bootstrap ومتغيّراته المبدئية
@import "node_modules/bootstrap/scss/bootstrap";
كرّر العمليّة حسب الحاجة على أي متغيّر في إطار العمل Bootstrap، بما في ذلك الخيارات العامة أدناه.
الجداول والحلقات
يحوي إطار العمل Bootstrap مجموعةً من جداول Sass، وهي أزواج من المفاتيح والقيم المصاحبة لها تسهّل توليد مجموعات من صفحات CSS المترابطة. يستخدم Bootstrap الجداول للألوان، وحدود الشبكة (grid breakpoints)، وغيرها. تتضمّن جدوال Sass جميعًا - كما في المتغيّرات - العلامة !default
ويمكن إبطال مفعولها وتمديدها.
بعض الجداول تُدمج في جدول فارغا افتراضيا وذلك لتسهيل توسيع الجدول. بيد أنّ ذلك على حساب جعل إزالة العناصر من الجدول أصعب قليلا.
تغيير جدول
أضف التالي إلى ملفّ Sass المخصَّص الخاصّ بك لتغيير اللون في جدول ألوان القالب $theme-colors
:
$theme-colors: (
"primary": #0074d9,
"danger": #ff4136
);
الإضافة إلى جدول
أضف مفتاحًا وقيمة جديديْن إلى $theme-colors
لإضافة لون جديد:
$theme-colors: (
"custom-color": #900
);
الحذف من جدول
استخدم map-remove
لحذف الألوان من $theme-colors
، أو أي جدول آخر. انتبه إلى أنه يتوجّب إدراج العنصُر بين الملفات المطلوبة من إطار العمل والملفات الاختيارية:
// مطلوب
@import "node_modules/bootstrap/scss/functions";
@import "node_modules/bootstrap/scss/variables";
@import "node_modules/bootstrap/scss/mixins";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
// اختياري
@import "node_modules/bootstrap/scss/root";
@import "node_modules/bootstrap/scss/reboot";
@import "node_modules/bootstrap/scss/type";
...
المفاتيح المطلوبة
يفترض إطار العمل Bootstrap تواجد بعض المفاتيح المحدَّدة في جداول Sass؛ يستخدم Bootstrap هذه المفاتيح ويمدّدها (extend). عند تخصيص الجداول المُضمَّنة، قد تلاقي أخطاء في أماكن يُستخدَم فيها مفتاح Sass مُحدَّد.
على سبيل المثال، يستخدم Bootstrap المفاتيح success
، primary
وdanger
من الجدول $theme-colors
في تنسيق الروابط، والأزرار، وحالات النماذج (form states). لا يمثّل إبدال قيم هذه المفاتيح أية مشكلة؛ إلا أن حذفها قد يتسبّب في أخطاء عند تجميع Sass. يتوجّب في هذه الحالات تعديل شفرة Sass التي تستخدم هذه القيم.
الدوال
يستخدم Bootstrap دوالّ Sass عدّة، إلا أنه لا يمكن تطبيق سوى جزء منها لتهيئة القوالب بصفة عامة. توجد ثلاث دوالّ للحصول على قيم من جداول الألوان:
@function color($key: "blue") {
@return map-get($colors, $key);
}
@function theme-color($key: "primary") {
@return map-get($theme-colors, $key);
}
@function gray($key: "100") {
@return map-get($grays, $key);
}
تستطيع استخدام هذه الدوالّ لاختيار لون من جدول Sass بنفس الطريقة التي كنت تستخدم بها متغيّر لون في الإصدار 3 من Bootstrap.
.custom-element {
color: gray("100");
background-color: theme-color("dark");
}
توجد دالّة أخرى تمكّن من الحصول على مستوى معيَّن من لون في جدول $theme-colors
. تخفّف القيم السالبة من كثافة اللون، في ما تزيد القيم الموجبة هذه الكثافة.
@function theme-color-level($color-name: "primary", $level: 0) {
$color: theme-color($color-name);
$color-base: if($level > 0, #000, #fff);
$level: abs($level);
@return mix($color-base, $color, $level * $theme-color-interval);
}
يعني هذا عمليًا أن تستدعي الدالة وتمرّر لها معامليْن: اسم اللون في $theme-colors
(مثلًا primary
أو danger
) ومستوى عددي.
.custom-element {
color: theme-color-level(primary, -10);
}
تمكن إضافة دوالّ في المستقبل أو عن طريق Sass مخصَّص لإنشاء دوالّ مستوى لجداول Sass أخرى، أو ربما دوالّ عمومية إن كنت تريد الإسهاب.
تباين الألوان
يتضمّن Bootstrap دالة إضافية لتباين الألوان: color-yiq
.تستخدم هذه الدالة فضاء الألوان YIQ للحصول تلقائيًا على تباين لوني مضيء (#fff
) أو مظلم (#111
) بالاعتماد على اللون القاعدي الأساسي المحدَّد. هذه الدالة مفيدة، خصوصا في المخاليط (mixins) والحلقات (loops) عندما تولّد أصنافًا (classes) عدّة.
يوضّح المثال التالي توليد عيّنات ألوان من الجدول $theme-colors
:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-yiq($value);
}
}
يمكن كذلك أن تستخدَم للحصول على تباين وحيد عند الحاجة:
.custom-element {
color: color-yiq(#000); // ترجع `color: #fff`
}
كما يمكن أن تستخدم لتحديد لون قاعدي بالتزامن مع دوال جدول الألوان:
.custom-element {
color: color-yiq(theme-color("dark")); // ترجع `color: #fff`
}
تهريب SVG
نستخدم الدالة escape-svg لتهريب المحارف >
و <
و #
في خلفية صور SVG. لا بد من تهريب هذه المحارف لضمان عرض سليم لخلفيات الصور في IE.
دوال الجمع والطرح
نستخدم الدالتين add
و subtract
لتغليف دالة calc
في CSS. الغاية الأساسية من هاتين الدالتين هي تجنب وقوع الأخطاء في حال تمرير القيمة 0
بلا وحدة إلى الدالة calc
. مثلا، يطلق التعبير calc(10px - 0)
خطأ في جميع المتصفحات، رغم أنّه صحيح رياضيا.
هذا مثال على استخدام صحيح للدالة calc
:
$border-radius: .25rem;
$border-width: 1px;
.element {
// Output calc(.25rem - 1px) is valid
border-radius: calc($border-radius - $border-width);
}
.element {
// Output the same calc(.25rem - 1px) as above
border-radius: subtract($border-radius, $border-width);
}
هذا مثال على استخدام غير صحيح للدالة calc
:
$border-radius: .25rem;
$border-width: 0;
.element {
// Output calc(.25rem - 0) is invalid
border-radius: calc($border-radius - $border-width);
}
.element {
// Output .25rem
border-radius: subtract($border-radius, $border-width);
}
خيارات Sass
استخدم ملف المتغيّرات المخصَّصة المُضمّن لتخصيص Bootstrap وبدّل تفضيلات CSS العامّة بمتغيّرات Sass الجديدة $enable-*
. أبطل قيمة المتغيّرات وأعد تجميع الشفرة المصدرية حسب الحاجة بالأمر npm run test
.
يمكن أن تعثُر على هذه المتغيّرات وتخصّص عبرها الخيارات الأساسية العامّة في الملف scss/_variables.scss
ضمن إطار العمل Bootstrap.
المتغيّر | القيم | الوصف |
---|---|---|
$spacer
|
1rem (مبدئيًا)، أو أي قيمة > 0
|
يحدّد قيمة التباعد Spacer المبدئية لتوليد أدوات التباعد برمجيا. |
$enable-rounded
|
true (مبدئيًا) أو false
|
يفعّل تنسيقات border-radius المعرَّفة مسبقًا على عناصر مختلفة.
|
$enable-shadows
|
true أو false (مبدئيًا)
|
يفعّل تنسيقات box-shadow المعرَّفة مسبقًا على عناصر مختلفة.
|
$enable-gradients
|
true أو false (مبدئيًا)
|
يفعّل التدرّجات المعرَّفة مسبقًا عبر تنسيقات background-image .
|
$enable-transitions
|
true (مبدئيًا) أو false
|
يفعّل الانتقالات (transitions) المُعرَّفة مسبقًا على عناصر مختلفة. |
$enable-hover-media-query
|
true or false (مبدئيًا)
|
لم يعد منصوحًا به |
$enable-grid-classes
|
true (مبدئيًا) أو false
|
يفعّل أصناف CSS لنظام الشبكة (مثلًا .container و .row و .col-md-1 ).
|
$enable-caret
|
true (مبدئيًا) أو false
|
يفعّل العنصر المزيَّف caret على .dropdown-toggle .
|
$enable-print-styles
|
true (مبدئيًا) أو false
|
يفعّل تنسيقات لتحسين الطباعة. |
$enable-prefers-reduced-motion-media-query
|
true (مبدئيًا) أو false
|
إتاحة استعلام الوسائط prefers-reduced-motion ، الذي يزيل بعض الحركات/النقلات حسب تفضيلات متصفح/نظام تشغيل المستخدم
|
$enable-pointer-cursor-for-buttons
|
true (مبدئيًا) أو false
|
إضافة مؤشر اليد إلى الأزرار غير المعطلة |
$enable-responsive-font-sizes | true (مبدئيًا) أو false
|
إتاحة أحجام خطوط متجاوبة |
$enable-validation-icons
|
true (مبدئيًا) أو false
|
إتاحة أيقونات background-image في مربعات الإدخال النصية وبعض الاستمارات المخصصة لتصحيح الحالة
|
$enable-deprecation-messages
|
true (مبدئيًا) أو false
|
إن أردت عرض تنبيهات بخصوص استخدام أي دوال أو مخاليط متجاوزة يُتوقع إزالتها فعيّن قيمتها إلى true .
|
الألوان
تنشئ سلسلة من الألوان المُعرَّفة مسبقًا في جدول Sass عناصر وأدوات متعدّدة في Bootstrap. يمكن تنفيذ حلقات تكرارية في Sass على هذا الجدول لتوليد سلسلة من مجموعات القواعد بسرعة.
جميع الألوان
تتوفّر الألوان التالية في Bootstrap 4 عبر متغيّرات Sass وجدول Sass ضمن الملف scss/_variables.scss
. تمدّد الإصداراتُ الفرعية المقبلة هذا الملف لإضافة درجات ألوان جديدة، على شاكلة لوحة تدرّجات البنّي أدناه.
- الأزرق Blue
- النيلي Indigo
- الأرجواني Purple
- الوردي Pink
- الأحمر Red
- البرتقالي Orange
- الأصفر Yellow
- الأخضر Green
- الأزرق المخضرّ Teal
- الأزرق السماوي Cyan
في ما يلي كيفية استخدام هذه الألوان في شفرة Sass الخاصّة بك:
// باستخدام المتغيّر
.alpha { color: $purple; }
// بالاختيار من جدول Sass عبر الدالة color()
.beta { color: color("purple"); }
تتوفّر كذلك أصناف أدوات الألوان لتعيين لونيْ النص color
والخلفية background-color
.
ملحوظة: يهدف مطوّرو Bootstrap في المستقبل إلى توفير جداول ومتغيّرات Sass لدرجات كلّ لون، كما هي حال لوحة تدرّجات اللون البني أدناه.
ألوان القوالب
يستخدم Bootstrap مجموعة مُصغَّرة من الألوان السابقة لإنشاء لوحة ألوان لتوليد تخطيطات لونية تتوفّر بصيغة متغيّرات وجدول Sass ضمن الملف scss/_variables.scss
.
- اللون الأولي Primary
- الثانوي Secondary
- لون النجاح Success
- لون الخطر Danger
- لون التحذير Warning
- لون المعلومات Info
- اللون الخفيف Light
- اللون الغامق Dark
تدرجات البني Gray scale
توجد مجموعة واسعة من متغيّرات اللون البني وجدول Sass في الملف scss/_variables.scss
للحصول على درجات متناغمة من اللون البنّي عبر مشروعك.
- gray-100
- gray-200
- gray-300
- gray-400
- gray-500
- gray-600
- gray-700
- gray-800
- gray-900
تجد في الملف scss/_variables.scss
المتغيّرات وجدول Sass الخاصّين بالألوان. في ما يلي مثال على الجدول $colors
:
$colors: (
"blue": $blue,
"indigo": $indigo,
"purple": $purple,
"pink": $pink,
"red": $red,
"orange": $orange,
"yellow": $yellow,
"green": $green,
"teal": $teal,
"cyan": $cyan,
"white": $white,
"gray": $gray-600,
"gray-dark": $gray-800
) !default;
أضف قيمًا جديدة، وغيّر أو احذف قيما موجودة في الجدول لتحديث كيف تستخدم هذه الألوان في العناصر الأخرى من إطار العمل. للأسف، لا تعتمد جميع العناصر على هذا الجدول. ستسعى التحديثات المقبلة لإطار العمل من أجل تحسين هذا الأمر. خطّط في انتظار ذلك لاستخدام متغيّرات ${color}
والجدول $colors
.
العناصر
تُنشَأ عناصر وأدوات كثيرة في Bootstrap بحلقة @each
تمرّ على جدول Sass. يساعد هذا الأمر كثيرًا في توليد تنويعات على عنصُر بتمديد الجدول $theme-colors
وإنشاء تنويعات متجاوبة لكلّ نقطة حدية. سترى انعكاس التغييرات مباشرة في الحلقات بعد تخصيص جداول Sass وتجميع الشفرة.
المعدّلات Modifiers
تُنشَأ الكثير من عناصر Bootstrap حسب مقاربة تعتمد على صنف معدِّل قاعدي. يعني هذا أن التنسيق المُجمَل للعنصُر محتوًى في صنف قاعدي (مثل .btn
) بينما تُضمَّن تنويعات التنسيق ضمن أصناف معدِّلة (مثل .btn-danger
). تُنشَأ الأصناف المعدِّلة من الجدول $theme-colors
من أجل تخصيص عدد الأصناف المعدِّلة وأسمائها.
في ما يلي مثالان لكيفية المرور على الجدول $theme-colors
لتوليد أصناف معدِّلة على العنصُر .alert
(تنبيه) وجميع أدوات الخلفية .bg-*
.
// توليد الأصناف المعدِّلة للعنصُر alert
@each $color, $value in $theme-colors {
.alert-#{$color} {
@include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));
}
}
// توليد ألوان أدوات `.bg-*`
@each $color, $value in $theme-colors {
@include bg-variant('.bg-#{$color}', $value);
}
التجاوب
لا تقتصر حلقات Sass على جداول الألوان، بل يمكنك كذلك توليد تنويعات متجاوبة من عناصر إطار العمل وأدواته. خذ على سبيل المثال الأدوات المتجاوبة لمحاذاة النصّ حيث نجمع بين تطبيق الحلقة @each
على الجدول $grid-breakpoints
مع تضمين استعلامات الوسائط Media query.
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
.text#{$infix}-left { text-align: left !important; }
.text#{$infix}-right { text-align: right !important; }
.text#{$infix}-center { text-align: center !important; }
}
}
إن احتجت للتعديل على الجدول $grid-breakpoints
الخاصّ بك فستُطبَّق جميع تغييراتك على الحلقات المارّة على هذا الجدول.
متغيّرات CSS
يحوي Bootstrap 4 ضمن شفرته المُجمَّعة حوالي دزينتيْن من خاصيّات CSS المُخصَّصة (متغيّرات). توفّر هذه المتغيّرات وصولًا سهلًا إلى القيم التي يكثُر استخدامها مثل ألوان القالب، والنقاط الحديّة، وحزمة الخطوط الأساسية للعمل عليها في مفتّش المتصفّح (browser’s inspector)، وآلية تحديد الوصول إلى شفرة برمجية (sandbox)، والنمذجة (prototyping) العامة.
المتغيّرات المتوفّرة
في ما يلي متغيّرات CSS المُضمَّنة في Bootstrap 4 (لاحظ أنَّ الصنف الزائف :root
مطلوب). توجد هذه المتغيّرات في الملف _root.scss
.
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
أمثلة
توفّر متغيّرات CSS مرونة مشابهة لمتغيّرات Sass، لكن بدون الحاجة لتجميعها قبل التقديم إلى المتصفّح. على سبيل المثال، نعيد أدناه إعداد تنسيق خطوط الصفحة وروابطها بمتغيّرات CSS.
body {
font: 1rem/1.5 var(--font-family-sans-serif);
}
a {
color: var(--blue);
}
يمكن كذلك استخدام متغيّرات النقاط الحدّيّة (breakpoints) في استعلامات الوسائط:
.content-secondary {
display: none;
}
@media (min-width(var(--breakpoint-sm))) {
.content-secondary {
display: block;
}
}
متغيرات النقاط الحدية
لقد أضفنا نقاطا حدية إلى إلى متغيرات CSS (مثل --breakpoint-md
)، لكنها غير مدعومة في استعلامات الوسائط. مع ذلك يمكنك استخدامها في مجموعات القواعد (rulesets) في استعلامات الوسائط. تبقى متغيرات النقاط الحدية في ملف CSS المُصرّف لأغراض التوافقية نظرا لأنها تُستخدم من قبل جافاسكربت.
هذا مثال غير مدعوم:
@media (min-width: var(--breakpoint-sm)) {
...
}
هذا مثال مدعوم.:
@media (min-width: 768px) {
.custom-element {
color: var(--primary);
}
}
المصادر
- صفحة Theming Bootstrap في توثيق Bootstrap.