انتقل إلى محتوى الدرس
الدرس 36
دورة بوتستراب 5

التسميات العائمة في بوتستراب 5Bootstrap 5 Floating Labels

صمّم التسميات العائمة الأنيقة بلغة CSS في بوتستراب 5 عبر كلاس form-floating، وتطبيق قاعدة ترتيب الحقل قبل التسمية، وتنسيق مربعات النص والقوائم والشبكة.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

توفر التسميات العائمة .form-floating في Bootstrap 5 تصميماً عصرياً مدمجاً يجمع بين نظافة الحقل المختصر وبقاء اسم الحقل مرئياً دائماً أمام عين المستخدم؛ ففي الحالة الفارغة تستقر التسمية داخل الحقل بحجم طبيعي، وبمجرد نقر المستخدم للكتابة أو وجود قيمة مسبقة ترتفع التسمية للأعلى بحجم مصغر 0.85 تاركةً المساحة السفلية للنص المكتوب.

أجمل ما يميز هذا المكوّن أنه يعمل بلغة CSS الخالصة بنسبة مئة بالمئة دون أي مستمعات أحداث في JavaScript، اعتماداً على الحالة الزائفة القياسية :placeholder-shown.

HTML
<div class="form-floating mb-3">
  <input type="email" class="form-control" id="flMail"
         placeholder="[email protected]">
  <label for="flMail">Email address</label>
</div>
<div class="form-floating">
  <input type="password" class="form-control" id="flPass"
         placeholder="Password" value="secret123">
  <label for="flPass">Password</label>
</div>

لكي تعمل التسمية العائمة دون أخطاء، يجب الالتزام بشرطين تقنيين صارمين لا يقبلان التنازل:

  • أولاً — الحقل قبل التسمية: يجب كتابة عنصر <input class="form-control"> أولاً داخل .form-floating، ثم كتابة <label> بعده مباشرة (عكس النماذج التقليدية)، لأن CSS لا تستطيع استهداف عنصر سابق عبر محدد الأخ ~.
  • ثانياً — وجود سمة placeholder غير فارغة: يجب إضافة سمة placeholder="..." على كل حقل نصي، فلو حُذفت هذه السمة ستبقى التسمية عالقة في المنتصف فوق كتابة المستخدم!
مخطط يوضح الشروط الثلاثة لعمل التسميات العائمة form-floating من ترتيب الحقل وسمة placeholder حتى حركة التصغير

عند استخدام مربع نص متعدد الأسطر <textarea class="form-control"> داخل .form-floating، فإن ارتفاعه الافتراضي سيعادل ارتفاع سطر واحد فقط. لا تعتمد هنا على السمة التقليدية rows="4" لأن قواعد الارتفاع الثابت في الحاوية العائمة تتجاوزها؛ بل حدد ارتفاعاً صريحاً عبر CSS (مثل style="height: 110px").

HTML
<div class="form-floating">
  <textarea class="form-control" id="flMsg"
            placeholder="Leave a comment"
            style="height: 110px"></textarea>
  <label for="flMsg">Incident Summary</label>
</div>

يدعم .form-floating أيضاً قوائم الاختيار المنسدلة عبر وضع <select class="form-select"> متبوعاً بعنصر <label> (ودون الحاجة لسمة placeholder هنا). وبما أن عنصر <select> يعرض دائماً نص الخيار المحدد حالياً، تظل التسمية مستقرة في وضعها العلوي المصغر منذ اللحظة الأولى. تذكّر أن القوائم العائمة تدعم القوائم المنسدلة المفردة فقط ولا تعمل مع سمتَي multiple أو size.

HTML
<div class="form-floating">
  <select class="form-select" id="flRegion">
    <option value="me" selected>Riyadh (ME)</option>
    <option value="eu">Europe (Frankfurt)</option>
    <option value="us">US East (Virginia)</option>
  </select>
  <label for="flRegion">Cloud Region</label>
</div>

وسّع Bootstrap 5.3 قدرات التسميات العائمة لتشمل حالتين متقدمتين شائعتين في لوحات التحكم: استخدام .form-control-plaintext داخل .form-floating لعرض البيانات المقروءة بدون إطار مع احتفاظها بعنوانها العلوي الأنيق، وكذلك وضع حاوية .form-floating كاملة كابن مباشر داخل .input-group بجانب بادئة .input-group-text.

اختبر جميع حالات التسميات العائمة بنفسك في المختبر الحي التالي:

تبرع التسميات العائمة بشكل خاص عند وضعها داخل صفوف الشبكة المتراصة مثل <div class="row g-2">؛ فبما أن التسمية محتواة داخل ارتفاع الصندوق نفسه (3.5rem افتراضياً) في كل من الحقل النصي وقائمة الاختيار، يصطف العمودان أفقياً كشريط أنيق متساوي الارتفاع دون أي إزاحة رأسية.

HTML
<div class="input-group mb-2">
  <span class="input-group-text">@</span>
  <div class="form-floating">
    <input type="text" class="form-control" id="uName"
           placeholder="Username">
    <label for="uName">Username</label>
  </div>
</div>

يلخص الجدول المرجعي التالي قواعد ومتطلبات التسميات العائمة في Bootstrap 5.3:

العنصر أو الشرططريقة الكتابة الصحيحةسبب الإلزام أو السلوك الناتج
.form-floatingالحاوية الأب المباشرةضبط الموضع النسبي والارتفاع الموحد (3.5rem) للحقل وتسميته
ترتيب الوسومالحقل أولاً ثم <label> بعدهتمكين محدد الأخ في CSS من تحريك التسمية عند التركيز أو الامتلاء
سمة placeholderإلزامية على input وtextareaتفعيل الكاشف :not(:placeholder-shown) لمعرفة وجود نص مكتوب
ارتفاع <textarea>عبر style="height: ..." وليس rowsلأن قواعد ارتفاع .form-floating تتجاهل سمة عدد الأسطر التقليدية
قائمة .form-selectقائمة مفردة بدون multiple أو sizeتستقر التسمية علوياً بشكل دائم فوق الخيار النشط
الدمج مع .input-groupوضع .form-floating كابن داخل المجموعةإلحاق بادئات أو أزرار مع بقاء التسمية العائمة فاعلة داخل الحقل
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس آلية عمل التسميات العائمة .form-floating بلغة CSS الخالصة، وقاعدة ترتيب الحقل قبل التسمية مع سمة placeholder الإلزامية، وضبط ارتفاع مربعات النص، وتنسيق قوائم الاختيار ومجموعات الإدخال والشبكة. الخطوة التالية: انتقل الآن إلى درس «تخطيط وتوزيع النماذج في بوتستراب 5» لبناء النماذج الشبكية المتعددة الأعمدة والنماذج الأفقية والسطرية.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Floating Label Wrapper حاوية التسمية العائمة
حاوية في بوتستراب 5 تحرك عنصر التسمية للأعلى بحجم مصغر فور التركيز على الحقل أو كتابة قيمة بداخله.
للمراجعة
02 Placeholder-Shown Pseudo-Class محدد إظهار التلميح في CSS
محدد CSS قياسي يعتمد عليه .form-floating لمعرفة ما إذا كان الحقل فارغاً أم يحتوي على نص دون جافاسكريبت.
للمراجعة
03 Input-Before-Label Order قاعدة سبق الحقل للتسمية
وضع عنصر الحقل قبل وسم <label> في شجرة HTML ليتمكن محدد الأخ في CSS من التحكم بموضع التسمية.
للمراجعة
04 Explicit Textarea Height الارتفاع الصريح لمربع النص
تحديد خاصية height بلغة CSS بدلاً من سمة rows لتكبير مساحة مربع النص داخل الحاوية العائمة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 CSS CSS
Cascading Style Sheets
أوراق الأنماط المتتالية — تتولى تشغيل حركة التسميات العائمة بالكامل عبر التحويلات الهندسية دون الحاجة لجافاسكريبت.
للمراجعة
02 DOM DOM
Document Object Model
نموذج كائن المستند — يشترط تقدم عقدة الحقل على عقدة التسمية الشقيقة داخل شجرة العناصر.
للمراجعة
03 RTL RTL
Right-to-Left
الاتجاه من اليمين إلى اليسار — يضبط نقطة ارتكاز تصغير التسمية العائمة في أقصى اليمين العلوي تلقائياً في الواجهة العربية.
للمراجعة
04 UX UX
User Experience
تجربة المستخدم — تحافظ على بقاء اسم الحقل مرئياً بعد الكتابة، بعكس نصوص placeholder العادية التي تختفي فور البدء بالكتابة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ حقلَي .form-floating للبريد الإلكتروني وكلمة المرور مع الالتزام بوضع الحقل قبل التسمية وإضافة سمة placeholder غير فارغة.

  2. صمّم صفاً شبكياً .row.g-2 يجمع مجموعة إدخال ببادئة @ مع .form-floating وقائمة .form-select عائمة، يليهما مربع نص عائم بارتفاع 120px.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الترتيب الإلزامي للعناصر داخل حاوية <div class="form-floating"> لكي تعمل حركة الطفو؟

02

لماذا تجب إضافة سمة placeholder على كل حقل <input> داخل حاوية .form-floating؟

03

لزيادة ارتفاع عنصر <textarea> داخل .form-floating، يكفي استخدام السمة rows="6" بدلاً من خاصية height في CSS.

04

تتطلب التسميات العائمة في بوتستراب 5 تحميل ملف bootstrap.bundle.min.js لتحريك التسمية عند النقر.

05

ما السمات غير المدعومة على عنصر <select class="form-select"> عند وضعه داخل .form-floating؟

06

كيف تجمع بين بادئة نصية @ وحقل ذي تسمية عائمة في بوتستراب 5.3؟

07

يدعم الإصدار 5.3 من بوتستراب استخدام .form-control-plaintext داخل حاوية .form-floating.

08

هل ينبغي إضافة الكلاس form-label إلى وسم <label> الواقع داخل حاوية .form-floating؟