انتقل إلى محتوى الدرس
الدرس 150
دورة لغة CSS

تنسيق النماذج وحقول الإدخال في لغة CSSCSS Forms

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

ترسم المتصفحات عناصر <input> و<textarea> و<select> و<button> افتراضياً بأنماط نظام التشغيل القديمة، ولذلك لا ترث نوع الخط العربي أو حجمه المحدد على وسم body! كما يؤدي منح الحقل عرضاً كاملاً width: 100% مع حشوة وإطار دون توحيد تحجيم الصندوق إلى خروجه عن حدود البطاقة.

لذلك يبدأ تنسيق النماذج الاحترافية دائماً بقاعدة التوحيد input, select, textarea, button { font: inherit; } مع box-sizing: border-box وعرض متجاوب width: 100% وارتفاع نقر مريح لا يقل عن 44px على الشاشات اللمسية.

مخطط من ثلاث ركائز لتنسيق النماذج يوضح توحيد الخطوط والأبعاد وحلقات التركيز ولون الاختيار وحالات التحقق بعد التفاعل

بما أن وسم <input> يمثل حقولاً نصية ومربعات اختيار وأزرار انتقاء في آن واحد، تجنب منح المحدد العام input عرضاً كاملاً بصورة عشوائية! واستهدف الحقول النصية بفئة موحدة مثل .form-control أو بمحددات السمات الدقيقة مثل input[type="email"] وinput[type="password"].

وفي مساحات الكتابة متعددة الأسطر <textarea> اضبط دائماً resize: vertical; min-height: 110px; ليتمكن الزائر من توسيع الصندوق رأسياً عند الحاجة دون سحبه أفقياً وإفساد أعمدة الشبكة. أما القوائم المنسدلة <select> فتلغي الخاصية القياسية appearance: none مظهر النظام القديم لتمنحها إطاراً وحشوة متطابقة تماماً مع بقية الحقول.

CSS
.field {
  width: 100%;
  font: inherit;
  padding: 10px 12px;
  border: 1.5px solid #c4b5fd;
  border-radius: 8px;
}
.select-box { appearance: none; }
textarea.field { resize: vertical; min-height: 100px; }

ضع كل تسمية <label> أعلى الحقل المرتبط بها مباشرة عبر display: block; margin-bottom: 6px; font-weight: 700; بدلاً من حشر التسميات بجانب الحقول في الشاشات الضيقة؛ إذ تسرّع التسميات العلوية مسح العين للنموذج وتستوعب النصوص العربية والإنجليزية الطويلة دون انكسار مزعج.

رتب مجموعات الحقول داخل شبكة CSS Grid تبدأ بعمود واحد grid-template-columns: 1fr; gap: 16px; على الهاتف، ثم تتحول داخل @media (min-width: 640px) إلى عمودين متوازنين repeat(2, 1fr) للحقول المتجاورة كالاسم الأول والأخير، مع منح مساحة الرسالة وزر الإرسال الامتداد الكامل عبر grid-column: 1 / -1.

تتعطل حقول البحث والحقول المزودة بأيقونة داخلية فور تحويل الواجهة إلى العربية عندما يثبت المطور موضع الأيقونة مادياً عبر left: 12px وحشوة الحقل عبر padding-left: 38px؛ فتبقى الأيقونة في اليسار أو يصطدم بها النص المكتوب!

والحل الهندسي الصحيح هو تثبيت الأيقونة عبر inset-inline-start: 12px ومنح الحقل حشوة بادئة مطابقة padding-inline-start: 38px لينعكس التصميم تلقائياً بين العربية والإنجليزية. أما البيانات اللاتينية بطبيعتها كالبريد الإلكتروني والروابط داخل نموذج عربي فيُفضل إعطاؤها السمة dir="ltr" على الحقل نفسه مع إبقاء تسميته العلوية بالعربية.

إياك وحذف إطار التركيز عبر outline: none دون تعويضه بحلقة تركيز عالية التباين! إذ يتيح المحدد :focus-visible على الحقول والقوائم والأزرار استبدال الإطار الافتراضي بحلقة واضحة ومتناسقة مثل border-color: #7750b2; outline: 3px solid rgba(119, 80, 178, 0.28); ليعرف مستخدم لوحة المفاتيح موضعه بدقة في كل لحظة.

وميز الحقول غير القابلة للتعديل بهدوء بصري؛ فالحقول المعطلة :disabled تأخذ خلفية هادئة مع opacity: 0.65 ومؤشر cursor: not-allowed، بينما تحافظ الحقول المخصصة للقراءة فقط :read-only على وضوح نصها الكامل لتسهيل قراءته ونسخه.

تمنحك ثلاث خصائص حديثة مواءمة فورية لتفاصيل النموذج الدقيقة مع هوية موقعك. أولاها accent-color: #7750b2 التي تلون مربعات الاختيار وأزرار الانتقاء وأشرطة التمرير بسطر واحد دون هدمها وإعادة بنائها! وثانيتها caret-color: #7750b2 التي تلون مؤشر الكتابة النابض داخل الحقول مع إبقاء النص المكتوب داكناً وواضحاً، إلى جانب تنسيق النص الإرشادي عبر ::placeholder.

وعندما يتطلب التصميم مفتاح تبديل مخصصاً على هيئة كبسولة منزلقة، نجمع الخاصية القياسية appearance: none على مربع اختيار حقيقي <input type="checkbox" class="toggle"> مع مقبض دائري عبر ::before ينزلق عند تحقق الحالة .toggle:checked::before بحفاظ كامل على دعم لوحة المفاتيح وبصفر برمجة.

CSS
.brand-check { accent-color: #7750b2; }
.brand-input { caret-color: #7750b2; }
.toggle { appearance: none; width: 44px; height: 24px; border-radius: 999px; }
.toggle:checked { background-color: #7750b2; }
.toggle:checked::before { transform: translateX(20px); }

مختبر تنسيق النماذج التفاعلي

يؤدي استخدام المحدد الخام input:invalid إلى تجربة مربكة ومزعجة؛ لأن جميع الحقول الإلزامية الفارغة تشتعل باللون الأحمر فور فتح الصفحة قبل أن يلمس الزائر لوحة المفاتيح! وتعالج اللغة الحديثة هذه المشكلة بأناقة عبر :user-invalid و:user-valid اللذين لا ينشطان إلا بعد تفاعل المستخدم الفعلي مع الحقل أو محاولة الإرسال.

احرص دائماً على إرفاق ألوان الصحة الخضراء والخطأ الحمراء بنص إرشادي واضح أو رمز مساعد، ولا تعتمد على اللون وحده مراعاةً للمستخدمين المصابين بعمى الألوان.

CSS
.form-grid { display: grid; gap: 14px; }
@media (min-width: 640px) {
  .form-grid { grid-template-columns: repeat(2, 1fr); }
}
.field:user-valid { border-color: #0f766e; }
.field:user-invalid { border-color: #dc2626; }
الميزةالصياغة القياسيةوظيفتها في هندسة النماذج
توريث الخطfont: inheritمطابقة خط وحجم الحقول والأزرار مع نص الصفحة
تقييد التمددresize: verticalمنع السحب الأفقي لمساحات النص من كسر الشبكة
تجريد المظهرappearance: noneإزالة إطار النظام القديم لبناء قوائم ومفاتيح مخصصة
لون الاختيارaccent-color: #7750b2تلوين مربعات الاختيار وأزرار الانتقاء بسطر واحد
حلقة التركيز:focus-visibleإبراز الحقل النشط بوضوح لمستخدمي لوحة المفاتيح
التحقق الهادئ:user-valid و:user-invalidإظهار ألوان الصحة والخطأ بعد تفاعل المستخدم فعلياً

ومع ختام مسار CSS المتكامل، رسّخ هذه القاعدة الهندسية الحاسمة: تنسيقات الصحة والتعطيل في المتصفح وسائل لتحسين تجربة المستخدم وليست ضوابط أمنية على الإطلاق! فإخفاء زر عبر display: none أو تعطيله عبر :disabled أو تلوين الحقل بالأخضر عبر :user-valid يجري بالكامل على جهاز الزائر.

يستطيع أي شخص فتح أدوات المطور وحذف سمة disabled أو required أو إرسال طلب شبكي مباشر إلى الخادم متجاوزاً المتصفح برمته. لذلك يظل التحقق الصارم من البيانات والصلاحيات والتعقيم على الخادم إلزامياً في كل نموذج دون استثناء.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

في ملخص الدرس أتممت بنجاح درس النماذج الختامي ومسار CSS كاملاً؛ إذ أتقنت توحيد خطوط الحقول عبر font: inherit، وتخطيط الشبكات المتجاوبة، والحشوات المنطقية ثنائية اللغة، وحلقات :focus-visible، وخصائص accent-color وcaret-color وappearance: none، والتحقق المريح عبر :user-invalid مع ترسيخ حتمية تحقق الخادم. وتتمثل الخطوة التالية في توظيف هذه المهارات المتكاملة لبناء واجهات مشاريع حقيقية والانتقال بثقة إلى برمجة التفاعل في الواجهة الأمامية.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Accent Color Property خاصية لون الاختيار
خاصية في CSS تطبق لون هوية مخصصاً على مربعات الاختيار وأزرار الانتقاء وأشرطة التقدم الأصلية بسطر واحد.
للمراجعة
02 Text Insertion Caret Color لون مؤشر الكتابة
خاصية تلون المؤشر العمودي النابض داخل حقول الإدخال ومساحات النص دون تغيير لون الحروف المكتوبة.
للمراجعة
03 Standard Appearance Reset تجريد المظهر الافتراضي
ضبط القيمة القياسية appearance: none لإزالة زخرفة نظام التشغيل عن الحقل مع الاحتفاظ بدلالته ودعمه للوحة المفاتيح.
للمراجعة
04 User-Invalid Pseudo-Class حالة الخطأ بعد التفاعل
فئة زائفة تنسق الحقل غير الصالح بعد تفاعل الزائر الفعلي معه أو محاولة إرسال النموذج بدلاً من إظهاره فور التحميل.
للمراجعة

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

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

الاختصارات3

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

0 / 3 مفهومةأول بطاقة، أول خطوة
01 UX UX
User Experience
جودة تجربة المستخدم التي تتحسن بالتسميات الواضحة ومساحات اللمس المريحة والتنبيه البصري الهادئ بعد الكتابة.
للمراجعة
02 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول الشبكة الذي يمكن إرسال طلبات النماذج عبره مباشرة إلى الخادم بتجاوز تنسيقات المتصفح، مما يحتم تحقق الخادم.
للمراجعة
03 OS OS
Operating System
نظام التشغيل الذي يرسم خطوط وحواف الحقول الافتراضية قبل توحيدها عبر وراثة الخط وتجريد المظهر.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. نسق مربع اختيار حقيقي بخاصية appearance: none القياسية ومسار كبسولي ومقبض ::before ينزلق عند حالة :checked.

  2. رتب الحقول وتسمياتها في شبكة من عمود واحد تتحول لعمودين عند 640px وميز الحقول الخاطئة بعد التفاعل عبر :user-invalid.

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

مساحة التحدي

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

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

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

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

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

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

لماذا نصرح بالقاعدة font: inherit على عناصر input وselect وtextarea وbutton؟

02

أي خاصية تسمح للمستخدم بتطويل مساحة النص textarea رأسياً دون كسر أعمدة الشبكة أفقياً؟

03

ما الخاصية الحديثة التي تلون مربعات الاختيار وأزرار الانتقاء الأصلية بهوية الموقع في سطر واحد؟

04

لماذا يُفضل المحدد :user-invalid على المحدد الخام :invalid عند تلوين حدود الحقول الخاطئة؟

05

ما الخاصية القياسية التي تزيل المظهر الافتراضي لنظام التشغيل عن القوائم ومربعات الاختيار لتخصيصها؟

06

كيف تُضبط حشوة حقل البحث المزود بأيقونة داخلية ليعمل في الواجهتين العربية والإنجليزية تلقائياً؟

07

يظل الحقل المخصص للقراءة فقط قابلاً للتركيز بمفتاح Tab لنسخ قيمته، بينما يتخطى مفتاح الجدولة الحقل المعطل.

08

تنسيق الحقول عبر :user-valid و:disabled في المتصفح يغني عن التحقق الأمني من المدخلات في الخادم.