الهجرة إلى الإصدار 4 من Bootstrap
الإصدار الرابع من Bootstrap هو إعادة كتابة جذرية للمشروع بأكمله. سنلخّص في هذه الصفحة أبرز التغييرات التي أتى بها هذا الإصدار، ثمّ سنسرد التغييرات بحسب كل مكونة على حدة.
التغييرات المستقرة
بالنسبة لمن يريد الانتقال من الإصدار بيتا 3 إلى أيّ من إصدارات 4.x المستقرة، فلا توجد تغييرات جذرية (breaking changes) للتوافق، بيد أنّ هناك بعض التغييرات التي يجدر الانتباه إليها.
الطباعة
- أدوات إصلاح علل الطباعة. كان استخدام الأصناف
.d-print-*يؤدي في السابق إلى إلغاء أصناف .d-* الأخرى. أما الآن فهي تتطابق مع أدوات العرض الأخرى، كما لا تنطبق إلا على الوسائط المعنية (@media print). - توسيع أدوات عرض الطباعة المتاحة لتتناسب مع الأدوات المساعدة الأخرى. لم يتوفر الإصدار بيتا 3 وما دونه إلا على
inline-blockوinlineوnone. و لقد أضاف الإصدار 4 إلى ذلكflexوinline-flexوtableوtable-rowوtable-cell. - إتاحة معاينة الطباعة الثابتة عبر المتصفحات مع أنماط طباعة جديدة تتيح تحديد حجم الصفحة
@page size
تغييرات بيتا 3
شهد الإصدار بيتا 2 الجزء الأكبر من التغييرات الجذرية للتوافق خلال مرحلة التطوير بيتا، إلا أنه لا تزال هناك بعض التغييرات التي يجب معالجتها في الإصدار بيتا 3. يجدر أخذ هذه التغييرات بالحسبان إن كنت تريد التحديث إلى الإصدار بيتا 3 من الإصدار بيتا 2 أو أيّ إصدار أقدم.
معلومات متنوعة
- إزالة المتغير
$thumbnail-transition. لم نكن ننقل أي شيء، لذلك لم تكن هناك حاجة إلى هذا المتغير. - لم تعد حزمة npm تتضمن أي ملفات بخلاف ملفات المصدر source والمورد dist؛ إذا كنت تعتمد عليها وكنت تشغّل برامجنا النصية عبر المجلد
node_modules، فعليك تعديل سير عملك.
الاستمارات
- أعدنا كتابة مربعات التأشير وأزرار الانتقاء المخصصة والابتدائية. أصبح لكليهما الآن بنية HTML متطابقة (وسوم خارجية
<div>مع إخوة<input>و<label>) ونفس أنماط التخطيط (مكدّسة ابتداء، ومضمّنة مع صنف مُعدِّل modifier class). يتيح لنا هذا تصميم اللاصقات بناءً على حالة الإدخال، وكذلك تبسيط دعم الخاصيةdisabled(التي كانت تتطلب في السابق صنفا أبويا) ودعم تصديق الاستمارات. رافق هذا تغيير أنماط CSS لإدارة صور الخلفية المتعددة على مربعات التأشير والانتقاء المخصصة. كان لعنصر.custom-control-indicator- المحذوف حاليا - لون خلفية متدرج وأيقونة SVG. تخصيص تدرج الخلفية يعني ضرورة استبدال كل تلك العناصر في كل مرة تحتاج فيها إلى تغيير أحدها. أما الآن فأصبحنا نستخدم .custom-control-label::beforeلأجل التعبئة والتلوين المتدرج، فيما يتكفل.custom-control-label::afterبالأيقونة. إن أردت جعل مربع التأشير ضمنيا، فأضف الصنف .custom-control-inline. - تحديث محدّدات مجموعات الأزرار الخاصة بالمدخلات. فبدلًا من استخدام
[data-toggle = "button"] {} للتحكم في التنسيق والسلوك، أصبحنا نستخدم خاصية البياناتdataحصرًا لأجل التحكم في سلوكات جافاسكربت، فيما نعتمد على الصنف الجديد.btn-group-toggلأجل التنسيق. - إزالة
.col-form-legendوتعويضه بصنف مُحسّن.col-form-label، بهذه الطريقة يمكن استخدام.col-form-label-smو.col-form-label-lgعلى عناصر<legend>بكل سهولة.
- تغيير متغير عناصر إدخال الملفات المخصصة
$custom-file-text. فلم يعد قاموسا متشعبا في Sass، وهو الآن يعمل حصرا على سلسلة نصية واحدة فقط — زر التصفحBrowseالذي أصبح الآن العنصر الزائف الوحيد الذي يُنشأ عبر Sass. يأتي نص اختيار الملفChoose fileمن اللاصقة.custom-file-label.
مجموعات الإدخال
- أصبحت إضافات مجموعة الإدخال محدّدة الآن في مواضعها نسبة إلى عنصر الإدخال. لقد أزلنا
.input-group-addonو.input-group-btnوعوّضناهما بصنفين جديدين:.input-group-prependو.input-group-append. يجب عليك أن تستخدم صراحة الإلحاق append أو الإسباق prepend لتبسيط استخدام CSS. خلال الإلحاق أو الإسباق، ضع الأزرار كما هو معتاد، ولكن مع تغليف النص في عنصر.input-group-text. - أصبحت أنماط التصديق مدعومة الآن، وكذلك عناصر الإدخال المتعددة (مع ذلك لا يمكن التصديق إلا على عنصر إدخال واحد فقط في كل مجموعة).
- يجب أن توضع أصناف الأحجام في الأب
.input-group. وليس في عناصر الاستمارة الفردية.
تغييرات الإصدار بيتا 2
نحاول قدر الإمكان تجنب إجراء أيّ تغيير جذري للتوافق في الإصدار التجريبي بيتا. ولكن ليس كل ما يُبتغى يُنال. فيما يلي بعض التغييرات الجذرية التي يجب أخذها بالحسبان عند الانتقال من الإصدار بيتا 1 إلى بيتا 2.
- إزالة المتغير
$badge-colorواستخدامه على عناصر .badge. أصبحنا نستخدم دالة تباين الألوان لاختيار اللون بناءً على لون الخلفية، لذا لم يعد هذا المتغير ضروريا. - إعادة تسمية الدالة
grayscale() إلىgray()لتجنب التعارض مع مرشحات التدرج الرمادي الأصلية في CSS. - إعادة تسمية
.table-inverseو .thead-inverseو.thead-defaultإلى .*-darkو.*-light، وذلك لمطابق مخططات الألوان المستخدمة في المواضع الأخرى. - تنشئ الجداول المتجاوبة الآن أصنافًا لكل نقطة حدية للشبكة. هذا يكسر التوافق مع الإصدار بيتا 1 من حيث أنّ
.table-responseiveالمُستخدم سابقا شبيه بالصنف.table-responseive-md. يمكنك الآن استخدام.table-responseiveأو.table-responseive- {sm، md، lg، xl}. - التوقف عن دعم Bower، ذلك أنّ مدير الحزم هذا أصبح مُتجاوزًا موازنة بالبدائل المتاحة (مثل Yarn أو npm). انظر bower/bower#2298 لمزيد من التفاصيل.
- ما يزال Bootstrap يتطلب jQuery 1.9.1 أو أعلى، ولكن يُنصح باستخدام الإصدار 3.x نظرًا لأن المتصفحات المدعومة من 3.x هي التي يدعمها Bootstrap، علاوة على ذلك فإنّ الإصدار 3.x فيه بعض العلل الأمنية.
- إزالة الصنف غير المستخدم
.form-control-label. كان هذا الصنف نسخة مكررة من الصنف.col-form-labelالذي كان يُوسِّط رأسيا عناصر<label>وعناصر الإدخال المرتبطة بها في خطاطات الاستمارات الأفقية. - تحويل
color-yiqمن مخلوط يتضمن خاصية اللون إلى دالة تعيد قيمة، مما يتيح لك استخدامها في جميع خاصيات CSS. على سبيل المثال، بدلاً من كتابةcolor-yiq (# 000)، يمكنك الآن كتابةcolor: color-yiq (# 000);.
أبرز النقاط
- تقديم استخدام جديد لـ
pointer-eventsفي النوافذ الشرطية. تمرّ النافذة الشرطية.modal-dialogالخارجية عبر الأحداث ذات الخاصيةpointer-events: noneللتعامل مع النقرات المخصصة (مما يتيح الاكتفاء بالإنصات إلى.modal-backdropلأي نقرة)، ثم التفاعل معه في عناصر.modal-contentذات الخاصيةpointer-events: auto.
ملخص
فيما يلي عناصر التذاكر الأساسية التي يجب أن تأخذها بالحسبان عند الانتقال من الإصدار 3 إلى الإصدار 4.
دعم المتصفح
- إزالة دعم IE8 و IE9 و iOS 6. لا يدعم الإصدار 4 من Bootstrap إلا IE10+ و iOS 7+. إن كان موقعك يحتاج أيّا من الإصدارات غير المدعومة، سيكون عليك استخدام Bootstrap 3.
- إضافة دعم رسمي لمتصفح Android v5.0 Lollipop و إطارات العرض WebView. تظل الإصدارات السابقة من متصفح Android و WebView مدعومة، لكن دعمًا غير رسمي.
التغيرات العامة
- أصبحت Flexbox مُمكَّنة افتراضيا. يعني هذا عمومًا التحوّل من العناصر العائمة، والتوجه إلى مكوناتنا.
- استبدلنا Sass بـ Less لكتابة ملفات CSS المصدرية.
- التبديل من الوحدة
pxإلى الوحدةremكوحدة أساسية في CSS، بيد أنّ وحدات البكسل ما تزال تستخدم في استعلامات الوسائط وسلوك الشبكة لأنّ إطارات عرض الجهاز لا تتأثر بحجم النوع. - زيادة حجم الخط العام من 14 بكسل إلى 16 بكسل.
- إتاحة طبقات شبكة جديدة لإضافة خيار خامس (لمعالجة الأجهزة ذات الحجم 576 بكسل فما دونه) وإزالة
-xsمن تلك الأصناف. مثل: .col-6وcol-sm-4وcol-md-3. - تبديل خاصية القالب الاختيارية المنفصلة مكان خيارات قابلة للإعداد عبر متغيرات SCSS (على سبيل المثال:
$enable-gradients: true). - إصلاح نظام البناء لاستخدام سلسلة من برامج npm النصية بدلاً من Grunt. انظر ملف
package.jsonلمطالعة جميع البرامج النصية، أو انظر الملفreadmeلأغراض التطوير المحلي. - لم يعد الاستخدام غير المتجاوب لـ Bootstrap مدعومًا.
- إزالة أداة التخصيص عبر الإنترنت وتعويضها بتوثيق أكثر شمولًا وبناءات مخصّصة.
- إضافة العشرات من أصناف الأدوات المساعدة الجديدة لأجل أزواج قيمة خاصيات CSS الشائعة، إضافة إلى اختصارات التباعد الخاصة بالهوامش والحواشي.
نظام الشبكة
- الانتقال إلى Flexbox.
- إضافة دعم Flexbox في مخلوط الشبكة والأصناف المُعرّفة مسبقًا.
- تضمين دعم أصناف المحاذاة الرأسية والأفقية كجزء من Flexbox.
- إضافة دعم Flexbox في مخلوط الشبكة والأصناف المُعرّفة مسبقًا.
- تحديث أسماء أصناف الشبكة وطبقات شبكة جديدة.
- إضافة طبقة شبكة
smجديدة للشبكات ذات الأحجام الأقل من 768 بكسل لمزيد من التحكم. أصبحت لدينا الآن الطبقاتxsوsmوmdوlgوxl. هذا يعني أيضًا أنه تم رفع كل طبقة بمستوى واحد (لذلك فإنّ.col-md-6في الإصدار 3 أصبحت .col-lg-6في الإصدار 4). - تعديل أصناف الشبكة
xsبحيث لا تتطلب استخدام رمز الطبقة ( infix)، وذلك تبيانا لكونها تبدأ في تطبيق الأنماط ابتداء منmin-width: 0وليس عند قيمة بكسلية محددة. بدلًا من.col-xs-6، استخدم .col-6. تتطلب بالمقابل جميع طبقات الشبكة الأخرى استخدام رمز الطبقة infix (مثلsm).
- إضافة طبقة شبكة
- تحديث أحجام الشبكة والمخاليط،والمتغيرات.
- أصبح لخنادق الشبكة الآن قاموس Sass لاستخدامه لتحديد عرض الخنادق في كل نقطة حدية.
- تحديث مخاليط الشبكة لكي تستخدم المخلوط
make-col-readyوmake-colلتعيين قيمflexوmax-widthللأعمدة الفردية. - تغيير النقاط الحدية في استعلام الوسائط الخاص بنظام الشبكة وعرض الحاويات لمراعاة طبقات الشبكة الجديدة، والتأكد من أنّ الأعمدة قابلة للقسمة بالتساوي على 12 في عرضها الأقصى.
- يُتعامل الآن مع النقاط الحدية للشبكة وعرض الحاويات عبر قواميس Sass (
$grid-breakpointsو $container-max-widths) بدلاً من استخدام متغيرات منفصلة. لقد استُبدِلت المتغيرات@screen-*، وأصبح بإمكانك تخصيص طبقات الشبكة بالكامل. - تم تغيير استعلامات الوسائط كذلك. بدلاً من تكرار إعلانات استعلام الوسائط بالقيمة نفسها في كل مرة، فقد وفّرنا الآن
@include media-breakpoint-up/down/only، فبدلاً من كتابة@media (min-width: @screen-sm-min) { ... }، يمكنك كتابة@include media-breakpoint-up(sm) { ... }.
المكونات
- إزالة الألواح (panels) والصور المصغرة والجدران (wells) وتعويضها بمكون شامل جديد، وهو البطاقات.
- إزالة أيقونات الخطوط Glyphicons. إذا كنت بحاجة إلى استخدام الأيقونات، فهذه بعض الخيارات المتاحة:
- الإصدار upstream من Glyphicons
- Octicons
- Font Awesome
- راجع صفحة التوسيع للحصول على قائمة أوسع بالبدائل.
- إزالة الملحقة Affix jQuery.
- نوصي باستخدام
position: stickyبدلاً من ذلك. راجع هذه الصفحة لمزيد من التفاصيل وبعض التوصيات الخاصة بالملء. أحد الاقتراحات الممكنة هو استخدام قاعدة@supportsلتقديمها (على سبيل المثال@supports (position: sticky) { ... })) - إذا كنت تستخدم Affix لتطبيق أنماط إضافية غير موضعية، فقد لا يناسبك شيفرات عشوائية لتعويض نقص الدعم في المتصفحات. أحد الخيارات المتاحة في مثل هذه الحالات هو استخدام المكتبة ScrollPos-Styler.
- نوصي باستخدام
- إزالة مكوّن pager، إذ أنّه كان مجرد زرّ مخصّص.
- إعادة تصميم جميع المكونات تقريبًا بُغية الإكثار من استخدام محددات الأصناف غير المتداخلة بدلاً من استخدام محدّدات الأبناء المخصّصة للغاية.
حسب المكونات
تبرز هذه القائمة التغييرات الرئيسية مُرتّبة حسب المكوّنات بين الإصدارين v3.xx و v4.0.0.
Reboot
Reboot هي إضافة جديدة إلى Bootstrap 4، وهي ورقة أنماط تعتمد على Normalize وعلى أنماط إعادة التعيين الخاصة بنا. لا تستخدم المحددات التي تظهر في هذا الملف إلا العناصر — إذ لا توجد أصناف هنا. هذا يعزل أنماط إعادة التعيين عن أنماط المكونات الخاصة، وذلك في إطار التوجه نحو مقاربة وحداتية (modular). بعض أبرز عمليات إعادة الضبط المُتضمّنة فيها هي تغيير box-sizing: border-box، والانتقال من وحدات em إلى وحدات rem في العديد من العناصر، وكذلك أنماط الروابط والعديد من عمليات إعادة تعيين عناصر الاستمارة.
الكتابة
- نقل جميع أدوات
.text- إلى ملف_utilities.scss. - إزالة
.page-header، وذلك لأنّه يمكن تطبيق أنماطه عبر الأدوات المساعدة. - إزالة
.dl -orizontal. استخدم بدلا منه.rowعلى عناصر<dl>، واستخدم أصناف أعمدة الشبكة (أو المخاليط) على أبناء<dt>و<dd>. - إعادة تصميم الاقتباسات ونقل أنماطها من عنصر
<blockquote>إلى صنف واحد .blockquote. وإزالة معدّل.blockquote-reverseوتعويضه بأدوات المساعدة النصية. - يتطلب
.list-inlineالآن أن يُطبّق الصنف .list-inline-itemالجديد على عناصر القائمة الفرعية الخاصة به.
صور
- إعادة تسمية
.img-responsiveإلى.img-fluid - إعادة تسمية
.img-roundedتقريب إلى.rounded - إعادة تسمية
.img-circleإلى.rounded-circle
الجداول
- لقد أُزيلت جميع نسخ محدّدات
<تقريبًا، مما يعني أن الجداول المتداخلة سوف ترث الأنماط تلقائيًا من آبائها. يبسط هذا المحدّدات والتخصيصات تبسيطًا واضحًا. - إعادة تسمية
.table-condensedإلى.table-smلأجل حفظ الاتساق. - إضافة خيار
.table-inverseجديد. - إضافة معدِّلين لترويسات الجدول: وهما
.thead-defaultو .thead-inverse. - إعادة تسمية الأصناف السياقية لتكون لها بادئة
.table. وهكذا تحولت .activeو.successو.warningو .dangerو.infoإلى .table-activeو.table-Successو .table-warningو .table-riskو.table-info.
الاستمارات
- أعيد تعيين العنصر المنقول إلى ملف
_reboot.scss. - إعادة تسمية
.control-labelإلى.col-form-label. - إعادة تسمية
.input-lgو .input-smإلى.form-control-lgو .form-control-smعلى التوالي. - إزالة أصناف
.form-group-* بُغية التبسيط. استخدم أصناف.form-control-*بدلاً منها الآن. - إزالة
.help-blockوتعويضها بـ.form-textلأجل نصوص المساعدة الكتلية، أما فيما يخص نصوص المساعدة المضمّنة وغيرها من الخيارات المرنة، استخدم الأصناف المساعدة من قبيل.text-muted. - إزالة
.radio-inlineو .checkbox-inline. - إدماج
.checkboxو.radioفي.form-checkوكل أصناف.form-check-*. - إصلاح مشكلة الاستمارات الأفقية:
- لم تعد أصناف
.form-horizontalإجبارية. - لم تعد
.form-groupتطبق الأنماط من .rowعبر المخاليط، لذا أصبحت.rowضرورية الآن في خطاطات الشبكة الأفقية (كما في<div class="form-group row">). - إضافة الصنف
.col-form-labelإلى اللاصقات ذات الصنف.form-controlالمُوسّطة رأسيا. - إضافة صنف
.form-rowجديد لأجل خطاطات الاستمارات ذات أصناف الشبكة (عوّض.rowبـ.form-row).
- لم تعد أصناف
- إضافة دعم الاستمارات المخصصة (مربعات التأشير وأزرار الانتقاء، وقوائم الاختيار وعناصر إدخال الملفات).
- استبدال الأصناف
.has-errorو.has-warningو.has-Successبالأصناف التي لها ميزة التصديق في HTML5 عبر أصناف CSS الزائفة:invalidو:valid. - إعادة تسمية
.form-control-staticإلى .form-control-plaintext.
الأزرار
- إعادة تسمية
.btn-defaultإلى.btn-secondary. - إزالة الصنف
.btn-xsتمامًا، لأنّ.btn-smأصغر نسبيًا من الإصدار الثالث. - إزالة ميزة زر الحالة لملحقة button.js jQuery. يشمل هذا التابعين
$().button(string)و$().button('reset'). ننصح باستخدام جزء مخصّص صغير من جافا سكربت بدلاً من ذلك للحصول على تحكم أكبر.- لاحظ أنّنا احتفظنا بميزات الملحقة الأخرى (مثل مربعات التأشير وأزرار الانتقاء، وأزرار التبديل المفردة) في الإصدار 4.
- تغيير
[disabled]إلى:disabledفي الأزرار، لأنّ الإصدارات IE9 + تدعم:disabled. ما تزالfieldset[disabled]ضرورية رغم ذلك، لأنّ مجموعات الحقول المعطّلة الأصلية معطوبة في IE11.
مجموعه الأزرار
- إعادة كتابة المكون باستخدام flexbox.
- إزالة
.btn-group-justified. يمكنك أن تستخدم بدلها<div class="btn-group d-flex" role="group"></div>كغلاف حول عناصر ذات صنف .w-100. - إزالة الصنف
.btn-group-xsتماما نتيجة لإزالة.btn-xs. - إزالة التباعد الصريح بين مجموعات الأزرار في أشرطة أدوات الأزرار؛ استخدم أدوات الهامش بدلها.
- تحسين التوثيق الذي يخصّ استخدامها مع المكونات الأخرى.
القائمة المنسدلة
- تم التبديل من محددات الأب إلى الأصناف الفردية لكافة المكونات والمُعدِّلات وغيرها.
- تبسيط أنماط القوائم المنسدلة، إذ لم يعد تضاف إليها أسهم متجهة لأعلى أو أسفل.
- يمكن الآن بناء القوائم المنسدلة بواسطة
<div>أو<ul>. - إعادة تصميم أنماط القوائم المنسدلة وترميزها لتوفر دعما مبسّطا ومُضمّنا لعناصر
<a>و<button>في القوائم المنسدلة. - إعادة تسمية
.dividerإلى.dropdown-divider. - تتطلب عناصر القائمة المنسدلة الآن استخدام
.dropdown-item. - لم تعد مفاتيح تبديل القوائم المنسدلة تتطلب الاستخدام الصريح لعنصر
<span class="caret"></span>؛ إذ أنّها تُوفّر الآن تلقائيًا عبر عنصر CSS الزائف::afterفي.dropdown-toggle.
نظام الشبكة
- إضافة نقطة حديثة جديدة إلى الشبكة بحجم 576 بكسل تحت اسم
sm، ممّا يعني أن هناك الآن خمسة طبقات إجمالية (xsوsmوmdوlgوxl). - إعادة تسمية أصناف معدّلات الشبكة المتجاوبة من
.col-{breakpoint}-{modifier}-{size}إلى.{modifier}-{breakpoint}-{size}لتبسيط أصناف الشبكة. - إزالة أصناف أصناف معدلات الدفع push والسحب pull وتعويضها بأصناف الترتيب
orderالقائمة على Flexbox. على سبيل المثال، بدلًا من.col-8.push-4و. col-4.pull-8، عليك استخدام.col-8.order-2و .col-4.order-1. - إضافة أصناف flexbox مساعدة لاستخدامها في نظام الشبكة ومع المكونات.
مجموعات القوائم
- إعادة كتابة هذا المكوّن باستخدام flexbox.
- استبدال العنصر
a.list-groupبالصنف الصريح.list-group-item-actionلتنسيق الروابط وإصدارات الأزرار في عناصر مجموعة القوائم. - إضافة الصنف
.list-group-flushلاستخدامه مع البطاقات.
النوافذ الشرطية
- إعادة كتابة هذا المكون باستخدام flexbox.
- نتيجة للانتقال إلى استخدام flexbox، من المحتمل أن تنكسر محاذاة أيقونات الاستبعاد في الترويسة، لأنّنا لم نعد نستخدم العناصر العائمة. إذ أنّ المحتوى العائم يأتي أولًا، وذلك على خلاف Flexbox. لذا عليك تحديث أيقونات الاستبعاد حتى تأتي بعد عناوين النافذة الشرطية لكي تتجنّب هذا الخلل.
- إزالة الخيار
remote(الذي يمكن استخدامه لتحميل المحتويات الخارجية وإدخالها تلقائيًا في النافذة الشرطية)، كما أُزيل أيضًا الحدث المقابل لهloaded.bs.modal. نوصي أن تستخدم بدلاً منه قوالب من جانب العميل أو إطار عمل متخصّص في ربط البيانات أو استدعاء jQuery.load بنفسك.
- إعادة كتابة هذا المكوّن باستخدام flexbox.
- إزالة جميع المحدّدات
<بُغية تبسيط التنسيق عبر الأصناف غير المتداخلة. - لقد أصبحنا نستخدم أصناف منفصلة لعناصر
.navو.nav-itemو .nav-itemبدلاً من محدّدات HTML الخاصة من قبيل.nav > li > a، وهذا يجعل ترميز HTML أكثر مرونة مع تسهيل إمكانية التوسيع.
لقد أعدنا كتابة شرائط التنقل بالكامل باستخدام flexbox، مع تحسين دعم المحاذاة والتجاوب والتخصيص.
- تُطبَّق سلوكيات شرائط التنقل المتجاوبة على الصنف
.navbarعبر الصنف الإجباري .navbar-expand- {breakpoint}حيث تريد أن يُطوى شريط التنقل. في السابق كان هذا ممكنا عبر تعديل أحد متغيرات Less، لذا كان يتطلب إعادة التصريف. - أصبحت
.navbar-defaultحاليا .navbar-light، إلا أنّ.navbar-darkما تزال كما هي. لا بد من إضافة أحدهما إلى شريط التنقل. لكن اعلم أنّ هذه الأصناف لم تعد تعيّن ألوان الخلفية؛ وإنّما تؤثّر على اللون فقط. - تتطلب شرائط التنقل الآن إضافة الخلفية. اختر ما تشاء من ألوان الخلفية عبر أدوات الخلفية (
.bg-*)، أو اختر واحدًا مخصّصا عبر أصناف light/inverse. - نتيجة استخدام Flexbox، يمكن لشرائط التنقل الآن استخدام أدوات Flexbox لتسهيل خيارات المحاذاة.
- لقد غيرنا
.navbar-toggleإلى.navbar-toggler،وأصبح لها أنماط تنسيق ووسوم مختلفة (لم تعد هناك 3 عناصر من<span>). - إزالة الصنف
.navbar-formبالكامل. إذ لم يعد ضروريًا. بدلاً من ذلك، ما عليك سوى استخدام.form-inlineوتطبيق أدوات الهامش عند الضرورة. - لم تعد شرائط التنقل تتضمن
margin-bottomأوborder-radiusابتدائيًا. استخدم الأدوات المساعدة وفق ما تمليه الضرورة. - تمّ تحديث جميع الأمثلة التي تتضمن أشرطة التنقل لتضمين الترميز جديد.
ترقيم الصفحات
- إعادة كتابة هذا المكوّن باستخدام flexbox.
- لقد أصبحت الأصناف الصريحة (
.page-itemو.page-link) ضرورية الآن في العناصر الموجود داخل.pagination - إزالة المكوّن
.pagerإزالة كاملة، إذ لم تكن إلا أزرارًا بدون خلفية مخصصة.
عناصر التنقل Breadcrumb
- لقد أصبح من الضروري استخدام الصنف
.breadcrumb-itemصراحة في كل العناصر المُحتواة في.breadcrumbs
اللاصقات والشارات
- تجميع
.labelو.badgeلتمييزها عن عناصر<label>وتبسيط المكونات ذات الصلة. - إضافة
.badge-pillكمُعدِّل لمظهر الأقراص المستديرة. - لم تعد الشارات عائمة تلقائيًا في مجموعات القوائم والمكونات الأخرى. إن أردت ذلك عليك استخدام الأصناف المساعدة.
- إزالة
.badge-defaultوإضافة.badge-secondaryلمطابقة أصناف التعديل الخاصة بالمكونات المستخدمة في المواضع الأخرى.
اللوحات والصور المصغرة والجدران
تم إزالتها بالكامل وتعويضها بمكون البطاقة الجديد.
اللوحات
- أعدنا بناء العناصر من
.panelإلى.cardباستخدام flexbox. - أزلنا
.panel-defaultالافتراضي ولم نعوضه. - أزلنا كذلك الصنف
.panel-groupولم نعوضه. أما الصنف.car-groupفليس بديلاً لها، فهو مختلف. - تغيير
.panel-headingإلى .card-header - تغيير
.panel-titleإلى .card-title. بناءً على المظهر الذي تريد تصميمه، قد ترغب أيضًا في استخدام عناصر أو أصناف العناوين (على سبيل المثال،<h3>، .h3) أو العناصر أو الأصناف الغليظة (مثل<strong>، <b>أو.font-weight-bold). لاحظ أن .card-titleتنتج مظهرًا مختلفًا عن.panel-titleرغم تماثل الأسماء - تغيير
.panel-bodyإلى.card-body - تغيير
.panel-footerإلى.card-footer - إزالة
.panel-basicو.panel-Successو.panel-infoو.panel-warningو.panel-riskوتعويضها بالأصناف.bg-و. text-و.borderالمُنشأة من قاموس Sass المُسمّى$theme-colors.
شريط التقدم
- تعويض الأصناف السياقية
.progress-bar-*بالأصناف.bg-*.استخدم مثلًاclass="progress-bar bg-danger"بدلًا منclass="progress-bar progress-bar-danger" - تبديل
.activeفي شرائط التقدم المتحركة بالصنف .progress-bar-animated.
الدوار Carousel
- مراجعة المكوّن بالكامل لتبسيط التصميم والتنسيق. أصبح عدد الأنماط التي يمكنك إعادة كتابتها أقل، علاوة على إضافة مؤشرات وأيقونات جديدة.
- ألغينا التداخل في جميع أنماط CSS وأعدنا تسميتها، وقد أصبحت كل الأصناف مسبوقة بـ.
carousel-.- بالنسبة لعناصر الدوار
.nextوprev.و.leftو. rightأصبحت الآن. carousel-item-nextو.carousel-item-prevو.carousel-item-leftو.carousel-item-right. - كما أصبحت
.itemالآن.carousel-item. - بالنسبة لعناصر التحكم prev/next ، أصبحت
.carcarel-control.rightو.carousel-control.leftالآن.carousel-control-nextو.carousel-control-prev، مما يعني أنها لم تعد تتطلب صنفا أبًا معيّنا.
- بالنسبة لعناصر الدوار
- إزالة جميع الأنماط المتجاوبة، والإحالة إلى الأدوات المساعدة (على سبيل المثال، عرض اللاصقات التوضيحية في إطارات عرض معينة) والأنماط المخصصة حسب الحاجة.
- إزالة تجاوز (overrides) الصور في عناصر الدوار، عليك أن تستخدم بدلها الأدوات المساعدة.
- تعديل مثاال الدوار ليتضمّن الترميز والأنماط الجديدة.
الجداول
- إزالة دعم الجداول المتداخلة المُنسّقة. أصبحت جميع أنماط الجدول موروثة الآن في الإصدار 4 لتسهيل كتابة المحددات.
- إضافة الجداول المعكوسة.
الأدوات المساعدة
- Display و hidden وغيرها:
- جعل أدوات العرض متجاوبة (مثل
d-noneوd-{sm,md,lg,xl}-none). - إزالة الأصناف
.hidden-* من الأدوات المساعدة وتعويضها بأدوات عرض جديدة. على سبيل المثال، بدلًا من.hidden-sm-up، استخدم.d-sm-none. أعيدت تسمية أدوات.hidden-printلاستخدام نظام التسمية المُتّبع في أدوات العرض. يمكنك الاطلاع على مزيد من المعلومات ضمن قسم الأدوات المساعدة المتجاوبة أدناه. - إضافة الأصناف
.float-{sm,md,lg,xl}-{left,right,none}لاستخدامها مع العناصر العائمة المتجاوبة، كما أزيلت.pull-leftو .pull-rightلأنها مكررة وتشبه.float-leftو.float-right.
- جعل أدوات العرض متجاوبة (مثل
- النوع:
- إضافة تنوعات متجاوبة إلى أصناف محاذاة النص
.text-{sm,md,lg,xl}-{left,center,right}
- إضافة تنوعات متجاوبة إلى أصناف محاذاة النص
- المحاذاة والتباعد:
- إضافة أدوات متجاوبة جديدة للهوامش والحواشي لجميع الجوانب، بالإضافة إلى بعض الاختصارات الرأسية والأفقية.
- إضافة العديد من أدوات flexbox .
- إزالة
.center-blockوتعويضها بالصنف لجديد.mx-auto
- تحديث Clearfix لإزالة دعم الإصدارات الأقدم من المتصفحات.
مخاليط سوابق المتصفحات
أزيلت مخاليط بادئات المتصفحات الخاصة بالإصدار 3 من Bootstrap، إذ أصبحت مُتجاوزة ابتداء من الإصدار 3.2.0، وأزيلت في الإصدار 4. ونظرًا لأننا نستخدم Autoprefixer، فلم تعد ضرورية.
لقد أزلنا المخاليط التالية:
animationanimation-delayanimation-directionanimation-durationanimation-fill-modeanimation-iteration-countanimation-nameanimation-timing-functionbackface-visibilitybox-sizingcontent-columnshyphensopacityperspectiveperspective-originrotaterotateXrotateYscalescaleXscaleYskewtransform-origintransition-delaytransition-durationtransition-propertytransition-timing-functiontransition-transformtranslatetranslate3duser-select
التوثيق
شهد التوثيق تحديثا كذلك. وهذه أهم الترقيات:
- ما زلنا نستخدم Jekyll، ولكن أصبحنا نستخدم ملحقات أخرى علاوة عليها:
- يُستخدم
bugify.rbلسرد الإدخالات بكفاءة في صفحة أخطاء المتصفح. example.rbهو فرع مُخصّص من الملحقةhighlight.rbالافتراضية، إذ يسهل معالجة شفرات الأمثلة.callout.rbهو فرع مخصص مماثل، ولكنّه مصمّم ليناسب التوثيق خاصتنا.- يستخدم jekyll-toc لإنشاء جداول المحتويات.
- يُستخدم
- أعيد كتابة كل محتوى التوثيق بترميز Markdown (بدلاً من HTML) لتسهيل تحريره وتعديله.
- أعيد تنظيم الصفحات لتبسيط المحتوى، وتحسين تنظيم التوثيق.
- انتقلنا من CSS العادي إلى SCSS للاستفادة من المتغيرات والمخاليط وغيرهما من الميزات.
الأدوات المساعدة المتجاوبة
إزالة جميع المتغيرات @screen- من الإصدار 4.0.0. استخدم بدلها media-breakpoint-up() أو media-breakpoint-down() أو المخاليط media-breakpoint-only() أو القاموس $grid-breakpoints.
لقد أزلنا أصناف الأدوات المساعدة المتجاوبة وعوضناها بأدوات عرض صريحة.
- إزالة الصنفين
.hiddenو .showبسبب تعارضهما مع التابعين$(...).hide()و $(...).show() في jQuery. بدل استخدامها، حاول تبديل الخاصية[hidden]أو استخدم الأنماط المضمنة مثل"style = "display: none;وstyle="display: block;" - إزالة جميع أصناف
.hidden- باستثناء أدوات الطباعة المساعدة، والتي أعيد تسميتها.- أزيلت هذه الأصناف من الإصدار 3:
.hidden-xs .hidden-sm .hidden-md .hidden-lg .visible-xs-block .visible-xs-inline .visible-xs-inline-block .visible-sm-block .visible-sm-inline .visible-sm-inline-block .visible-md-block .visible-md-inline .visible-md-inline-block .visible-lg-block .visible-lg-inline .visible-lg-inline-block
- أزيلت هذه الأصناف من الإصدار 4:
hidden-xs-up .hidden-xs-down .hidden-sm-up .hidden-sm-down .hidden-md-up .hidden-md-down .hidden-lg-up .hidden-lg-down
- أزيلت هذه الأصناف من الإصدار 3:
- لم تعد أدوات الطباعة تبدأ بـ
.hidden- أو.visible-ولكن بـ.d-print-.- الأسماء القديمة:
.visible-print-blockو.visible-print-inlineو.visible-print-inline-blockو .hidden-print - أصناف جديدة:
.d-print-blockو.d-print-inlineو.d-print-inline-blockو.d-print-none
- الأسماء القديمة:
بدلاً من استخدام الأصناف.visible-* صراحة، يمكنك جعل عنصر ما مرئيًا بعدم إخفائه عند حجم معيّن من الشاشة. يمكنك الجمع بين أصناف .d-*-none وأحد أصناف .d-*-block لتضمن ألا يظهر العنصر إلا في مجال معيّن من أحجام الشاشة (على سبيل المثال، إن استخدمت الصنف .d-none.d-md-block.d-xl-none، فلن يظهر العنصر إلا في الأجهزة المتوسطة والكبيرة).
لاحظ أنّ التغييرات على نقاط الشبكة الحدية في الإصدار 4 تستوجب زيادة مستوى الطبقة في النقاط الحدية لتحقيق النتائج نفسها. لا تحاول أصناف الأدوات المساعدة المتجاوبة الجديدة استيعاب الحالات غير الشائعة التي يتعذّر فيها التعبير عن منظورية (visibility) العنصر كمجال واحد متجاور من أحجام إطارات العرض؛ إن أردت تحقيق ذلك عليك استخدام أنماط CSS مخصصة.