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

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق
 
سطر 3: سطر 3:


== التغييرات المستقرة ==
== التغييرات المستقرة ==
بالنسبة لمن يريد الانتقال من الإصدار بيتا 3 إلى أيّ من إصدارات  ‎4.x‎ المستقرة، فلا توجد تغييرات كاسرة للتوافق، بيد أنّ هناك بعض التغييرات التي يجدر الانتباه إليها.
بالنسبة لمن يريد الانتقال من الإصدار بيتا 3 إلى أيّ من إصدارات  ‎4.x‎ المستقرة، فلا توجد تغييرات جذرية (breaking changes) للتوافق، بيد أنّ هناك بعض التغييرات التي يجدر الانتباه إليها.


=== الطباعة ===
=== الطباعة ===
سطر 11: سطر 11:


== تغييرات بيتا 3 ==
== تغييرات بيتا 3 ==
شهد الإصدار بيتا 2 الجزء الأكبر من التغييرات الكاسرة للتوافق خلال مرحلة التطوير بيتا، إلا أنه لا تزال هناك بعض التغييرات التي يجب معالجتها في الإصدار بيتا 3. يجدر أخذ هذه التغييرات بالحسبان إن كنت تريد التحديث إلى الإصدار بيتا 3 من الإصدار بيتا 2 أو أيّ إصدار أقدم.
شهد الإصدار بيتا 2 الجزء الأكبر من التغييرات الجذرية للتوافق خلال مرحلة التطوير بيتا، إلا أنه لا تزال هناك بعض التغييرات التي يجب معالجتها في الإصدار بيتا 3. يجدر أخذ هذه التغييرات بالحسبان إن كنت تريد التحديث إلى الإصدار بيتا 3 من الإصدار بيتا 2 أو أيّ إصدار أقدم.


=== معلومات متنوعة ===
=== معلومات متنوعة ===
سطر 18: سطر 18:


=== الاستمارات ===
=== الاستمارات ===
* أعدنا كتابة مربعات التأخير وأزرار الانتقاء المخصصة والابتدائية. أصبح لكليهما الآن بنية HTML متطابقة (وسوم خارجية <code><nowiki><div></nowiki></code> مع إخوة <code><input></code> و <code><label></code>) ونفس أنماط التخطيط (مكدّسة ابتداء، ومضمّنة مع صنف مُعدِّل modifier class). يتيح لنا هذا تصميم اللاصقات بناءً على حالة الإدخال، وكذلك تبسيط دعم الخاصية <code>disabled</code> (التي كانت تتطلب في السابق صنفا أبويا) ودعم تصديق الاستمارات. رافق هذا تغيير أنماط CSS لإدارة صور الخلفية المتعددة على مربعات التأشير والانتقاء المخصصة. كان لعنصر <code>‎.custom-control-indicator</code>- المحذوف حاليا - لون خلفية متدرج وأيقونة SVG. تخصيص تدرج الخلفية يعني ضرورة استبدال كل تلك العناصر في كل مرة تحتاج فيها إلى تغيير أحدها. أما الآن فأصبحنا نستخدم ‎<code>.custom-control-label::before</code> لأجل التعبئة والتلوين المتدرج، فيما يتكفل <code>‎.custom-control-label::after</code> بالأيقونة. إن أردت جعل مربع التأشير ضمنيا، فأضف الصنف ‎<code>.custom-control-inline</code>.
* أعدنا كتابة مربعات التأشير وأزرار الانتقاء المخصصة والابتدائية. أصبح لكليهما الآن بنية HTML متطابقة (وسوم خارجية <code><nowiki><div></nowiki></code> مع إخوة <code><input></code> و <code><label></code>) ونفس أنماط التخطيط (مكدّسة ابتداء، ومضمّنة مع صنف مُعدِّل modifier class). يتيح لنا هذا تصميم اللاصقات بناءً على حالة الإدخال، وكذلك تبسيط دعم الخاصية <code>disabled</code> (التي كانت تتطلب في السابق صنفا أبويا) ودعم تصديق الاستمارات. رافق هذا تغيير أنماط CSS لإدارة صور الخلفية المتعددة على مربعات التأشير والانتقاء المخصصة. كان لعنصر <code>‎.custom-control-indicator</code>- المحذوف حاليا - لون خلفية متدرج وأيقونة SVG. تخصيص تدرج الخلفية يعني ضرورة استبدال كل تلك العناصر في كل مرة تحتاج فيها إلى تغيير أحدها. أما الآن فأصبحنا نستخدم ‎<code>.custom-control-label::before</code> لأجل التعبئة والتلوين المتدرج، فيما يتكفل <code>‎.custom-control-label::after</code> بالأيقونة. إن أردت جعل مربع التأشير ضمنيا، فأضف الصنف ‎<code>.custom-control-inline</code>.
* تحديث محدّدات [[Bootstrap/button group|مجموعات الأزرار]] الخاصة بالمدخلات. بدلاً من استخدام <code>‎[data-toggle = "button"] {}</code>‎ للتحكم في التنسيق والسلوك، أصبحنا نستخدم خاصية البيانات  <code>data</code> حصرا لأجل التحكم في سلوكات جافا سكربت، فيما نعتمد على الصنف الجديد <code>‎.btn-group-togg</code> لأجل التنسيق.
* تحديث محدّدات [[Bootstrap/button group|مجموعات الأزرار]] الخاصة بالمدخلات. فبدلًا من استخدام <code>‎[data-toggle = "button"] {}</code>‎ للتحكم في التنسيق والسلوك، أصبحنا نستخدم خاصية البيانات  <code>data</code> حصرًا لأجل التحكم في سلوكات [[JavaScript|جافاسكربت]]، فيما نعتمد على الصنف الجديد <code>‎.btn-group-togg</code> لأجل التنسيق.
* إزالة <code>‎.col-form-legend</code> وتعويضه بصنف مُحسّن <code>‎.col-form-label</code>، بهذه الطريقة يمكن استخدام <code>‎.col-form-label-sm</code> و  <code>‎.col-form-label-lg</code> على عناصر  <code><legend></code> بكل سهولة.
* إزالة <code>‎.col-form-legend</code> وتعويضه بصنف مُحسّن <code>‎.col-form-label</code>، بهذه الطريقة يمكن استخدام <code>‎.col-form-label-sm</code> و  <code>‎.col-form-label-lg</code> على عناصر  <code><legend></code> بكل سهولة.


* تغيير متغير عناصر إدخال الملفات المخصصة <code>‎$custom-file-text</code>. فلم يعد قاموسا متشعبا في Sass، وهو الآن يعمل حصرا على سلسلة نصية واحدة فقط — زر التصفح <code>Browse</code> الذي أصبح الآن العنصر الزائف الوحيد الذي يُنشأ عبر Sass. يأتي نص اختيار الملف <code>Choose file</code> من اللاصقة <code>‎.custom-file-label</code>.
* تغيير متغير عناصر إدخال الملفات المخصصة <code>‎$custom-file-text</code>. فلم يعد قاموسا متشعبا في [[Sass]]، وهو الآن يعمل حصرا على سلسلة نصية واحدة فقط — زر التصفح <code>Browse</code> الذي أصبح الآن العنصر الزائف الوحيد الذي يُنشأ عبر [[Sass]]. يأتي نص اختيار الملف <code>Choose file</code> من اللاصقة <code>‎.custom-file-label</code>.


=== مجموعات الإدخال ===
=== مجموعات الإدخال ===
سطر 30: سطر 30:


== تغييرات الإصدار بيتا 2 ==
== تغييرات الإصدار بيتا 2 ==
نحاول قدر الإمكان تجنب إجراء أيّ تغييرا كاسرة للتوافق في الإصدار التجريبي بيتا. ولكن ليس كل ما يُبتغى يُنال. فيما يلي بعض التغييرات الكاسرة التي يجب أخذها بالحسبان عند الانتقال من الإصدار بيتا 1 إلى بيتا 2.
نحاول قدر الإمكان تجنب إجراء أيّ تغيير جذري للتوافق في الإصدار التجريبي بيتا. ولكن ليس كل ما يُبتغى يُنال. فيما يلي بعض التغييرات الجذرية التي يجب أخذها بالحسبان عند الانتقال من الإصدار بيتا 1 إلى بيتا 2.
* إزالة المتغير ‎<code>$badge-color</code> واستخدامه على عناصر ‎<code>.badge</code>. أصبحنا نستخدم دالة تباين الألوان لاختيار اللون بناءً على لون الخلفية، لذا لم يعد هذا المتغير ضروريا.
* إزالة المتغير ‎<code>$badge-color</code> واستخدامه على عناصر ‎<code>.badge</code>. أصبحنا نستخدم دالة تباين الألوان لاختيار اللون بناءً على لون الخلفية، لذا لم يعد هذا المتغير ضروريا.
* إعادة تسمية الدالة <code>grayscale()</code>‎ إلى <code>gray()‎</code> لتجنب التعارض مع مرشحات التدرج الرمادي الأصلية في CSS.
* إعادة تسمية الدالة <code>grayscale()</code>‎ إلى <code>gray()‎</code> لتجنب التعارض مع مرشحات التدرج الرمادي الأصلية في CSS.
* إعادة تسمية <code>‎.table-inverse</code> و ‎<code>.thead-inverse</code> و <code>‎.thead-default</code> إلى <code>‎ .*-dark</code> و <code>‎.*-light</code>، وذلك لمطابق مخططات الألوان المستخدمة في المواضع الأخرى.
* إعادة تسمية <code>‎.table-inverse</code> و ‎<code>.thead-inverse</code> و <code>‎.thead-default</code> إلى <code>‎ .*-dark</code> و <code>‎.*-light</code>، وذلك لمطابق مخططات الألوان المستخدمة في المواضع الأخرى.
* تنشئ الجداول المتجاوبة الآن أصنافًا لكل نقطة حدية للشبكة. هذا يكسر التوافق مع الإصدار بيتا 1 من حيث أنّ <code>‎.table-responseive</code> المُستخدم سابقا شبيه  بالصنف <code>‎.table-responseive-md</code>. يمكنك الآن استخدام <code>‎.table-responseive</code> أو <code>‎.table-responseive- {sm، md، lg، xl}‎</code>.
* تنشئ الجداول المتجاوبة الآن أصنافًا لكل نقطة حدية للشبكة. هذا يكسر التوافق مع الإصدار بيتا 1 من حيث أنّ <code>‎.table-responseive</code> المُستخدم سابقا شبيه  بالصنف <code>‎.table-responseive-md</code>. يمكنك الآن استخدام <code>‎.table-responseive</code> أو <code>‎.table-responseive- {sm، md، lg، xl}‎</code>.
* التوقف عن دعم Bower، ذلك أنّ مدير الحزم هذا أصبح مُتجاوزًا موازنة بالبدائل المتاحة (مثل Yarn أو npm). انظر [https://github.com/bower/bower/issues/2298 bower/bower#2298] لمزيد من التفاصيل.
* التوقف عن دعم Bower، ذلك أنّ مدير الحزم هذا أصبح مُتجاوزًا موازنة بالبدائل المتاحة (مثل Yarn أو npm). انظر [https://github.com/bower/bower/issues/2298 bower/bower#2298] لمزيد من التفاصيل.
سطر 52: سطر 52:
=== التغيرات العامة ===
=== التغيرات العامة ===
* أصبحت [[Bootstrap/flex|Flexbox]] مُمكَّنة افتراضيا. يعني هذا عمومًا التحوّل من [[Bootstrap/float|العناصر العائمة]]، والتوجه إلى مكوناتنا.
* أصبحت [[Bootstrap/flex|Flexbox]] مُمكَّنة افتراضيا. يعني هذا عمومًا التحوّل من [[Bootstrap/float|العناصر العائمة]]، والتوجه إلى مكوناتنا.
* استبدلنا Sass بـ Less لكتابة ملفات CSS المصدرية.
* استبدلنا [[Sass]] بـ Less لكتابة ملفات [[CSS]] المصدرية.
* التبديل من الوحدة <code>px</code> إلى الوحدة <code>rem</code> كوحدة أساسية في CSS، بيد أنّ وحدات البكسل ما تزال تستخدم في استعلامات الوسائط وسلوك الشبكة لأنّ إطارات عرض الجهاز لا تتأثر بحجم النوع.
* التبديل من الوحدة <code>px</code> إلى الوحدة <code>rem</code> كوحدة أساسية في CSS، بيد أنّ وحدات البكسل ما تزال تستخدم في استعلامات الوسائط وسلوك الشبكة لأنّ إطارات عرض الجهاز لا تتأثر بحجم النوع.
* زيادة حجم الخط العام من 14 بكسل إلى 16 بكسل.
* زيادة حجم الخط العام من 14 بكسل إلى 16 بكسل.
* إتاحة طبقات شبكة جديدة لإضافة خيار خامس (لمعالجة الأجهزة ذات الحجم 576 بكسل فما دونه) وإزالة <code>‎-xs</code> من تلك الأصناف. مثل: ‎<code>.col-6</code>و <code>col-sm-4</code> و <code>col-md-3</code>.
* إتاحة طبقات شبكة جديدة لإضافة خيار خامس (لمعالجة الأجهزة ذات الحجم 576 بكسل فما دونه) وإزالة <code>‎-xs</code> من تلك الأصناف. مثل: ‎<code>.col-6</code>و <code>col-sm-4</code> و <code>col-md-3</code>.
* استبدال خاصية القالب الاختيارية المنفصلة بخيارات قابلة للإعداد عبر متغيرات SCSS (على سبيل المثال: <code>‎$enable-gradients: true</code>).
* تبديل خاصية القالب الاختيارية المنفصلة مكان خيارات قابلة للإعداد عبر متغيرات SCSS (على سبيل المثال: <code>‎$enable-gradients: true</code>).
* إصلاح نظام البناء لاستخدام سلسلة من برامج npm النصية بدلاً من Grunt. انظر ملف <code>package.json</code> لمطالعة جميع البرامج النصية، أو انظر الملف <code>readme</code> لأغراض التطوير المحلي.
* إصلاح نظام البناء لاستخدام سلسلة من برامج npm النصية بدلاً من Grunt. انظر ملف <code>package.json</code> لمطالعة جميع البرامج النصية، أو انظر الملف <code>readme</code> لأغراض التطوير المحلي.
* لم يعد الاستخدام غير المتجاوب لـ Bootstrap مدعومًا.
* لم يعد الاستخدام غير المتجاوب لـ Bootstrap مدعومًا.
سطر 63: سطر 63:


=== نظام الشبكة ===
=== نظام الشبكة ===
* الانتقال إلى flexbox.
* الانتقال إلى Flexbox.
** إضافة دعم Flexbox في مخلوط الشبكة والأصناف المُعرّفة مسبقًا.
** إضافة دعم Flexbox في مخلوط الشبكة والأصناف المُعرّفة مسبقًا.
*** تضمين دعم أصناف المحاذاة الرأسية والأفقية كجزء من flexbox.
*** تضمين دعم أصناف المحاذاة الرأسية والأفقية كجزء من Flexbox.
* تحديث أسماء أصناف الشبكة وطبقات شبكة جديدة.
* تحديث أسماء أصناف الشبكة وطبقات شبكة جديدة.
** إضافة طبقة شبكة <code>sm</code> جديدة للشبكات ذات الأحجام الأقل من 768 بكسل لمزيد من التحكم. أصبحت لدينا الآن الطبقات <code>xs</code> و <code>sm</code> و <code>md</code> و <code>lg</code> و <code>xl</code>. هذا يعني أيضًا أنه تم رفع كل طبقة بمستوى واحد (لذلك فإنّ <code>‎.col-md-6</code> في الإصدار 3 أصبحت ‎<code>.col-lg-6</code> في الإصدار 4).
** إضافة طبقة شبكة <code>sm</code> جديدة للشبكات ذات الأحجام الأقل من 768 بكسل لمزيد من التحكم. أصبحت لدينا الآن الطبقات <code>xs</code> و <code>sm</code> و <code>md</code> و <code>lg</code> و <code>xl</code>. هذا يعني أيضًا أنه تم رفع كل طبقة بمستوى واحد (لذلك فإنّ <code>‎.col-md-6</code> في الإصدار 3 أصبحت ‎<code>.col-lg-6</code> في الإصدار 4).
** تعديل أصناف الشبكة <code>xs</code> بحيث لا تتطلب استخدام رمز الطبقة ( infix)، وذلك تبيانا لكونها تبدأ في تطبيق الأنماط ابتداء من <code>min-width: 0</code> وليس عند قيمة بكسلية محددة. بدلاً من <code>‎.col-xs-6</code>، استخدم ‎<code>.col-6</code>. تتطلب بالمقابل جميع طبقات الشبكة الأخرى استخدام رمز الطبقة infix (مثل<code>sm</code>).
** تعديل أصناف الشبكة <code>xs</code> بحيث لا تتطلب استخدام رمز الطبقة ( infix)، وذلك تبيانا لكونها تبدأ في تطبيق الأنماط ابتداء من <code>min-width: 0</code> وليس عند قيمة بكسلية محددة. بدلًا من <code>‎.col-xs-6</code>، استخدم ‎<code>.col-6</code>. تتطلب بالمقابل جميع طبقات الشبكة الأخرى استخدام رمز الطبقة infix (مثل<code>sm</code>).
* تحديث أحجام الشبكة والمخاليط،والمتغيرات.
* تحديث أحجام الشبكة والمخاليط،والمتغيرات.
** أصبح لخنادق الشبكة الآن قاموس Sass لاستخدامه لتحديد عرض الخنادق في كل نقطة حدية.
** أصبح لخنادق الشبكة الآن قاموس [[Sass]] لاستخدامه لتحديد عرض الخنادق في كل نقطة حدية.
** تحديث مخاليط الشبكة لكي تستخدم المخلوط <code>make-col-ready</code> و <code>make-col</code> لتعيين قيم <code>flex</code> و <code>max-width</code> للأعمدة الفردية.
** تحديث مخاليط الشبكة لكي تستخدم المخلوط <code>make-col-ready</code> و <code>make-col</code> لتعيين قيم <code>flex</code> و <code>max-width</code> للأعمدة الفردية.
** تغيير النقاط الحدية في استعلام الوسائط الخاص بنظام الشبكة وعرض الحاويات لمراعاة طبقات الشبكة الجديدة، والتأكد من أنّ الأعمدة قابلة للقسمة بالتساوي على 12 في عرضها الأقصى.
** تغيير النقاط الحدية في استعلام الوسائط الخاص بنظام الشبكة وعرض الحاويات لمراعاة طبقات الشبكة الجديدة، والتأكد من أنّ الأعمدة قابلة للقسمة بالتساوي على 12 في عرضها الأقصى.
** يُتعامل الآن مع النقاط الحدية للشبكة وعرض الحاويات عبر قواميس Sass‎‎‎‏ (<code>‎$grid-breakpoints</code> و ‎<code>$container-max-widths</code>‎) بدلاً من استخدام متغيرات منفصلة. لقد استُبدِلت المتغيرات <code>‎@screen-*</code>‎، وأصبح بإمكانك تخصيص طبقات الشبكة بالكامل.
** يُتعامل الآن مع النقاط الحدية للشبكة وعرض الحاويات عبر قواميس Sass‎‎‎‏ (<code>‎$grid-breakpoints</code> و ‎<code>$container-max-widths</code>‎) بدلاً من استخدام متغيرات منفصلة. لقد استُبدِلت المتغيرات <code>‎@screen-*</code>‎، وأصبح بإمكانك تخصيص طبقات الشبكة بالكامل.
** تم تغيير استعلامات الوسائط كذلك. بدلاً من تكرار إعلانات استعلام الوسائط بالقيمة نفسها في كل مرة، فقد وفّرنا الآن <code>‎@include media-breakpoint-up/down/only</code> ، فبدلاً من كتابة <code>‎@media (min-width: @screen-sm-min) { ... }‎</code>، يمكنك كتابة <code>‎@include media-breakpoint-up(sm) { ... }‎</code>.
** تم تغيير استعلامات الوسائط كذلك. بدلاً من تكرار إعلانات استعلام الوسائط بالقيمة نفسها في كل مرة، فقد وفّرنا الآن <code>‎@include media-breakpoint-up/down/only</code>، فبدلاً من كتابة <code>‎@media (min-width: @screen-sm-min) { ... }‎</code>، يمكنك كتابة <code>‎@include media-breakpoint-up(sm) { ... }‎</code>.


=== المكونات ===
=== المكونات ===
سطر 85: سطر 85:
* '''إزالة الملحقة Affix jQuery.'''
* '''إزالة الملحقة Affix jQuery.'''
** نوصي باستخدام <code>position: sticky</code> بدلاً من ذلك. راجع [https://html5please.com/#sticky هذه الصفحة] لمزيد من التفاصيل وبعض التوصيات الخاصة بالملء. أحد الاقتراحات الممكنة هو استخدام قاعدة <code>‎@supports</code> لتقديمها (على سبيل المثال <code>‎@supports (position: sticky) { ... }‎)</code>)
** نوصي باستخدام <code>position: sticky</code> بدلاً من ذلك. راجع [https://html5please.com/#sticky هذه الصفحة] لمزيد من التفاصيل وبعض التوصيات الخاصة بالملء. أحد الاقتراحات الممكنة هو استخدام قاعدة <code>‎@supports</code> لتقديمها (على سبيل المثال <code>‎@supports (position: sticky) { ... }‎)</code>)
** إذا كنت تستخدم Affix لتطبيق أنماط إضافية غير موضعية، فقد لا يناسبك الملء المتعدد polyfill. أحد الخيارات المتاحة في مثل هذه الحالات هو استخدام المكتبة [https://github.com/acch/scrollpos-styler ScrollPos-Styler].
** إذا كنت تستخدم Affix لتطبيق أنماط إضافية غير موضعية، فقد لا يناسبك شيفرات عشوائية لتعويض نقص الدعم في المتصفحات. أحد الخيارات المتاحة في مثل هذه الحالات هو استخدام المكتبة [https://github.com/acch/scrollpos-styler ScrollPos-Styler].
* '''إزالة مكوّن pager'''، إذ أنّه كان مجرد زرّ مخصّص.
* '''إزالة مكوّن pager'''، إذ أنّه كان مجرد زرّ مخصّص.
* '''إعادة تصميم جميع المكونات''' تقريبًا بُغية الإكثار من استخدام محددات الأصناف غير المتداخلة بدلاً من استخدام محدّدات الأبناء المخصّصة للغاية.
* '''إعادة تصميم جميع المكونات''' تقريبًا بُغية الإكثار من استخدام محددات الأصناف غير المتداخلة بدلاً من استخدام محدّدات الأبناء المخصّصة للغاية.
سطر 96: سطر 96:


=== الكتابة ===
=== الكتابة ===
* نقل جميع أدوات <code>‎.text-</code> ‎إلى ملف <code>‎_utilities.scss</code>.
* نقل جميع أدوات <code>‎.text-</code> ‎ إلى ملف <code>‎_utilities.scss</code>.
* إزالة <code>‎.page-header</code>، وذلك لأنّه يمكن تطبيق أنماطه عبر الأدوات المساعدة.
* إزالة <code>‎.page-header</code>، وذلك لأنّه يمكن تطبيق أنماطه عبر الأدوات المساعدة.
* إزالة <code>‎.dl -orizontal</code>. استخدم بدلا منه <code>‎.row</code> على عناصر <code><nowiki><dl></nowiki></code>، واستخدم أصناف أعمدة الشبكة (أو المخاليط) على أبناء <code><nowiki><dt></nowiki></code> و <code><nowiki><dd></nowiki></code>.
* إزالة <code>‎.dl -orizontal</code>. استخدم بدلا منه <code>‎.row</code> على عناصر <code><nowiki><dl></nowiki></code>، واستخدم أصناف أعمدة الشبكة (أو المخاليط) على أبناء <code><nowiki><dt></nowiki></code> و <code><nowiki><dd></nowiki></code>.
سطر 103: سطر 103:


=== صور ===
=== صور ===
* إعادة تسمية <code>‎.img-responsive</code> إلى <code>‎.img-fluid</code>.
* إعادة تسمية <code>‎.img-responsive</code> إلى <code>‎.img-fluid</code>
* إعادة تسمية <code>‎.img-rounded</code> تقريب إلى <code>‎.rounded</code>
* إعادة تسمية <code>‎.img-rounded</code> تقريب إلى <code>‎.rounded</code>
* إعادة تسمية <code>‎.img-circle</code> إلى <code>‎.rounded-circle</code>
* إعادة تسمية <code>‎.img-circle</code> إلى <code>‎.rounded-circle</code>


=== الجداول ===
=== الجداول ===
* لقد أُزيلت جميع نسخ محدّدات <code><</code> تقريبًا، مما يعني أن الجداول المتداخلة سوف ترث الأنماط تلقائيًا من آبائها. يبسط هذا المحدّدات والتخصيصات تبسيطا واضحا.
* لقد أُزيلت جميع نسخ محدّدات <code><</code> تقريبًا، مما يعني أن الجداول المتداخلة سوف ترث الأنماط تلقائيًا من آبائها. يبسط هذا المحدّدات والتخصيصات تبسيطًا واضحًا.
* إعادة تسمية <code>‎.table-condensed</code> إلى <code>‎.table-sm</code> لأجل حفظ الاتساق.
* إعادة تسمية <code>‎.table-condensed</code> إلى <code>‎.table-sm</code> لأجل حفظ الاتساق.
* إضافة خيار <code>‎.table-inverse</code> جديد.
* إضافة خيار <code>‎.table-inverse</code> جديد.
* إضافة معدِّلين لترويسات الجدول: وهما <code>‎.thead-default</code> و  ‎<code>.thead-inverse</code>.
* إضافة معدِّلين لترويسات الجدول: وهما <code>‎.thead-default</code> و  ‎<code>.thead-inverse</code>.
* إعادة تسمية الأصناف السياقية لتكون لها بادئة <code>‎.table</code>. وهكذا تحولت ‎<code>.active</code> و <code>‎.success</code> و <code>‎.warning</code> و ‎<code>.danger</code> و <code>.info</code> إلى ‎<code>.table-active</code>و <code>‎.table-Success</code> و ‎<code>.table-warning</code> و <code>‎ .table-risk</code> و <code>‎.table-info</code>.
* إعادة تسمية الأصناف السياقية لتكون لها بادئة <code>‎.table</code>. وهكذا تحولت ‎<code>.active</code> و <code>‎.success</code> و <code>‎.warning</code> و ‎<code>.danger</code> و <code>.info</code> إلى ‎ <code>.table-active</code>و <code>‎.table-Success</code> و ‎<code>.table-warning</code> و <code>‎ .table-risk</code> و <code>‎.table-info</code>.


=== الاستمارات ===
=== الاستمارات ===
سطر 119: سطر 119:
* إعادة تسمية <code>‎.input-lg</code> و ‎<code>.‎input-sm</code> إلى <code>‎.form-control-lg</code> و ‎<code>.form-control-sm</code> على التوالي.
* إعادة تسمية <code>‎.input-lg</code> و ‎<code>.‎input-sm</code> إلى <code>‎.form-control-lg</code> و ‎<code>.form-control-sm</code> على التوالي.
* إزالة أصناف ‎<code>.form-group-*</code>‎ بُغية التبسيط. استخدم أصناف <code>‎.form-control-*‎</code> بدلاً منها الآن.
* إزالة أصناف ‎<code>.form-group-*</code>‎ بُغية التبسيط. استخدم أصناف <code>‎.form-control-*‎</code> بدلاً منها الآن.
* إزالة <code>‎.help-block</code> وتعويضها بـ <code>‎.form-text</code> لأجل نصوص المساعدة الكتلية، أما فيما يخص نصوص المساعدة المضمّنة وغيرها من الخيارات المرنة، استخدم الأصناف المساعدة من قبيل <code>‎ .text-muted</code>.
* إزالة <code>‎.help-block</code> وتعويضها بـ <code>‎.form-text</code> لأجل نصوص المساعدة الكتلية، أما فيما يخص نصوص المساعدة المضمّنة وغيرها من الخيارات المرنة، استخدم الأصناف المساعدة من قبيل <code>‎.text-muted</code>.
* إزالة <code>‎.radio-inline</code> و ‎<code>.checkbox-inline</code>.
* إزالة <code>‎.radio-inline</code> و ‎<code>.checkbox-inline</code>.
* إدماج <code>‎.checkbox</code> و <code>‎.radio</code> في <code>‎.form-check</code> وكل أصناف <code>‎.form-check-*</code> ‎.
* إدماج <code>‎.checkbox</code> و <code>‎.radio</code> في <code>‎.form-check</code> وكل أصناف <code>‎.form-check-*</code> ‎.
سطر 157: سطر 157:
* إضافة نقطة حديثة جديدة إلى الشبكة بحجم 576 بكسل تحت اسم <code>sm</code>، ممّا يعني أن هناك الآن خمسة طبقات إجمالية (<code>xs</code> و <code>sm</code> و <code>md</code> و <code>lg</code> و <code>xl</code>).
* إضافة نقطة حديثة جديدة إلى الشبكة بحجم 576 بكسل تحت اسم <code>sm</code>، ممّا يعني أن هناك الآن خمسة طبقات إجمالية (<code>xs</code> و <code>sm</code> و <code>md</code> و <code>lg</code> و <code>xl</code>).
* إعادة تسمية أصناف معدّلات الشبكة المتجاوبة من ‎<code>‎.col-{breakpoint}-{modifier}-{size}‎</code>  إلى <code>‎.{modifier}-{breakpoint}-{size}‎</code>  لتبسيط أصناف الشبكة.
* إعادة تسمية أصناف معدّلات الشبكة المتجاوبة من ‎<code>‎.col-{breakpoint}-{modifier}-{size}‎</code>  إلى <code>‎.{modifier}-{breakpoint}-{size}‎</code>  لتبسيط أصناف الشبكة.
* إزالة أصناف أصناف معدلات الدفع push  والسحب pull وتعويضها بأصناف الترتيب <code>order</code>القائمة على Flexbox. على سبيل المثال، بدلاً من <code>‎.col-8.push-4</code> و <code>‎. col-4.pull-8</code>، عليك استخدام <code>‎.col-8.order-2</code> و ‎<code>.col-4.order-1</code>.
* إزالة أصناف أصناف معدلات الدفع push  والسحب pull وتعويضها بأصناف الترتيب <code>order</code>القائمة على Flexbox. على سبيل المثال، بدلًا من <code>‎.col-8.push-4</code> و <code>‎. col-4.pull-8</code>، عليك استخدام <code>‎.col-8.order-2</code> و ‎<code>.col-4.order-1</code>.
* إضافة أصناف flexbox مساعدة لاستخدامها في نظام الشبكة ومع المكونات.
* إضافة أصناف flexbox مساعدة لاستخدامها في نظام الشبكة ومع المكونات.


سطر 167: سطر 167:
=== النوافذ الشرطية ===
=== النوافذ الشرطية ===
* إعادة كتابة هذا المكون باستخدام flexbox.
* إعادة كتابة هذا المكون باستخدام flexbox.
* نتيجة للانتقال إلى استخدام flexbox، من المحتمل أن تنكسر محاذاة أيقونات الاستبعاد في الترويسة، لأنّنا لم نعد نستخدم العناصر العائمة. إذ أنّ المحتوى العائم يأتي أولاً، وذلك على خلاف Flexbox. لذا عليك تحديث أيقونات الاستبعاد حتى تأتي بعد عناوين النافذة الشرطية لكي تتجنّب هذا الخلل.
* نتيجة للانتقال إلى استخدام flexbox، من المحتمل أن تنكسر محاذاة أيقونات الاستبعاد في الترويسة، لأنّنا لم نعد نستخدم العناصر العائمة. إذ أنّ المحتوى العائم يأتي أولًا، وذلك على خلاف Flexbox. لذا عليك تحديث أيقونات الاستبعاد حتى تأتي بعد عناوين النافذة الشرطية لكي تتجنّب هذا الخلل.
* إزالة الخيار <code>remote</code> (الذي يمكن استخدامه لتحميل المحتويات الخارجية وإدخالها تلقائيًا في النافذة الشرطية)، كما أُزيل أيضًا الحدث المقابل له <code>loaded.bs.modal</code>. نوصي أن تستخدم بدلاً منه قوالب من جانب العميل أو إطار عمل متخصّص في ربط البيانات أو استدعاء [https://api.jquery.com/load/ jQuery.load] بنفسك.
* إزالة الخيار <code>remote</code> (الذي يمكن استخدامه لتحميل المحتويات الخارجية وإدخالها تلقائيًا في النافذة الشرطية)، كما أُزيل أيضًا الحدث المقابل له <code>loaded.bs.modal</code>. نوصي أن تستخدم بدلاً منه قوالب من جانب العميل أو إطار عمل متخصّص في ربط البيانات أو استدعاء [https://api.jquery.com/load/ jQuery.load] بنفسك.


سطر 191: سطر 191:
* إزالة المكوّن <code>‎.pager</code> إزالة كاملة، إذ لم تكن إلا أزرارًا بدون خلفية مخصصة.
* إزالة المكوّن <code>‎.pager</code> إزالة كاملة، إذ لم تكن إلا أزرارًا بدون خلفية مخصصة.


=== عناصر التنقّل Breadcrumb ===
=== عناصر التنقل Breadcrumb ===
* لقد أصبح من الضروري استخدام الصنف <code>‎.breadcrumb-item</code> صراحة في كل العناصر المُحتواة في <code>‎.breadcrumbs</code>
* لقد أصبح من الضروري استخدام الصنف <code>‎.breadcrumb-item</code> صراحة في كل العناصر المُحتواة في <code>‎.breadcrumbs</code>


سطر 214: سطر 214:


=== شريط التقدم ===
=== شريط التقدم ===
* تعويض الأصناف السياقية ‎<code>.progress-bar-*‎</code> بالأصناف <code>‎.bg-*‎</code>.استخدم مثلًا <code>‎class="progress-bar bg-danger"‎</code> بدلا من <code>class="progress-bar progress-bar-danger"‎</code>
* تعويض الأصناف السياقية ‎<code>.progress-bar-*‎</code> بالأصناف <code>‎.bg-*‎</code>.استخدم مثلًا <code>‎class="progress-bar bg-danger"‎</code> بدلًا من <code>class="progress-bar progress-bar-danger"‎</code>
* تبديل ‎<code>.active</code> في شرائط التقدم المتحركة بالصنف ‎<code>.progress-bar-animated</code>.
* تبديل ‎<code>.active</code> في شرائط التقدم المتحركة بالصنف ‎<code>.progress-bar-animated</code>.


سطر 234: سطر 234:
* '''Display و hidden وغيرها:'''
* '''Display و hidden وغيرها:'''
** جعل أدوات العرض متجاوبة (مثل <code>d-none</code> و <code>d-{sm,md,lg,xl}-none</code>).
** جعل أدوات العرض متجاوبة (مثل <code>d-none</code> و <code>d-{sm,md,lg,xl}-none</code>).
** إزالة الأصناف <code>‎.hidden-*</code>‎ من الأدوات المساعدة وتعويضها [[Bootstrap/display|بأدوات عرض]] جديدة. على سبيل المثال، بدلاً من <code>‎.hidden-sm-up</code>، استخدم <code>‎.d-sm-none</code>. أعيدت تسمية أدوات <code>‎.hidden-print</code> لاستخدام نظام التسمية المُتّبع في أدوات العرض. يمكنك الاطلاع على مزيد من المعلومات ضمن قسم الأدوات المساعدة المتجاوبة أدناه.
** إزالة الأصناف <code>‎.hidden-*</code>‎ من الأدوات المساعدة وتعويضها [[Bootstrap/display|بأدوات عرض]] جديدة. على سبيل المثال، بدلًا من <code>‎.hidden-sm-up</code>، استخدم <code>‎.d-sm-none</code>. أعيدت تسمية أدوات <code>‎.hidden-print</code> لاستخدام نظام التسمية المُتّبع في أدوات العرض. يمكنك الاطلاع على مزيد من المعلومات ضمن قسم الأدوات المساعدة المتجاوبة أدناه.
** إضافة الأصناف ‎<code>.float-{sm,md,lg,xl}-{left,right,none}‎</code> لاستخدامها مع العناصر العائمة المتجاوبة، كما أزيلت <code>‎.pull-left</code> و ‎<code>.pull-right</code> لأنها مكررة وتشبه <code>‎.float-left</code> و <code>‎.float-right</code>.
** إضافة الأصناف ‎<code>.float-{sm,md,lg,xl}-{left,right,none}‎</code> لاستخدامها مع العناصر العائمة المتجاوبة، كما أزيلت <code>‎.pull-left</code> و ‎<code>.pull-right</code> لأنها مكررة وتشبه <code>‎.float-left</code> و <code>‎.float-right</code>.
* '''النوع:'''
* '''النوع:'''
سطر 247: سطر 247:
أزيلت مخاليط [https://www.lifewire.com/css-vendor-prefixes-3466867 بادئات المتصفحات] الخاصة بالإصدار 3 من Bootstrap، إذ أصبحت مُتجاوزة ابتداء من الإصدار 3.2.0، وأزيلت في الإصدار 4. ونظرًا لأننا نستخدم [https://github.com/postcss/autoprefixer Autoprefixer]، فلم تعد ضرورية.
أزيلت مخاليط [https://www.lifewire.com/css-vendor-prefixes-3466867 بادئات المتصفحات] الخاصة بالإصدار 3 من Bootstrap، إذ أصبحت مُتجاوزة ابتداء من الإصدار 3.2.0، وأزيلت في الإصدار 4. ونظرًا لأننا نستخدم [https://github.com/postcss/autoprefixer Autoprefixer]، فلم تعد ضرورية.


لقد أزلنا المخاليط التالية: <code>animation و animation-delay و animation-direction و animation-duration و animation-fill-mode و animation-iteration-count و animation-name و animation-timing-function و backface-visibility و box-sizing و content-columns و hyphens و opacity و perspective و perspective-origin و rotate و rotateX و rotateY و scale و scaleX و scaleY و skew و transform-origin و transition-delay و transition-duration و transition-property و transition-timing-function و transition-transform و translate و translate3d و user-select</code>
لقد أزلنا المخاليط التالية:
* <code>animation</code>
* <code>animation-delay</code>
* <code>animation-direction</code>
* <code>animation-duration</code>
* <code>animation-fill-mode</code>
* <code>animation-iteration-count</code>
* <code>animation-name</code>
* <code>animation-timing-function</code>
* <code>backface-visibility</code>
* <code>box-sizing</code>
* <code>content-columns</code>
* <code>hyphens</code>
* <code>opacity</code>
* <code>perspective</code>
* <code>perspective-origin</code>
* <code>rotate</code>
* <code>rotateX</code>
* <code>rotateY</code>
* <code>scale</code>
* <code>scaleX</code>
* <code>scaleY</code>
* <code>skew</code>
* <code>transform-origin</code>
* <code>transition-delay</code>
* <code>transition-duration</code>
* <code>transition-property</code>
* <code>transition-timing-function</code>
* <code>transition-transform</code>
* <code>translate</code>
* <code>translate3d</code>
* <code>user-select</code>


== التوثيق ==
== التوثيق ==
سطر 266: سطر 297:
* إزالة الصنفين <code>‎.hidden</code> و ‎<code>.show</code> بسبب تعارضهما مع التابعين <code>‎$(...).hide()‎</code> و ‎<code>$(...).show()</code>‎ في jQuery. بدل استخدامها، حاول تبديل الخاصية <code>[hidden]</code> أو استخدم الأنماط المضمنة مثل <code>"‎‎‎</code>‎‎‎‎‎‎<code>style = "display: none;‎</code> و <code>style="display: block;"‎</code>
* إزالة الصنفين <code>‎.hidden</code> و ‎<code>.show</code> بسبب تعارضهما مع التابعين <code>‎$(...).hide()‎</code> و ‎<code>$(...).show()</code>‎ في jQuery. بدل استخدامها، حاول تبديل الخاصية <code>[hidden]</code> أو استخدم الأنماط المضمنة مثل <code>"‎‎‎</code>‎‎‎‎‎‎<code>style = "display: none;‎</code> و <code>style="display: block;"‎</code>
* إزالة جميع أصناف <code>‎.hidden-</code>‎ باستثناء أدوات الطباعة المساعدة، والتي أعيد تسميتها.
* إزالة جميع أصناف <code>‎.hidden-</code>‎ باستثناء أدوات الطباعة المساعدة، والتي أعيد تسميتها.
** أزيلت هذه الأصناف من الإصدار 3:  ‎<code>.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</code>
** أزيلت هذه الأصناف من الإصدار 3:<syntaxhighlight lang="text">
** أزيلت هذه الأصناف من الإصدار 4: <code>hidden-xs-up .hidden-xs-down .hidden-sm-up .hidden-sm-down .hidden-md-up .hidden-md-down .hidden-lg-up .hidden-lg-down</code>
.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
</syntaxhighlight>
** أزيلت هذه الأصناف من الإصدار 4:<syntaxhighlight lang="text">
hidden-xs-up .hidden-xs-down .hidden-sm-up .hidden-sm-down .hidden-md-up .hidden-md-down .hidden-lg-up .hidden-lg-down
</syntaxhighlight>
* لم تعد أدوات الطباعة تبدأ بـ <code>‎.hidden-</code>‎ أو <code>‎.visible-‎</code> ولكن بـ <code>‎.d-print-‎</code>.
* لم تعد أدوات الطباعة تبدأ بـ <code>‎.hidden-</code>‎ أو <code>‎.visible-‎</code> ولكن بـ <code>‎.d-print-‎</code>.
** الأسماء القديمة: <code>‎.visible-print-block</code> و <code>‎.visible-print-inline</code> و‎ <code>.visible-print-inline-block</code> و<code>‎ .hidden-print</code>
** الأسماء القديمة: <code>‎.visible-print-block</code> و <code>‎.visible-print-inline</code> و‎ <code>.visible-print-inline-block</code> و<code>‎ .hidden-print</code>

المراجعة الحالية بتاريخ 08:58، 21 يوليو 2020

الإصدار الرابع من 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.
  • تحديث أسماء أصناف الشبكة وطبقات شبكة جديدة.
    • إضافة طبقة شبكة 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. إذا كنت بحاجة إلى استخدام الأيقونات، فهذه بعض الخيارات المتاحة:
  • إزالة الملحقة 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 بنفسك.

عناصر التنقل Navs

  • إعادة كتابة هذا المكوّن باستخدام flexbox.
  • إزالة جميع المحدّدات <  بُغية تبسيط التنسيق عبر الأصناف غير المتداخلة.
  • لقد أصبحنا نستخدم أصناف منفصلة لعناصر ‎.nav و ‎.nav-item و ‎.nav-item بدلاً  من محدّدات HTML الخاصة من قبيل ‎.nav > li > a، وهذا يجعل ترميز HTML أكثر مرونة مع تسهيل إمكانية التوسيع.

شرائط التنقل Navbar

لقد أعدنا كتابة شرائط التنقل بالكامل باستخدام 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، فلم تعد ضرورية.

لقد أزلنا المخاليط التالية:

  • animation
  • animation-delay
  • animation-direction
  • animation-duration
  • animation-fill-mode
  • animation-iteration-count
  • animation-name
  • animation-timing-function
  • backface-visibility
  • box-sizing
  • content-columns
  • hyphens
  • opacity
  • perspective
  • perspective-origin
  • rotate
  • rotateX
  • rotateY
  • scale
  • scaleX
  • scaleY
  • skew
  • transform-origin
  • transition-delay
  • transition-duration
  • transition-property
  • transition-timing-function
  • transition-transform
  • translate
  • translate3d
  • user-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
      
  • لم تعد أدوات الطباعة تبدأ بـ ‎.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 مخصصة.

مصادر