امتحان CSS 5: الإتقان والميزات الحديثة (10 تمارين مركبة)

امتحان CSS 5: الإتقان والميزات الحديثة

اختبر معرفتك بأحدث تقنيات CSS التي تغير طريقة بناء الويب، مثل استعلامات الحاويات والطبقات والخصائص المنطقية.

تمرين 1 استعلامات الحاويات (Container Queries)

اجعل العنصر يستجيب لحجم حاويته وليس الشاشة:

  1. عرف الحاوية (.card-container) كحاوية استعلام (container-type: inline-size).
  2. استخدم `@container` لتغيير لون خلفية الابن (.card) إلى الأحمر إذا كان عرض الحاوية أقل من 300px.
الحل
.card-container {
    container-type: inline-size;
}

@container (max-width: 300px) {
    .card {
        background-color: red;
    }
}
تمرين 2 الطبقات المتتالية (Cascade Layers)

نظم أولويات CSS باستخدام الطبقات:

  1. عرف طبقات بالترتيب: base, components, utilities.
  2. ضع قاعدة في طبقة `base` تجعل لون النص أزرق.
  3. ضع قاعدة في طبقة `utilities` تجعل لون النص أحمر (يجب أن تفوز لأنها معرفة لاحقاً).
الحل
@layer base, components, utilities;

@layer base {
    p { color: blue; }
}

@layer utilities {
    p { color: red; } /* هذا اللون سيفوز */
}
تمرين 3 الخصائص المنطقية (Logical Properties)

استخدم الخصائص المنطقية لدعم تعدد اللغات (LTR/RTL):

  1. بدلاً من `margin-left`، استخدم الخاصية المنطقية لبداية السطر (inline-start).
  2. بدلاً من `padding-top`، استخدم الخاصية المنطقية لبداية الكتلة (block-start).
الحل
.box {
    margin-inline-start: 20px; /* يسار في LTR، يمين في RTL */
    padding-block-start: 10px; /* أعلى */
}
تمرين 4 تداخل CSS (CSS Nesting)

استخدم ميزة Nesting الحديثة في CSS (بدون Preprocessor):

  1. داخل قاعدة `.card`، قم بتنسيق العنوان `.title` الموجود بداخلها.
  2. داخل نفس القاعدة، استخدم `&` لتنسيق حالة `hover` للبطاقة نفسها.
الحل
.card {
    background: white;
    
    .title {
        font-weight: bold;
    }
    
    &:hover {
        background: gray;
    }
}
تمرين 5 دالة التثبيت (Clamp Function)

اجعل حجم الخط متجاوباً بذكاء:

  1. استخدم دالة `clamp()` لتعيين حجم الخط.
  2. الحد الأدنى: 1rem.
  3. القيمة المفضلة: 2.5vw (تتغير مع عرض الشاشة).
  4. الحد الأقصى: 2rem.
الحل
h1 {
    font-size: clamp(1rem, 2.5vw, 2rem);
}
تمرين 6 الشبكة الفرعية (Subgrid)

اجعل الابن يرث شبكة الأب:

  1. لديك أب `.grid` معرف كشبكة.
  2. لديك ابن `.item` يمتد على 3 أعمدة.
  3. اجعل الابن نفسه شبكة، ولكن اجعل أعمدته تتبع أعمدة الأب باستخدام `subgrid`.
الحل
.item {
    display: grid;
    grid-template-columns: subgrid;
}
تمرين 7 نسبة العرض للارتفاع (Aspect Ratio)

تحكم في أبعاد الصندوق:

  1. اجعل العنصر يحافظ دائماً على نسبة عرض إلى ارتفاع 16:9.
  2. بغض النظر عن عرضه المتغير.
الحل
.video-container {
    width: 100%;
    aspect-ratio: 16 / 9;
}
تمرين 8 تخصيص شريط التمرير (Scrollbar Styling)

خصص مظهر شريط التمرير (للمتصفحات الحديثة):

  1. اجعل عرض شريط التمرير رفيعاً (thin).
  2. اجعل لون الشريط (thumb) أزرق ولون المسار (track) شفافاً.
الحل
/* Standard Property */
html {
    scrollbar-width: thin;
    scrollbar-color: blue transparent;
}
تمرين 9 دالة الحساب (Calc Function)

قم بإجراء عمليات حسابية للقيم:

  1. اجعل عرض العنصر يساوي 100% ناقص 50px.
  2. هذا مفيد جداً عند دمج وحدات مختلفة.
الحل
.sidebar {
    width: calc(100% - 50px);
}
تمرين 10 فئة :has() (The Parent Selector)

حدد الأب بناءً على حالة ابنه:

  1. حدد العنصر (.card) فقط إذا كان يحتوي على صورة (img) بداخله.
  2. اجعل حدود هذه البطاقة حمراء.
الحل
.card:has(img) {
    border: 2px solid red;
}
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن