في هذا الدرس 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 مظهر النظام القديم لتمنحها إطاراً وحشوة متطابقة تماماً مع بقية الحقول.
.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 بحفاظ كامل على دعم لوحة المفاتيح وبصفر برمجة.
.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 اللذين لا ينشطان إلا بعد تفاعل المستخدم الفعلي مع الحقل أو محاولة الإرسال.
احرص دائماً على إرفاق ألوان الصحة الخضراء والخطأ الحمراء بنص إرشادي واضح أو رمز مساعد، ولا تعتمد على اللون وحده مراعاةً للمستخدمين المصابين بعمى الألوان.
.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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Accent Color Property خاصية لون الاختيار
- خاصية في CSS تطبق لون هوية مخصصاً على مربعات الاختيار وأزرار الانتقاء وأشرطة التقدم الأصلية بسطر واحد.
- للمراجعة
- 02 Text Insertion Caret Color لون مؤشر الكتابة
- خاصية تلون المؤشر العمودي النابض داخل حقول الإدخال ومساحات النص دون تغيير لون الحروف المكتوبة.
- للمراجعة
- 03 Standard Appearance Reset تجريد المظهر الافتراضي
- ضبط القيمة القياسية appearance: none لإزالة زخرفة نظام التشغيل عن الحقل مع الاحتفاظ بدلالته ودعمه للوحة المفاتيح.
- للمراجعة
- 04 User-Invalid Pseudo-Class حالة الخطأ بعد التفاعل
- فئة زائفة تنسق الحقل غير الصالح بعد تفاعل الزائر الفعلي معه أو محاولة إرسال النموذج بدلاً من إظهاره فور التحميل.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات3
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 UX UX
- User Experience
- جودة تجربة المستخدم التي تتحسن بالتسميات الواضحة ومساحات اللمس المريحة والتنبيه البصري الهادئ بعد الكتابة.
- للمراجعة
- 02 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول الشبكة الذي يمكن إرسال طلبات النماذج عبره مباشرة إلى الخادم بتجاوز تنسيقات المتصفح، مما يحتم تحقق الخادم.
- للمراجعة
- 03 OS OS
- Operating System
- نظام التشغيل الذي يرسم خطوط وحواف الحقول الافتراضية قبل توحيدها عبر وراثة الخط وتجريد المظهر.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نسق مربع اختيار حقيقي بخاصية appearance: none القياسية ومسار كبسولي ومقبض ::before ينزلق عند حالة :checked.
-
رتب الحقول وتسمياتها في شبكة من عمود واحد تتحول لعمودين عند 640px وميز الحقول الخاطئة بعد التفاعل عبر :user-invalid.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.