أمثلة وإرشادات الاستخدام لأنماط التحكم في النموذج وخيارات التخطيط والمكونات المخصصة لإنشاء مجموعة متنوعة من النماذج.
ملخص
تتوسع عناصر التحكم في نموذج Bootstrap في أنماط النماذج المعاد تمهيدها مع الفئات. استخدم هذه الفئات للاشتراك في شاشات العرض المخصصة الخاصة بهم للحصول على عرض أكثر تناسقًا عبر المتصفحات والأجهزة.
تأكد من استخدام typeسمة مناسبة في جميع المدخلات (على سبيل المثال ، emailلعنوان البريد الإلكتروني أو numberللمعلومات الرقمية) للاستفادة من عناصر التحكم الجديدة في الإدخال مثل التحقق من البريد الإلكتروني واختيار الرقم والمزيد.
إليك مثال سريع لإظهار أنماط نماذج Bootstrap. استمر في القراءة للحصول على وثائق حول الفئات المطلوبة وتخطيط النموذج والمزيد.
ضوابط النموذج
تم تصميم عناصر التحكم في النموذج النصي - مثل <input>s و s <select>و <textarea>s - مع .form-controlالفصل الدراسي. يتم تضمين أنماط للمظهر العام وحالة التركيز والتحجيم والمزيد.
تأكد من استكشاف نماذجنا المخصصة لمزيد من الأنماط <select>.
حدد ارتفاعات باستخدام فئات مثل .form-control-lgو .form-control-sm.
يقرأ فقط
أضف readonlyالسمة المنطقية على إدخال لمنع تعديل قيمة الإدخال. تظهر مدخلات ��لقراءة فقط أخف (تمامًا مثل المدخلات المعطلة) ، لكنها تحتفظ بالمؤشر القياسي.
للقراءة فقط نص عادي
إذا كنت تريد أن تكون <input readonly>عناصر في النموذج الخاص بك على هيئة نص عادي ، فاستخدم .form-control-plaintextالفئة لإزالة النمط الافتراضي لحقل النموذج والحفاظ على الهامش والحشو الصحيحين.
مدخلات النطاق
قم بتعيين مدخلات النطاق القابل للتمرير أفقيًا باستخدام .form-control-range.
مربعات الاختيار وأجهزة الراديو
.form-checkتم تحسين مربعات الاختيار وأجهزة الراديو الافتراضية بمساعدة فئة واحدة لكل من أنواع الإدخال التي تعمل على تحسين تخطيط وسلوك عناصر HTML الخاصة بهم . خانات الاختيار مخصصة لتحديد خيار واحد أو عدة خيارات في القائمة ، بينما تستخدم أجهزة الراديو لتحديد خيار واحد من بين العديد من الخيارات.
يتم دعم مربعات الاختيار وأجهزة الراديو المعطلة ، ولكن لتوفير not-allowedمؤشر على تحويم الوالد <label>، ستحتاج إلى إضافة disabledالسمة إلى .form-check-input. ستطبق السمة المعطلة لونًا أفتح للمساعدة في الإشارة إلى حالة الإدخال.
تم تصميم مربعات الاختيار وأجهزة الراديو لدعم التحقق من صحة النموذج المستند إلى HTML وتقديم تسميات موجزة وسهلة الوصول. على هذا النحو ، فإن <input>s و s لدينا <label>هي عناصر أشقاء بدلاً من <input>داخل a <label>. هذا مطول أكثر قليلاً حيث يجب عليك تحديد السمات والسمات لربط idو .for<input><label>
افتراضي (مكدس)
بشكل افتراضي ، سيتم تكديس أي عدد من مربعات الاختيار وأجهزة الراديو التي هي أشقاء مباشرون عموديًا ومتباعدة بشكل مناسب معها .form-check.
في النسق
قم بتجميع مربعات الاختيار أو أجهزة الراديو في نفس الصف الأفقي عن طريق الإضافة .form-check-inlineإلى أي منها .form-check.
بدون تسميات
أضف .position-staticإلى المدخلات .form-checkالتي لا تحتوي على أي نص تسمية. تذكر أن تستمر في تقديم شكل من أشكال التسمية للتقنيات المساعدة (على سبيل المثال ، استخدام aria-label).
تَخطِيط
نظرًا لأن Bootstrap ينطبق display: blockوعلى width: 100%جميع عناصر التحكم في النموذج تقريبًا ، فإن النماذج ستتكدس بشكل افتراضي عموديًا. يمكن استخدام فئات إضافية لتغيير هذا التخطيط على أساس كل نموذج.
مجموعات النموذج
يعتبر .form-groupالفصل أسهل طريقة لإضافة بعض الهياكل إلى النماذج. يوفر فئة مرنة تشجع على التجميع المناسب للتسميات وعناصر التحكم ونص التعليمات الاختيارية ورسائل التحقق من صحة النموذج. بشكل افتراضي ، يتم تطبيقه فقط margin-bottom، لكنه يلتقط أنماطًا إضافية .form-inlineحسب الحاجة. استخدمه مع <fieldset>s أو <div>s أو أي عنصر آخر تقريبًا.
شبكة النموذج
يمكن بناء أشكال أكثر تعقيدًا باستخدام فئات الشبكة الخاصة بنا. استخدمها لتخطيطات النماذج التي تتطلب أعمدة متعددة وعروضًا متنوعة وخيارات محاذاة إضافية.
صف النموذج
يمكنك أيضًا التبديل من .rowأجل .form-row، شكل مختلف لصف الشبكة القياسي الخاص بنا والذي يتجاوز مزاريب العمود الافتراضية لتخطيطات أكثر إحكامًا وأكثر إحكامًا.
يمكن أيضًا إنشاء تخطيطات أكثر تعقيدًا باستخدام نظام الشبكة.
شكل أفقي
قم بإنشاء نماذج أفقية باستخدام الشبكة عن طريق إضافة .rowالفئة إلى مجموعات النماذج واستخدام .col-*-*الفئات لتحديد عرض التسميات وعناصر التحكم. تأكد من الإضافة .col-form-labelإلى <label>عناصرك أيضًا بحيث يتم توسيطها رأسياً مع عناصر التحكم في النموذج المرتبطة بها.
في بعض الأحيان ، قد تحتاج إلى استخدام أدوات مساعدة للهامش أو الحشو لإنشاء المحاذاة المثالية التي تحتاجها. على سبيل المثال ، قمنا بإزالة padding-topتسمية مدخلات الراديو المكدسة لدينا لمحاذاة خط الأساس للنص بشكل أفضل.
تحجيم ملصق النموذج الأفقي
تأكد من استخدام .col-form-label-smأو .col-form-label-lgالخاص بك <label>أو الخاص بك <legend>لتتبع بشكل صحيح حجم .form-control-lgو .form-control-sm.
تحجيم العمود
كما هو موضح في الأمثلة السابقة ، يسمح لك نظام الشبكة لدينا بوضع أي عدد من .cols داخل .rowأو .form-row. سيقومون بتقسيم العرض المتاح بالتساوي بينهما. يمكنك أيضًا اختيار مجموعة فرعية من الأعمدة الخاصة بك لشغل مساحة أكبر أو أقل ، بينما تقسم الأعمدة المتبقية .colبالتساوي الباقي ، مع فئات أعمدة معينة مثل .col-7.
التحجيم التلقائي
يستخدم المثال أدناه أداة flexbox المساعدة لتوسيط المحتويات والتغييرات بشكل عمودي بحيث لا تشغل .colالأعمدة .col-autoمساحة كبيرة حسب الحاجة. بعبارة أخرى ، حجم العمود نفسه بناءً على المحتويات.
يمكنك بعد ذلك إعادة مزج ذلك مرة أخرى بفئات الأعمدة الخاصة بالحجم.
استخدم .form-inlineالفصل لعرض سلسلة من التسميات وعناصر تحكم النماذج والأزرار في صف أفقي واحد. تختلف عناصر تحكم النموذج في النماذج المضمنة قليلاً عن حالاتها الافتراضية.
عناصر التحكم هي display: flexطي أي مساحة بيضاء بتنسيق HTML وتسمح لك بتوفير تحكم في المحاذاة مع أدوات التباعد والمرنة .
يتم تلقي عناصر التحكم ومجموعات الإدخال width: autoلتجاوز الإعداد الافتراضي Bootstrap width: 100%.
تظهر عناصر التحكم فقط في محاور في إطارات العرض التي يبلغ عرضها 576 بكسل على الأقل لحساب إطارات العرض الضيقة على الأجهزة المحمولة.
قد تحتاج إلى معالجة عرض ومحاذاة عناصر تحكم النموذج الفردية يدويًا باستخدام أدوات مساعدة للتباعد (كما هو موضح أدناه). أخيرًا ، تأكد دائمًا من تضمين <label>عنصر تحكم مع كل عنصر تحكم في النموذج ، حتى إذا كنت بحاجة إلى إخفائه عن الزائرين الذين لا يستخدمون قارئ الشاشة .sr-only.
يتم أيضًا دعم عناصر تحكم وتحديدات النماذج المخصصة.
بدائل التسميات المخفية
ستواجه التقنيات المساعدة مثل برامج قراءة الشاشة مشكلة في النماذج الخاصة بك إذا لم تقم بتضمين تسمية لكل إدخال. بالنسبة لهذه النماذج المضمنة ، يمكنك إخفاء التسميات باستخدام .sr-onlyالفئة. هناك طرق بديلة أخرى لتوفير تسمية للتقنيات المساعدة ، مثل aria-label، aria-labelledbyأو titleالسمة. في حالة عدم وجود أي من هذه ، قد تلجأ التقنيات المساعدة إلى استخدام placeholderالسمة ، إن وجدت ، ولكن لاحظ أنه placeholderلا ينصح باستخدامها كبديل لطرق وضع العلامات الأخرى.
نص المساعدة
يمكن إنشاء نص التعليمات على مستوى الكتلة في النماذج باستخدام .form-text(المعروف سابقًا .help-blockفي الإصدار 3). يمكن تنفيذ نص التعليمات المضمن بمرونة باستخدام أي عنصر HTML مضمّن وفئات أدوات مساعدة مثل .text-muted.
إقران نص التعليمات بعناصر تحكم النموذج
يجب أن يرتبط نص التعليمات بشكل صريح بعنصر التحكم في النموذج الذي يتعلق باستخدام aria-describedbyالسمة. سيضمن هذا أن التقنيات المساعدة - مثل برامج قراءة الشاشة - ستعلن عن نص المساعدة هذا عندما يركز المستخدم أو يدخل عنصر التحكم.
يمكن تنسيق نص المساعدة الموجود أسفل المدخلات باستخدام .form-text. تتضمن هذه الفئة display: blockوتضيف بعض الهامش العلوي لسهولة التباعد بين المدخلات أعلاه.
يجب أن تتكون كلمة مرورك من 8 إلى 20 حرفًا ، وأن تحتوي على أحرف وأرقام ، ويجب ألا تحتوي على مسافات أو أحرف خاصة أو رموز تعبيرية.
يمكن أن يستخدم النص المضمن أي عنصر HTML مضمن نموذجي (سواء كان ذلك <small>، <span>أو أي شيء آخر) بدون أي شيء أكثر من فئة أدوات مساعدة.
أشكال المعوقين
أضف disabledالسمة المنطقية على الإدخال لمنع تفاعلات المستخدم وجعلها تبدو أفتح.
أضف disabledالسمة إلى <fieldset>لتعطيل جميع عناصر التحكم داخل.
تحذير مع المراسي
بشكل افتراضي ، ستتعامل المستعرضات مع جميع عناصر التحكم (والعناصر) الأصلية في النموذج <input>على أنها <select>معطلة ، مما يمنع تفاعلات لوحة المفاتيح والماوس عليها. ومع ذلك ، إذا كان النموذج الخاص بك يتضمن أيضًا عناصر ، فسيتم منح هذه العناصر فقط نمط . كما هو مذكور في القسم الخاص بحالة التعطيل للأزرار (وتحديداً في القسم الفرعي لعناصر الربط) ، فإن خاصية CSS هذه لم يتم توحيدها بعد ولا يتم دعمها بالكامل في Internet Explorer 10 ، ولن تمنع مستخدمي لوحة المفاتيح من أن يكونوا قادرة على التركيز أو تفعيل هذه الروابط. حتى تكون آمنًا ، استخدم JavaScript مخصصًا لتعطيل هذه الروابط.<button><fieldset disabled><a ... class="btn btn-*">pointer-events: none
التوافق عبر المستعرضات
بينما يقوم Bootstrap بتطبيق هذه الأنماط في جميع المستعرضات ، فإن Internet Explorer 11 وما يليه لا يدعم disabledالسمة بشكل كامل في ملف <fieldset>. استخدم JavaScript مخصص لتعطيل مجموعة الحقول في هذه المتصفحات.
تصديق
قدم ملاحظات قيمة وقابلة للتنفيذ إلى المستخدمين لديك من خلال التحقق من صحة نموذج HTML5 - متاح في جميع المتصفحات المدعومة لدينا . اختر من ملاحظات التحقق الافتراضية من المتصفح ، أو نفذ رسائل مخصصة مع الفئات المضمنة وجافا سكريبت المبدئي.
نوصي حاليًا باستخدام أنماط تحقق مخصصة ، نظرًا لأن رسائل التحقق الافتراضية من المتصفح الأصلي لا تتعرض باستمرار للتقنيات المساعدة في جميع المتصفحات (وعلى الأخص Chrome على سطح المكتب والجوال).
كيف تعمل
إليك كيفية عمل التحقق من صحة النموذج مع Bootstrap:
يتم تطبيق التحقق من صحة نموذج HTML عبر فئتي CSS الزائفين ، :invalidو :valid. إنه ينطبق على <input>، <select>والعناصر <textarea>.
يقوم Bootstrap بنطاقات :invalidوأنماط للفئة :validالأصلية .was-validated، وعادة ما يتم تطبيقها على ملف <form>. وإلا ، فإن أي حقل مطلوب بدون قيمة يظهر على أنه غير صالح عند تحميل الصفحة. بهذه الطريقة ، يمكنك اختيار وقت تنشيطها (عادةً بعد محاولة إرسال النموذج).
لإعادة تعيين مظهر النموذج (على سبيل المثال ، في حالة عمليات إرسال النموذج الديناميكي باستخدام AJAX) ، قم بإزالة .was-validatedالفصل <form>مرة أخرى بعد الإرسال.
كإجراء احتياطي ، .is-invalidيمكن .is-validاستخدام الفئات بدلاً من الفئات الزائفة للتحقق من صحة الخادم . لا تتطلب .was-validatedفئة الوالدين.
نظرًا للقيود المفروضة على كيفية عمل CSS ، لا يمكننا (في الوقت الحالي) تطبيق أنماط على عنصر <label>يأتي قبل عنصر تحكم نموذج في DOM بدون مساعدة JavaScript مخصص.
قد تستخدم رسائل الملاحظات الإعدادات الافتراضية للمتصفح (تختلف لكل متصفح ، وغير قابلة للنمط من خلال CSS) أو أنماط التعليقات المخصصة لدينا مع HTML و CSS إضافيين.
يمكنك تقديم رسائل صلاحية مخصصة باستخدام setCustomValidityJavaScript.
مع وضع ذلك في الاعتبار ، ضع في اعتبارك العروض التوضيحية التالية لأنماط التحقق من صحة النماذج المخصصة ، والفئات الاختيارية من جانب الخادم ، وافتراضيات المتصفح.
الأنماط المخصصة
بالنسبة إلى رسائل التحقق من صحة نموذج Bootstrap المخصصة ، ستحتاج إلى إضافة novalidateالسمة المنطقية إلى ملف <form>. يؤدي هذا إلى تعطيل تلميحات أدوات الملاحظات الافتراضية للمتصفح ، ولكنه لا يزال يوفر الوصول إلى واجهات برمجة تطبيقات التحقق من صحة النموذج في JavaScript. حاول إرسال النموذج أدناه ؛ سوف يعترض JavaScript الخاص بنا زر الإرسال وترحيل الملاحظات إليك.
:invalidعند محاولة الإرسال ، سترى :validالأنماط المطبقة على عناصر تحكم النموذج.
المستعرض الافتراضي
لست مهتمًا برسائل ملاحظات التحقق المخصصة أو كتابة JavaScript لتغيير سلوكيات النموذج؟ كل خير ، يمكنك استخدام الإعدادات الافتراضية للمتصفح. حاول إرسال النموذج أدناه. اعتمادًا على المتصفح ونظام التشغيل لديك ، سترى نمطًا مختلفًا قليلاً للتعليقات.
بينما لا يمكن تصميم أنماط التعليقات هذه باستخدام CSS ، لا يزال بإمكانك تخصيص نص الملاحظات من خلال JavaScript.
جانب الخادم
نوصي باستخدام التحقق من جانب العميل ، ولكن في حالة طلب جانب الخادم ، يمكنك الإشارة إلى حقول النموذج الصالحة وغير الصالحة باستخدام .is-invalidو .is-valid. لاحظ أن .invalid-feedbackهذا مدعوم أيضًا مع هذه الفئات.
العناصر المدعومة
تُظهر نماذج الأمثلة الخاصة بنا نماذج نصية أصلية <input>أعلاه ، ولكن تتوفر أنماط التحقق من صحة النماذج لعناصر تحكم النموذج المخصصة أيضًا.
تلميحات
إذا كان تخطيط النموذج الخاص بك يسمح بذلك ، يمكنك تبديل .{valid|invalid}-feedbackالفئات .{valid|invalid}-tooltipللفئات لعرض ملاحظات التحقق من الصحة في تلميح أداة مصمم. تأكد من وجود أحد الوالدين position: relativeعليه لوضع تلميح الأداة. في المثال أدناه ، تحتوي فئات العمود لدينا على هذا بالفعل ، ولكن مشروعك قد يتطلب إعدادًا بديلاً.
النماذج المخصصة
لمزيد من التخصيص والاتساق عبر المستعرضات ، استخدم عناصر النموذج المخصصة تمامًا لاستبدال الإعدادات الافتراضية للمتصفح. لقد تم تصميمها فوق العلامات الدلالية والتي يمكن الوصول إليها ، لذا فهي بدائل قوية لأي عنصر تحكم افتراضي في النموذج.
مربعات الاختيار وأجهزة الراديو
يتم تغليف كل خانة اختيار وراديو <div>مع شقيق <span>لإنشاء عنصر التحكم المخصص الخاص بنا و a <label>للنص المصاحب. من الناحية الهيكلية ، هذا هو نفس نهجنا الافتراضي .form-check.
نستخدم محدد الأخوة ( ~) لجميع حالاتنا - <input>مثل - لتصميم مؤشر النموذج المخصص بشكل صحيح. :checkedعند الدمج مع .custom-control-labelالفصل ، يمكننا أيضًا تصميم النص لكل عنصر بناءً على حالة <input>''.
نخفي الإعداد الافتراضي <input>باستخدام opacityونستخدمه .custom-control-labelلإنشاء مؤشر نموذج مخصص جديد في مكانه باستخدام ::beforeو ::after. لسوء الحظ ، لا يمكننا إنشاء عنصر مخصص من فقط <input>لأن CSS contentلا يعمل على هذا العنصر.
في الحالات المحددة ، نستخدم رموز SVG المضمنة في base64 من Open Iconic . يوفر لنا هذا أفضل تحكم في التصميم وتحديد المواقع عبر المتصفحات والأجهزة.
مربعات الاختيار
يمكن أن تستخدم مربعات الاختيار المخصصة أيضًا :indeterminateفئة pseudo عند تعيينها يدويًا عبر JavaScript (لا توجد سمة HTML متاحة لتحديدها).
إذا كنت تستخدم jQuery ، فيجب أن يكون شيئًا كهذا كافيًا:
أجهزة الراديو
في النسق
عاجز
يمكن أيضًا تعطيل مربعات الاختيار وأجهزة الراديو المخصصة. أضف disabledالسمة المنطقية إلى وسيتم <input>تصميم المؤشر المخصص ووصف التسمية تلقائيًا.
اختر قائمة
القوائم المخصصة <select>تحتاج فقط إلى فئة مخصصة ، .custom-selectلتشغيل الأنماط المخصصة. تقتصر الأنماط المخصصة على <select>المظهر الأولي ولا يمكن تعديلها <option>بسبب قيود المستعرض.
يمكنك أيضًا الاختيار من بين التحديدات المخصصة الصغيرة والكبيرة لمطابقة إدخالات النص ذات الحجم المماثل.
السمة multipleمدعومة أيضًا:
كما هي sizeالسمة:
نطاق
<input type="range">إنشاء ضوابط مخصصة مع .custom-range. تم تصميم كل من المسار (الخلفية) والإبهام (القيمة) بحيث يظهران بنفس الشكل عبر المتصفحات. نظرًا لأن IE و Firefox فقط يدعمان "ملء" المسار الخاص بهما من يسار أو يمين الإبهام كوسيلة للإشارة بصريًا إلى التقدم ، فإننا لا ندعمه حاليًا.
تحتوي مدخلات النطاق على قيم ضمنية لـ - minو ، على التوالي. يمكنك تحديد قيم جديدة لأولئك الذين يستخدمون السمات و .max0100minmax
بشكل افتراضي ، يدخل النطاق "المفاجئة" لقيم عدد صحيح. لتغيير هذا ، يمكنك تحديد stepقيمة. في المثال أدناه ، نضاعف عدد الخطوات باستخدام step="0.5".
متصفح الملفات
يُعد إدخال الملف هو الأكثر شيوعًا بين المجموعة ويتطلب JavaScript إضافيًا إذا كنت ترغب في ربطها مع وظيفي اختر ملفًا ... ونص اسم الملف المحدد.
نقوم بإخفاء الملف الافتراضي <input>عبر ونقوم opacityبدلاً من ذلك بتنسيق <label>. يتم إنشاء الزر ووضعه مع ::after. widthأخيرًا ، نعلن عن وجود heightمسافة <input>مناسبة للمحتوى المحيط.
ترجمة أو تخصيص السلاسل
تُستخدم :lang()الفئة الزائفة للسماح بترجمة نص "التصفح" إلى لغات أخرى. تجاوز أو أضف إدخالات إلى $custom-file-textمتغير Sass بعلامة اللغة ذات الصلة والسلاسل المترجمة. يمكن تخصيص السلاسل الإنجليزية بنفس الطريقة. على سبيل المثال ، إليك كيفية إضافة ترجمة إسبانية (رمز اللغة الإسبانية هو es):
فيما يلي lang(es)عملية إدخال ملف مخصص لترجمة إسبانية:
ستحتاج إلى تعيين لغة المستند الخاص بك (أو الشجرة الفرعية الخاصة به) بشكل صحيح حتى يتم عرض النص الصحيح. يمكن القيام بذلك باستخدام السمة langالموجودة على <html>العنصر أو Content-Languageرأس HTTP ، من بين طرق أخرى.