مكونات Bootstrap والمشروع الختامي
نسرّع العمل بمكتبة جاهزة، ونجمع كل ما تعلمناه في المشروع الختامي. ⏱ نحو 30 دقيقة.
- تربط
Bootstrapبنسخةrtlوتستخدم أصنافه. - تبني شبكة متجاوبة بـ
containerوrowوcol. - تستخدم المكونات الجاهزة: الأزرار والبطاقات وشريط التنقل.
- تخطط لمشروعك الختامي ودراسة الحالة.
١مكتبة قطع جاهزة
كتبت بنفسك CSS للأزرار والبطاقات والشبكات. في المشاريع الكبيرة يستخدم المطوّرون غالبًا مكتبة جاهزة فيها هذه القطع، وأشهرها Bootstrap. تربطها بسطر واحد، ثم تكتب أسماء أصنافها في HTML:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css"><div class="container py-3"> <h1 class="text-primary">مقهى بُنّ</h1> <button class="btn btn-primary">اطلب الآن</button> <button class="btn btn-outline-secondary">القائمة</button> <div class="alert alert-success mt-3">تم حفظ طلبك ✓</div></div>
لم نكتب سطر CSS واحدًا! الأصناف btn و btn-primary و alert جاهزة في الملف الذي ربطناه. ولاحظ bootstrap.rtl.min.css: نسخة مخصصة للصفحات العربية.
٢الشبكة: 12 عمودًا مرة أخرى
تذكر شبكة الـ 12 عمودًا من الدرس 6؟ هي قلب Bootstrap:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css"><div class="container"> <div class="row g-2"> <div class="col-12 col-md-4"><div class="p-3 bg-primary-subtle">بايثون</div></div> <div class="col-12 col-md-4"><div class="p-3 bg-success-subtle">الويب</div></div> <div class="col-12 col-md-4"><div class="p-3 bg-warning-subtle">قواعد البيانات</div></div> </div></div>
| الصنف | معناه |
|---|---|
container | حاوية بعرض مناسب في الوسط. |
row | صف (فيه display: flex). |
col-12 | 12 عمودًا = العرض كله، في الجوال. |
col-md-4 | من الشاشة المتوسطة (768) فأكثر: 4 أعمدة، أي ثلاث بطاقات في صف. |
هذا التصميم المتجاوب من الدرس 21 كله، لكن بالأصناف بدل @media. جرّب «✏️ جرّب وعدّل» ثم زر 📱.
٣مكونات جاهزة
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css"><nav class="navbar navbar-dark bg-dark px-3"> <a class="navbar-brand" href="#">بُنّ</a> <span class="badge bg-warning text-dark">جديد</span></nav> <div class="container mt-3"> <div class="card" style="max-width: 18rem"> <img src="images/coffee.svg" class="card-img-top" alt="قهوة"> <div class="card-body"> <h5 class="card-title">قهوة مختصة</h5> <p class="card-text">تُحمَّص كل صباح.</p> <a href="#" class="btn btn-primary">أضف للسلة</a> </div> </div></div>
المكونات التفاعلية مثل القائمة التي تُطوى في الجوال، والنافذة المنبثقة Modal، تحتاج ملف JavaScript من Bootstrap أيضًا، نضعه قبل نهاية body:
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>انسخ الأمثلة من موقع getbootstrap.com (قسم Components)، ثم عدّل النصوص والألوان. القراءة من التوثيق مهارة أساسية لكل مطوّر.
٤متى أستخدم مكتبة؟
| CSS بنفسك | Bootstrap | |
|---|---|---|
| السرعة | أبطأ في البداية. | سريع جدًّا: قطع جاهزة. |
| الشكل | فريد بهويتك. | يشبه مواقع كثيرة ما لم تخصّصه. |
| الفهم | تفهم كل سطر. | تحتاج فهم CSS لتعدّل عليه. |
| الحجم | صغير. | ملف إضافي كبير نسبيًّا. |
لهذا تعلمت CSS أولًا: المكتبة تسرّعك، لكن من يفهم CSS هو من يستطيع تعديلها وإصلاحها. وفي مقرر أطر الويب ستتعلم React لبناء واجهات أكبر.
٥المشروع الختامي
حسب خطة المقرر، تسلّم في آخر الفصل ثلاثة أعمال تجمع كل ما تعلمته:
| العمل | المطلوب | من أين تبدأ؟ |
|---|---|---|
| 1. دراسة حالة | تحليل واجهة موقع مشهور: الهوية، والتجربة، ومبادئ UX، ونقاط القوة والضعف، ومقترحات تحسين. | تحدي الدرس 1 (حلّل واجهة موقع). |
| 2. تصميم الواجهة | مخطط هيكلي ونموذج مرئي في Figma لصفحة رئيسية وصفحة داخلية، للجوال والحاسوب. | تحديات الدروس 2 إلى 6. |
| 3. بناء الواجهة | صفحتان على الأقل بـ HTML و CSS و JavaScript، متجاوبتان، فيهما نموذج بتحقق، وتفاعل واحد على الأقل. يمكن استخدام Bootstrap. | تحديات الدروس 7 إلى 29. |
قائمة التحقق قبل التسليم
HTMLبعناصر دلالية، وعنوانh1واحد في كل صفحة، وaltلكل صورة.- ملف
CSSخارجي، وألوان وخطوط حسب دليل الهوية، وتباين مناسب. - متجاوب: جرّبته على عرض الجوال دون تمرير أفقي.
- نموذج فيه تحقق برسائل واضحة، وتفاعل بـ
JavaScript(قائمة، أو عدّاد، أو وضع ليلي…). - الملفات منظمة:
index.htmlوstyle.cssوscript.jsومجلدimages. - جرّبته في متصفحين على الأقل، ولا أخطاء في
Console.
توقّع وتحقّق
ما Bootstrap؟
ثلاث بطاقات متساوية في صف على الحاسوب:
12 ÷ 3 = 4.نسخة Bootstrap للصفحات العربية:
rtl.زر أزرق أساسي في Bootstrap:
btn ثم نوعه.الخلاصة
BootstrapمكتبةCSSجاهزة، ونسخةrtlللعربية.containerثمrowثمcol-…، ومجموع الأعمدة 12.col-12 col-md-4: عمود كامل في الجوال، وثلاثة في صف من 768 فأكثر.- المشروع الختامي: دراسة حالة، وتصميم في
Figma، وبناء واجهة متجاوبة تفاعلية.
تحدٍّ برمجي: صفحة مركز التدريب بـ Bootstrap
متقدمابنِ الصفحة الرئيسية لمركز التدريب بأصناف Bootstrap فقط (الرابط جاهز في الكود). تحتاج اتصالًا بالإنترنت لتحميل المكتبة.
- شريط تنقل navbar.
- حاوية container فيها عنوان h1.
- صف row فيه ثلاثة أعمدة
col-md-4. - في كل عمود بطاقة card لدورة (
card-bodyوcard-title). - زر
btn btn-primaryواحد على الأقل.
👀 اعرض شكل الناتج المطلوب
- رابط Bootstrap موجود.
- شريط تنقل navbar.
- container فيه h1.
- row فيه ثلاثة أعمدة
col-md-4. - كل عمود فيه card بـ
card-bodyوcard-title. - زر
btn btn-primary.
💡 تلميح 1
div class="row"> ثم ثلاثة <div class="col-md-4">💡 تلميح 2
card-body ثم card-titleحاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css"> <nav class="navbar navbar-dark bg-dark px-3"> <a class="navbar-brand" href="#">مركز المبرمج</a></nav> <div class="container py-3"> <h1>دوراتنا</h1> <div class="row g-3"> <div class="col-md-4"> <div class="card"><div class="card-body"><h5 class="card-title">بايثون</h5><a href="#" class="btn btn-primary">سجّل</a></div></div> </div> <div class="col-md-4"> <div class="card"><div class="card-body"><h5 class="card-title">تطوير الويب</h5><a href="#" class="btn btn-primary">سجّل</a></div></div> </div> <div class="col-md-4"> <div class="card"><div class="card-body"><h5 class="card-title">قواعد البيانات</h5><a href="#" class="btn btn-primary">سجّل</a></div></div> </div> </div></div>