قضايا قانونية

قضايا جنائية

جرائم السرقة والاحتيال والاعتداء الجنائي

... ...

قضايا الشركات

نقاشات حول نزاعات وعقود الشركات

... ...

قضايا مدنية

نزاعات العقود والملكية والتعويضات المالية

... ...

قضايا أحوال شخصية

نقاشات حول الزواج والطلاق والميراث

... ...

قضايا جرائم الإنترنت

الاحتيال عن طريق وسائل التواصل الاجتماعي

... ...

قضايا الرأي العام

القضايا الشائعه في المجتمع المصري

... ...

قضايا النصب والاحتيال

خداع مالي ونصب احتيالي متكرر

... ...

قضايا دستورية

حقوق المواطنين وقوانين الدولة الأساسية

... ...

استشارات قانونية بارزة

    المواد التعليمية

    تاريخ الصف الثالث الثانوي

    عهد محمد علي، الاحتلال، وثورة 23 يوليو

    ... ...

    دراسات الصف الثالث الإعدادي

    جغرافية العالم، وتاريخ مصر الحديث والصراع العربي الإسرائيلي

    ... ...

    علم نفس الصف الثاني الثانوي

    الدوافع، الانفعالات، والعمليات المعرفية (الإحساس والإدراك)

    ... ...

    فلسفة ومنطق الصف الأول الثانوي

    أساسيات التفكير الإنساني ومبادئ المنطق (الحدود والقضايا)

    ... ...

    موصى به لك

      شرح درس الخلفيات Css

      الخلفيات (Background)

      إذا كانت عناصر HTML هي "الممثلين" على المسرح، فإن الـ Background هي "الديكور" الخلفي الذي يحدد جو المشهد. الخلفيات في CSS لم تعد مجرد لون مصمت أو صورة تتكرر بشكل ممل كما في التسعينات. اليوم، الخلفيات هي أداة قوية جداً تمكنك من صنع تدرجات لونية ساحرة (Gradients)، وضع صور تغطي الشاشة بالكامل بذكاء (Responsive)، وحتى عمل خدع بصرية مثل التمرير الثابت (Parallax Effect).

      في هذا الدرس العميق، سنقوم بتفكيك خاصية background إلى جزيئاتها الأولية. سنتعلم كيف نتحكم في موقع الصورة، حجمها، تكرارها، وكيف نضع أكثر من خلفية فوق بعضهم البعض. استعد لدرس سيغير نظرتك لتصميم المواقع.

      1. اللون الخلفي (background-color)

      أبسط وأول خاصية هي ملء العنصر بلون مصمت. هذه الخاصية تغطي منطقة المحتوى (Content) ومنطقة الحاشية (Padding) وحتى حدود الإطار (Border) إذا كانت الحدود شفافة أو منقطة.

      القيم المقبولة

      • أسماء الألوان: red, blue.
      • أكواد Hex: #ff0000.
      • أكواد RGB/RGBA: وهنا تكمن القوة. باستخدام rgba يمكنك جعل الخلفية نصف شفافة لتظهر ما خلفها.
      • transparent: (الافتراضي) تجعل الخلفية شفافة تماماً.
      مثال: خلفية شفافة
      
      body {
          background-color: #f0f0f0; /* رمادي فاتح للصفحة كلها */
      }
      
      .overlay-box {
          /* لون أسود بنسبة شفافية 50% */
          /* هذا سيجعل الصندوق مظللاً لكن يظهر ما خلفه */
          background-color: rgba(0, 0, 0, 0.5); 
          color: white;
      }
      

      2. الصورة الخلفية (background-image) والتدرجات

      هنا يبدأ المرح. هذه الخاصية تسمح لك بوضع صورة، أو رسم تدرج لوني (Gradient) لأن المتصفح يعتبر التدرج "صورة" يتم توليدها برمجياً.

      أ. وضع صورة (URL)

      نستخدم الدالة url('...') لتحديد مسار الصورة. المسار يمكن أن يكون على جهازك (محلي) أو رابطاً من الإنترنت.

      background-image: url('images/hero.jpg');

      ب. التدرجات اللونية (Gradients) - تصميم بلا صور!

      بدلاً من تحميل صورة ثقيلة، يمكنك جعل المتصفح يرسم تدرجاً لونياً. هناك نوعان رئيسيان:

      • Linear Gradient (خطي): تدرج في خط مستقيم (من فوق لتحت، أو بزاوية).
        background-image: linear-gradient(to right, red, yellow);
      • Radial Gradient (دائري): تدرج يبدأ من المنتصف وينتشر للخارج بشكل دائري.
        background-image: radial-gradient(circle, red, black);
      مثال: تدرج لوني عصري
      
      .hero-section {
          height: 300px;
          
          /* تدرج من الأزرق الغامق إلى البنفسجي بزاوية 45 درجة */
          background-image: linear-gradient(45deg, #1e3c72, #2a5298);
      }
      

      3. تكرار الخلفية (background-repeat)

      افتراضياً، إذا كانت الصورة أصغر من العنصر، سيقوم المتصفح بتكرارها (Tiling) أفقياً وعمودياً لتملأ المكان، مثل بلاط الأرضية. غالباً ما يكون هذا مزعجاً ونريد إيقافه.

      خيارات التكرار

      القيمة السلوك
      repeat (الافتراضي) تكرار الصورة في كل الاتجاهات.
      no-repeat (الأكثر استخداماً) تظهر الصورة مرة واحدة فقط ولا تتكرر.
      repeat-x تكرار أفقي فقط (شريط بالعرض).
      repeat-y تكرار عمودي فقط (شريط بالطول).

      4. مكان الخلفية (background-position)

      عندما توقف التكرار (no-repeat)، أين ستظهر الصورة؟ افتراضياً تظهر في الزاوية العلوية اليسرى (0,0). خاصية background-position تسمح لك بتحريكها بدقة.

      طرق تحديد الموقع

      • الكلمات المفتاحية: (الأسهل) center, top, bottom, left, right.
        مثال: background-position: center center; (في منتصف العنصر تماماً).
      • النسب المئوية: 50% 50% (تعني المنتصف). 100% 100% (أسفل اليمين).
      • وحدات البكسل: 20px 50px (ابعد 20 بيكسل من اليسار، و 50 بيكسل من فوق).

      5. حجم الخلفية (background-size) - الأهم للتجاوب

      هذه هي أهم خاصية في تصميم المواقع الحديثة (Responsive Design). كيف تجعل الصورة تغطي كامل الشاشة سواء على الموبايل أو الكمبيوتر دون أن تتشوه؟

      القيم السحرية (Cover vs Contain)

      القيمة الوصف والنتيجة
      auto الحجم الطبيعي للصورة (قد تكون ضخمة جداً أو صغيرة جداً).
      cover (الخيار السحري) تقوم بتكبير الصورة لتغطي كامل العنصر.
      العيب: قد يتم قص أجزاء من الصورة (من الجوانب أو فوق/تحت) للحفاظ على النسبة.
      contain تقوم بتكبير الصورة لتظهر بالكامل داخل العنصر.
      العيب: قد تترك مساحات فارغة في الجوانب إذا كانت أبعاد الصورة لا تطابق العنصر.
      100% 100% تجبر الصورة على ملء العنصر بالكامل.
      العيب: تشوه الصورة (تمطيط) وتفقد أبعادها الحقيقية.
      مثال: خلفية كاملة (Full Screen Hero)
      
      .full-screen-bg {
          width: 100%;
          height: 100vh; /* ملء ارتفاع الشاشة */
          
          background-image: url('landscape.jpg');
          background-repeat: no-repeat;
          background-position: center;
          
          /* السر هنا: تغطية كاملة دون تشويه */
          background-size: cover; 
      }
      

      6. تثبيت الخلفية (background-attachment)

      هل رأيت تلك المواقع التي تتحرك فيها النصوص بينما تبقى الصورة الخلفية ثابتة في مكانها وكأنها نافذة؟ هذا هو تأثير Parallax البسيط، ويتم صنعه بكلمة واحدة.

      قيم التثبيت

      • scroll: (الافتراضي) الخلفية تتحرك وتختفي مع حركة الصفحة عند النزول (Scroll).
      • fixed: الخلفية "تتجمد" في مكانها بالنسبة للشاشة. المحتوى يتحرك فوقها، لكنها لا تتحرك.
      • local: تستخدم عند وجود شريط تمرير داخل العنصر نفسه (div scrollable).

      معلومة: استخدام background-attachment: fixed مع background-size: cover هو أسهل طريقة لعمل تأثير Parallax احترافي بدون أي جافاسكريبت.

      7. مناطق الرسم والقص (Origin & Clip)

      هاتان خاصيتان للمحترفين، تتحكمان في "أين تبدأ الخلفية" و "أين يتم قصها".

      أ. منشأ الخلفية (background-origin)

      تحدد من أين تبدأ الصورة (نقطة 0,0):

      • border-box: تبدأ من أقصى الزاوية (خلف الإطار).
      • padding-box: (الافتراضي) تبدأ من داخل الإطار (منطقة الحاشية).
      • content-box: تبدأ من منطقة المحتوى فقط.

      ب. قص الخلفية (background-clip) - خدعة النص الملون

      تحدد المنطقة التي سيتم "دهان" الخلفية فيها. أهم قيمة هنا هي text.

      خدعة رائعة: يمكنك وضع صورة داخل النصوص! اجعل الخلفية صورة، ثم استخدم background-clip: text واجعل لون النص شفافاً.

      مثال: صورة داخل نص (Text Mask)
      
      h1 {
          font-size: 100px;
          background-image: url('colorful-pattern.jpg');
          
          /* قص الخلفية لتظهر فقط داخل الحروف */
          -webkit-background-clip: text;
          background-clip: text;
          
          /* جعل النص شفافاً لنرى الخلفية من خلاله */
          color: transparent; 
      }
      

      8. الاختصار (Shorthand) والخلفيات المتعددة

      بدلاً من كتابة 6 أسطر، يمكننا دمج كل شيء في سطر واحد باستخدام الخاصية background.

      ترتيب الاختصار

      الترتيب الشائع (ليس صارماً كلياً، لكن يُفضل الالتزام به):

      color image position/size repeat attachment

      مثال:
      background: #000 url('img.jpg') center/cover no-repeat fixed;

      خلفيات متعددة (Multiple Backgrounds)

      نعم، يمكنك وضع أكثر من خلفية لنفس العنصر! يتم الفصل بينهم بفاصلة (,).

      • الطبقة الأولى (First) هي التي تظهر في الأعلى (فوق الجميع).
      • الطبقة الأخيرة هي التي تظهر في الخلف.

      هذا مفيد جداً لوضع "طبقة لونية شفافة" فوق "صورة" لزيادة وضوح النص.

      مثال: تظليل صورة (Overlay)
      
      .card {
          /* الطبقة الأولى: تدرج أسود شفاف (ليكون فوق الصورة) */
          /* الطبقة الثانية: الصورة نفسها */
          background-image: 
              linear-gradient(rgba(0,0,0,0.6), rgba(0,0,0,0.6)),
              url('background.jpg');
              
          background-size: cover;
          color: white;
      }
      

      شرح الحدود Outline, Border | فى CSS

      الحدود Outline, Border

      في عالم تصميم الويب، العناصر بدون حدود تبدو عائمة وتائهه. الحدود (Borders) هي التي تعطي للعنصر هيكله، وتفصله عن جيرانه، وتبرز محتواه. تخيل لوحة فنية ثمينة بدون إطار خشبي يحيط بها؛ ستفقد الكثير من قيمتها وجمالها.

      في هذا الدرس الدسم، سنتعلم كل شيء عن خاصية border التي تحجز مساحة فعلية في الصفحة، وخاصية outline التي ترسم خطاً دون أن تؤثر على تصميم الصفحة. سنتعلم كيف نحول المربعات إلى دوائر، وكيف نصنع مثلثات باستخدام الحدود فقط (نعم، مثلثات!)، ولماذا يعتبر الـ Outline صديقاً لذوي الاحتياجات الخاصة. استعد لدرس مليء بالأشكال والأكواد.

      1. تشريح الإطار (Border): المكونات الثلاثة

      لكي يظهر الإطار، لا يكفي أن تقول للمتصفح "ارسم إطاراً". يجب أن تحدد له 3 معلومات أساسية (الثالوث المقدس للإطارات). إذا نسيت واحدة منها (خاصة النمط)، لن يظهر الإطار أبداً.

      المكونات الثلاثة (Width, Style, Color)

      • 1. سُمك الإطار (border-width): كم عرض الخط؟ (مثلاً 5px, thick, thin).
      • 2. نمط الإطار (border-style): كيف شكل الخط؟ (متصل، منقط، مزدوج...). هذا أهم جزء! بدونه القيمة الافتراضية هي none ولن يظهر شيء.
      • 3. لون الإطار (border-color): ما هو لونه؟ (أحمر، أزرق، هيكس كود...).

      الاختصار السريع (Shorthand)

      بدلاً من كتابة 3 أسطر، نكتب سطراً واحداً يجمعهم. الترتيب المعتاد هو: السُمك ثم النمط ثم اللون.

      border: 5px solid red;

      مثال: الطريقة الطويلة vs المختصرة
      
      /* الطريقة الطويلة والمملة */
      .box-1 {
          border-width: 3px;
          border-style: solid;
          border-color: blue;
      }
      
      /* الطريقة المختصرة والاحترافية (نفس النتيجة) */
      .box-2 {
          border: 3px solid blue;
      }
      

      2. أنواع نمط الإطار (Border Styles) بالتفصيل

      خاصية border-style تمتلك قيماً كثيرة جداً، بعضها بسيط وبعضها يعطي تأثيرات ثلاثية الأبعاد (3D). دعنا نستعرضها جميعاً.

      النمط (Style) الوصف (Description) الاستخدام الشائع
      solid خط متصل (مستمر). الأكثر استخداماً (90% من الحالات).
      dashed خط متقطع (شرطات - - -). لمناطق السحب والإفلات (Drag & Drop) أو الكوبونات.
      dotted خط منقط (نقاط . . .). للإطارات الخفيفة أو التزيين.
      double خط مزدوج (خطين متوازيين). يتطلب width لا يقل عن 3px ليظهر بوضوح.
      none لا يوجد إطار. يستخدم لإزالة الإطار الافتراضي للأزرار وحقول الإدخال.
      groove محفور (3D). يبدو وكأنه محفور داخل الشاشة.
      ridge بارز (3D). عكس groove، يبدو بارزاً للخارج.
      inset غائر (3D). يجعل العنصر بالكامل يبدو مضغوطاً للداخل (زر مضغوط).
      outset نافر (3D). يجعل العنصر يبدو بارزاً للخارج (زر غير مضغوط).
      أمثلة بصرية للأنماط
      
      .solid-border { border-style: solid; }
      .dashed-border { border-style: dashed; }
      .dotted-border { border-style: dotted; }
      .double-border { border-width: 5px; border-style: double; } /* لاحظ زيادة السمك */
      

      3. التحكم في الجهات والزوايا (Border Radius)

      هل تعلم أنك لست مضطراً لوضع إطار من الجوانب الأربعة؟ وهل تعلم أن الإطارات لا يشترط أن تكون زواياها حادة؟

      أ. إطارات لجهات محددة

      يمكنك تحديد إطار لجهة واحدة فقط، وهذا شائع جداً في تصميم الروابط أو القوائم.

      • border-bottom: 2px solid red; (خط تحت الكلام فقط).
      • border-left: 5px solid green; (خط سميك على اليسار للتمييز).

      ب. تدوير الزوايا (Border Radius) - سحر الدوائر

      خاصية border-radius هي التي حولت الويب من مربعات حادة ومملة إلى تصميمات ناعمة وعصرية. هي تقوم بقص زوايا العنصر.

      • تدوير بسيط: border-radius: 10px; (زوايا ناعمة للأزرار والبطاقات).
      • دائرة كاملة: border-radius: 50%; (بشرط أن يكون العنصر مربعاً، أي طوله يساوي عرضه).
      • شكل كبسولة: border-radius: 999px; (للأزرار البيضاوية).
      كيف تصنع دائرة في CSS؟
      
      .avatar-circle {
          width: 100px;
          height: 100px; /* يجب أن يكون مربعاً */
          background-color: #ddd;
          
          /* السر كله هنا */
          border-radius: 50%; 
          
          border: 2px solid white; /* إطار أبيض حول الدائرة */
      }
      

      سؤال: إذا كان العنصر مستطيلاً وليس مربعاً، واستخدمت border-radius: 50%، ماذا سيكون الشكل الناتج؟
      الإجابة: شكل بيضاوي (Oval). لعمل دائرة مثالية، يجب أن يتساوى الطول والعرض.

      4. الخط الخارجي (Outline): الشقيق المشاغب

      الآن نأتي للـ Outline. هو يشبه الـ Border جداً، يحيط بالعنصر، وله نفس الخصائص (width, style, color). لكنه يختلف عنه في سلوكه.

      خصائص الـ Outline الفريدة

      • لا يحجز مساحة: الـ Outline يرسم "فوق" العنصر ولا يدفع العناصر المجاورة له. هو مثل ضوء الليزر، يظهر ولكن لا يؤثر فيزيائياً على الترتيب.
      • يحيط بالكل: لا يمكنك عمل outline لجهة واحدة (مثل outline-top). هو يحيط بالعنصر كاملاً دائماً.
      • Offset (الإزاحة): يمكنك إبعاد الـ outline عن العنصر باستخدام outline-offset، وهذه ميزة رائعة للتصميم لا يملكها الـ border.
      مثال على Outline مع Offset
      
      .special-btn {
          background-color: black;
          color: white;
          border: 2px solid white;
          
          /* خط خارجي أحمر مفصول عن العنصر */
          outline: 2px dashed red;
          outline-offset: 5px; /* مسافة 5 بيكسل بين الإطار والآوتلاين */
      }
      

      5. المعركة الكبرى: الفرق بين Border و Outline

      هذا الجدول سيوضح لك متى تستخدم كل واحد منهما، وهو مرجع مهم جداً للمقابلات والعمل.

      وجه المقارنة Border (الإطار) Outline (الخط الخارجي)
      حجز المساحة نعم، يزيد من حجم العنصر ويدفع الجيران. لا، لا يحجز مساحة (يرسم فوق الصفحة).
      التحكم بالجهات ممكن (top, right, bottom, left). غير ممكن (يحيط بالعنصر كاملاً).
      التدوير (Radius) يدعم border-radius ويتبع الانحناء. في المتصفحات الحديثة يتبع الانحناء، قديماً كان مستطيلاً دائماً.
      الاستخدام الرئيسي التصميم الهيكلي والجمالي الأساسي. تحديد التركيز (Focus) وإمكانية الوصول (Accessibility).
      Offset غير متاح. متاح (outline-offset).

      تحذير هام (Accessibility): لا تقم أبداً بإلغاء الـ outline عن الروابط والأزرار عند التركيز (:focus { outline: none; }) إلا إذا وضعت بديلاً واضحاً (مثل تغيير لون الخلفية). الـ outline هو الطريقة الوحيدة التي يعرف بها مستخدمو لوحة المفاتيح (Keyboard Users) مكانهم في الصفحة.

      6. خدع سحرية بالحدود (مثلثات ودوائر)

      الـ Borders في CSS ليست مجرد خطوط، بل هي أداة رسم هندسي. أشهر خدعة في تاريخ CSS هي رسم المثلث.

      كيف نرسم مثلثاً؟ (The Triangle Hack)

      الفكرة غريبة لكنها عبقرية:

      1. اجعل عرض وطول العنصر صفر (width: 0; height: 0;).
      2. ضع حدوداً سميكة جداً (مثلاً 50px).
      3. اجعل لون 3 حدود شفافاً (transparent).
      4. اجعل لون الحد الرابع ملوناً. هذا الحد سيظهر كمثلث!
      كود رسم المثلث (للمحترفين)
      
      .triangle-up {
          width: 0;
          height: 0;
          
          /* الحدود الجانبية شفافة لتصنع الزوايا */
          border-left: 50px solid transparent;
          border-right: 50px solid transparent;
          
          /* الحد السفلي ملون ليصنع قاعدة المثلث */
          border-bottom: 100px solid red;
      }
      

      عند تطبيق هذا الكود، ستحصل على مثلث أحمر يشير للأعلى. بتغيير الجهات الشفافة والملونة، يمكنك توجيه المثلث لأي اتجاه.

      جدول المقارنة والملخص

      الـ Border هو "سور المنزل" (جزء من المبنى)، والـ Outline هو "شريط الشرطة الأصفر" الذي يوضع حول المنزل (مؤقت، خارجي، ولا يغير مساحة المنزل).

      • استخدم Border لتصميم الكروت، الأزرار، الفواصل، والجداول.
      • استخدم Outline لتوضيح العنصر النشط (Focus) أو لعمل تأثيرات جمالية مزدوجة مع الـ offset.
      • تذكر دائماً box-sizing: border-box لكي لا يخرب الإطار حسابات العرض والطول في تصميمك.

      الهوامش الخارجيه (Margin) - Css

      الهوامش الخارجية (Margin)

      إذا كان الـ Padding هو "وزن العنصر" الذي يملأه من الداخل، فإن الـ Margin هو "المساحة الشخصية" للعنصر التي تمنع الآخرين من الاقتراب منه. الـ Margin هو المسافة الشفافة الموجودة خارج حدود العنصر (Border). هو الأداة التي نستخدمها لإبعاد العناصر عن بعضها البعض، أو لتوسط العنصر في منتصف الصفحة، أو حتى لعمل تداخلات فنية بين الصور. في هذا الدرس الشامل، سنغطي كل شبر في خاصية الـ Margin، من الأساسيات وحتى الحيل الاحترافية.

      1. مفهوم Margin (المنطقة المحرمة)

      الـ Margin هو مساحة فارغة وشفافة تماماً تحيط بالعنصر من الخارج. تخيل أن كل عنصر في صفحتك هو شخص مصاب بالأنفلونزا، والـ Margin هو مسافة الأمان التي يجب أن يتركها بينه وبين الآخرين.

      • الشفافية: الـ Margin شفاف دائماً. لا يمكن تلوينه. هو يظهر لون "خلفية الصفحة" أو العنصر الأب الذي يحتوي العناصر.
      • الوظيفة: الدفع. الـ Margin يقوم بدفع العناصر المجاورة بعيداً.

      2. التحكم في الجهات الأربع (Individual Sides)

      مثل الـ Padding تماماً، يمكنك تحديد المارجن لكل جهة على حدة.

      الخصائص المنفصلة

      • margin-top: لإبعاد العناصر التي فوقك.
      • margin-right: لإبعاد العناصر التي على يمينك.
      • margin-bottom: لإبعاد العناصر التي تحتك.
      • margin-left: لإبعاد العناصر التي على يسارك.
      مثال: إبعاد البطاقات عن بعضها
      
      .card {
          border: 1px solid black;
          
          /* دفع البطاقة للأسفل بمسافة 50 بيكسل */
          margin-top: 50px;
          
          /* إبعاد أي شيء على اليسار بمسافة 20 بيكسل */
          margin-left: 20px;
      }
      

      3. الاختصار (Shorthand) - نفس قواعد Padding

      نستخدم نفس قاعدة "الساعة" التي تعلمناها في درس الـ Padding. الترتيب يبدأ من الأعلى ويدور يميناً.

      تذكير سريع بالحالات

      • 4 قيم: margin: 10px 20px 30px 40px; (فوق، يمين، تحت، يسار).
      • 3 قيم: margin: 10px 50px 20px; (فوق، يمين/يسار، تحت).
      • 2 قيم: margin: 20px 50px; (فوق/تحت، يمين/يسار).
      • 1 قيمة: margin: 20px; (من جميع الجهات).

      نصيحة للمحترفين: إذا كنت تريد تحريك عنصر لليمين قليلاً، لا تستخدم position، بل استخدم ببساطة margin-left.

      4. السحر الحقيقي: التوسط التلقائي (margin: auto)

      هذا هو الاستخدام الأشهر للـ Margin. كيف تجعل صندوقاً (div) يظهر في منتصف الصفحة أفقياً بالضبط؟

      الحل يكمن في القيمة السحرية auto. عندما تعطي العنصر مارجن auto من اليمين واليسار، فإن المتصفح يقوم بحساب المساحة الفارغة المتبقية ويقسمها بالتساوي بين اليمين واليسار.

      شروط نجاح التوسط

      لكي تعمل margin: auto، يجب توفر شرطين:

      1. يجب أن يكون للعنصر عرض محدد (width). (لأنه لو كان العرض 100%، لن تكون هناك مساحة فارغة لتقسيمها!).
      2. يجب أن يكون العنصر من نوع Block.
      كود توسيط العناصر (Center Div)
      
      .container {
          width: 80%;       /* يجب تحديد عرض أقل من 100% */
          margin-left: auto;  /* خذ كل المساحة المتبقية يساراً */
          margin-right: auto; /* خذ كل المساحة المتبقية يميناً */
          
          /* الاختصار الشهير: */
          margin: 0 auto; /* 0 فوق وتحت، وتلقائي يمين ويسار */
          
          background-color: lightgray;
      }
      

      5. الهوامش السلبية (Negative Margins) - القوة الخفية

      هل تعلم أن الـ Margin يقبل أرقاماً سالبة؟ (مثلاً -20px). الـ Padding لا يقبل ذلك أبداً.

      ماذا يفعل المارجن السالب؟

      بدلاً من "دفع" العناصر بعيداً، يقوم المارجن السالب بـ "سحب" العناصر لتقترب أكثر، أو حتى لتتداخل فوق بعضها البعض (Overlap).

      • margin-top: -20px;: يسحب العنصر للأعلى، مما قد يجعله يركب فوق العنصر الذي قبله.
      • margin-left: -10px;: يسحب العنصر لليسار خارج حدوده الطبيعية.
      مثال: تداخل الصور
      
      .profile-pic {
          border: 5px solid white;
          
          /* هذا يسحب الصورة للأعلى لتغطي جزءاً من العنصر الذي فوقها */
          /* مثل صور البروفايل في فيسبوك التي تتداخل مع الغلاف */
          margin-top: -50px; 
      }
      

      6. ظاهرة انهيار الهوامش (Margin Collapse)

      هذه ظاهرة تربك المبتدئين وتجعلهم يظنون أن الـ CSS معطل. تحدث فقط في الهوامش العمودية (فوق وتحت).

      ما هي القصة؟

      إذا كان لديك عنصر (A) تحته margin-bottom: 30px.

      وتحته مباشرة عنصر (B) فوقه margin-top: 20px.

      المنطق يقول أن المسافة بينهما يجب أن تكون المجموع (30 + 20 = 50px). ولكن هذا خطأ!

      في CSS، الهوامش العمودية "تنهار" وتندمج، وينتصر الرقم الأكبر فقط. إذن المسافة ستكون 30px فقط.

      الحكمة: المسافة بين عنصرين عموديين هي قيمة المارجن الأكبر بينهما، وليست مجموعهما.

      7. مقارنة نهائية: متى Margin ومتى Padding؟

      السؤال الأزلي. إليك الجدول الذي يحسم الأمر.

      الحالة استخدم Padding استخدم Margin
      أريد إبعاد العنصر عن العناصر الأخرى المجاورة له. ✅ (نعم)
      أريد مسافة بين النص والحدود (Border). ✅ (نعم)
      أريد أن تكون المساحة ملونة بنفس لون الخلفية. ✅ (نعم) ❌ (المارجن شفاف دائماً)
      أريد تحريك العنصر للتوسط (Center). ✅ (margin: auto)
      أريد جعل العنصرين يتداخلان (Overlap). ✅ (مارجن سالب)

      الخلاصة: الـ Padding هو "بطن" العنصر (داخلي)، والـ Margin هو "التباعد الاجتماعي" (خارجي).

      شرح padding في CSS

      التباعد الداخلي للعناصر padding

      هي المسافة التي تفصل "محتوى العنصر" (سواء كان نصاً أو صورة) عن "حدود العنصر" (Border). في هذا الدرس الضخم، سنتعلم كيف نتحكم في هذه المسافات بكل دقة واحترافية.

      1. ما هو الـ Padding ببساطة؟

      الـ Padding هو المساحة الموجودة داخل العنصر.

      • تخيل صندوقاً كرتونياً (Border).
      • بداخله هدية (Content).
      • الفلين أو الإسفنج الذي تضعه حول الهدية لحمايتها هو الـ Padding.

      ملاحظة هامة جداً: لون الـ Padding هو نفسه لون خلفية العنصر (Background Color). إذا كانت خلفية الزر حمراء، فالـ Padding سيكون أحمر أيضاً.

      2. التحكم في كل جهة بمفردها (الطريقة التفصيلية)

      يمكنك التحكم في مساحة الحاشية لكل جهة من الجهات الأربع (فوق، يمين، تحت، يسار) بشكل مستقل تماماً.

      الخصائص الأربع

      • padding-top: المسافة العلوية.
      • padding-right: المسافة اليمنى.
      • padding-bottom: المسافة السفلية.
      • padding-left: المسافة اليسرى.
      مثال (1): تحديد الجهات يدوياً
      
      .box {
          background-color: lightblue;
          border: 2px solid blue;
          
          /* أريد مسافة كبيرة من فوق، وصغيرة من الجوانب */
          padding-top: 50px;
          padding-right: 20px;
          padding-bottom: 50px;
          padding-left: 20px;
      }
      

      3. الاختصار السحري (The Shorthand Property)

      بدلاً من كتابة 4 أسطر كود، يمكنك كتابة سطر واحد فقط باستخدام الخاصية padding. ولكن، طريقة قراءة القيم تعتمد على "كم رقم ستكتب".

      تذكر دائماً: الترتيب يبدأ من الساعة 12 (فوق) ويدور مع عقارب الساعة (يمين، تحت، يسار).

      أ. الحالة الأولى: 4 قيم (لكل الجهات)

      الترتيب: فوق - يمين - تحت - يسار (Top Right Bottom Left).

      padding: 10px 20px 30px 40px;

      • 10px (فوق)
      • 20px (يمين)
      • 30px (تحت)
      • 40px (يسار)

      ب. الحالة الثانية: 3 قيم (نادراً ما تستخدم)

      الترتيب: فوق - (يمين ويسار) - تحت.

      padding: 10px 50px 20px;

      • 10px (فوق)
      • 50px (يمين ويسار معاً)
      • 20px (تحت)

      ج. الحالة الثالثة: قيمتان (الأكثر استخداماً)

      الترتيب: (فوق وتحت) - (يمين ويسار).

      padding: 20px 50px;

      • 20px (فوق وتحت)
      • 50px (يمين ويسار)

      هذه الطريقة مثالية للأزرار (Buttons).

      د. الحالة الرابعة: قيمة واحدة (للجميع)

      padding: 20px;

      تعني 20px من كل الجهات الأربع.

      مثال شامل للاختصارات
      
      /* 1. مسافات متساوية للجميع */
      .card {
          padding: 20px;
      }
      
      /* 2. زر: نريد مسافة جانبية أكبر من العلوية */
      .btn {
          /* 10 بيكسل فوق وتحت، 30 بيكسل يمين ويسار */
          padding: 10px 30px; 
      }
      
      /* 3. تحكم كامل */
      .weird-box {
          padding: 10px 5px 15px 20px; /* فوق يمين تحت يسار */
      }
      

      4. الفرق القاتل بين Padding و Margin

      المبتدئون يخلطون بينهما لأن كلاهما "مسافة". لكن الفرق جوهري.

      وجه المقارنة Padding (حاشية) Margin (هامش)
      المكان داخل العنصر (بين المحتوى والإطار). خارج العنصر (حول الإطار من الخارج).
      لون الخلفية يتأثر بلون خلفية العنصر (يأخذ نفس اللون). دائماً شفاف (Transparent)، يظهر ما تحته.
      التشبيه وزنك الزائد (أنت تكبر وحجمك يكبر). المسافة الشخصية (Personal Space) لكي لا يلمسك أحد.

      اختبار سريع: إذا كان لديك زر لونه أحمر، وتريد تكبير الزر نفسه ليكون ضخماً، هل تستخدم margin أم padding؟
      الإجابة: Padding (لأنه سيأخذ اللون الأحمر ويكبر الزر). المارجن سيبعد الزر عن جيرانه فقط.

      5. تأثير Padding على حجم الصندوق (Box Sizing)

      هذه المعلومة تجعل المحترفين يبكون أحياناً. افتراضياً، الـ Padding يزيد من عرض العنصر.

      إذا قلت: width: 100px; ثم قلت padding: 20px; (من الجهتين)، فإن العرض الكلي سيصبح 140px (100 + 20 يمين + 20 يسار).

      لحل هذه المشكلة وجعل الـ 100px تتضمن الـ Padding بداخلها، نستخدم الكود السحري التالي:

      * {
          box-sizing: border-box;
      }
      

      بهذا الكود، إذا كان العرض 100 والبادينج 20، سيقوم المتصفح بتقليص المحتوى ليكون 60، ليبقى الإجمالي 100 كما طلبت.

      أمثلة عملية مكثفة

      مثال: تصميم بطاقة خبر (News Card)
      
      .news-card {
          background-color: white;
          border: 1px solid #ccc;
          
          /* بدون بادينج، النص سيلتصق بالإطار */
          padding: 20px; 
          
          /* هذا يجعل النص مرتاحاً داخل البطاقة */
      }
      
      .news-title {
          /* مسافة صغيرة أسفل العنوان فقط */
          padding-bottom: 10px;
      }
      
      مثال: قائمة تنقل (Navigation Menu)
      
      .nav-link {
          background-color: #333;
          color: white;
          
          /* البادينج هنا يصنع شكل الزر */
          /* 15 فوق وتحت، 25 يمين ويسار */
          padding: 15px 25px;
          
          display: inline-block; /* لكي يعمل البادينج بشكل صحيح */
      }
      

      التحكم في سمك الخط Css

      التحكم في سُمك الخط (font-weight)

      في هذا الدرس سنتعلم كيفية التحكم في "سُمك" أو "وزن" الخط. تخيل أنك تكتب بقلم رصاص؛ يمكنك الكتابة بخط خفيف جداً، أو الضغط على القلم ليصبح الخط عريضاً وواضحاً، أو استخدام قلم تخطيط (Marker) ليكون الخط سميكاً جداً. في CSS، الخاصية المسؤولة عن هذا الأمر تسمى font-weight. هي التي تجعل العناوين بارزة والنصوص العادية خفيفة ومريحة للقراءة.

      1. الطريقة السهلة: الكلمات (normal و bold)

      كمبتدئ، ستحتاج في 90% من الحالات إلى قيمتين فقط: "خط عادي" و "خط عريض". لغة CSS توفر كلمات سهلة جداً لهذا الغرض.

      القيم الأساسية

      • normal (عادي): هذا هو الشكل الافتراضي للنص. إذا لم تكتب شيئاً، سيظهر الخط بهذا الشكل. نستخدمه للفقرات والنصوص الطويلة.
      • bold (عريض): يجعل الخط سميكاً وواضحاً. نستخدمه للعناوين أو لتمييز كلمة مهمة وسط السطر.
      مثال (1): استخدام الكلمات المباشرة
      
      /* جعل جميع الفقرات بخط عادي */
      p {
          font-weight: normal; 
      }
      
      /* جعل العناوين بخط عريض */
      h1 {
          font-weight: bold;
      }
      
      /* جعل كلاس معين بخط عريض */
      .important-text {
          font-weight: bold;
      }
      

      2. الطريقة الدقيقة: الأرقام (من 100 إلى 900)

      أحياناً كلمة bold لا تكفي. قد تريد خطاً سميكاً جداً (Heavy)، أو خطاً رفيعاً جداً (Thin). هنا نستخدم الأرقام.

      الأرقام تبدأ من 100 (أنحف شيء) وتنتهي بـ 900 (أسمك شيء).

      أهم رقمين يجب حفظهما

      • 400: تعني خط عادي (تساوي normal).
      • 700: تعني خط عريض (تساوي bold).

      معلومة هامة: لكي تعمل الأرقام (مثل 100 أو 900) بشكل صحيح، يجب أن يكون "نوع الخط" الذي تستخدمه يدعم هذه الأوزان. (خطوط جوجل مثلاً توفر لك هذه الخيارات).

      3. أمثلة عملية كثيرة (أكواد جاهزة)

      إليك مجموعة من الأمثلة لتدرجات مختلفة في سُمك الخط، يمكنك نسخها وتجربتها.

      مثال (2): تدرجات الأوزان بالأرقام
      
      /* 1. خط رفيع جداً (Thin) */
      .thin-text {
          font-weight: 100;
      }
      
      /* 2. خط خفيف (Light) - ممتاز للنصوص الفرعية */
      .light-text {
          font-weight: 300;
      }
      
      /* 3. خط عادي (Normal) - مثل القيمة 400 */
      .regular-text {
          font-weight: normal; /* أو تكتب 400 */
      }
      
      /* 4. خط متوسط السماكة (Medium) */
      .medium-text {
          font-weight: 500;
      }
      
      /* 5. خط عريض (Bold) - مثل القيمة 700 */
      .bold-text {
          font-weight: bold; /* أو تكتب 700 */
      }
      
      /* 6. خط سميك جداً (Black/Heavy) - للعناوين الضخمة */
      .heavy-text {
          font-weight: 900;
      }
      

      اختر - إذا أردت كتابة نص بوزن "عادي" باستخدام الأرقام، ماذا تكتب؟
      (أ) font-weight: 100. (ب) font-weight: 400. (ج) font-weight: 700. (د) font-weight: 900.

      الإجابة: (ب) font-weight: 400. (لأن 400 هي الرقم المرادف لـ normal).

      جدول المقارنة الشامل

      هذا الجدول يلخص لك كل شيء ليكون مرجعاً سريعاً أمامك.

      القيمة (الرقم) الاسم (الوصف) متى نستخدمه؟
      100 Thin (نحيل) للتصاميم العصرية جداً والعناوين الكبيرة الرقيقة.
      300 Light (خفيف) للنصوص الهامشية أو الوصف البسيط.
      400 Normal (عادي) الخيار الأساسي لأي نص تقرأه (مثل هذا النص).
      500 Medium (متوسط) عندما تريد الخط أسمك قليلاً من العادي لكن ليس عريضاً.
      700 Bold (عريض) للعناوين الرئيسية، الأزرار، والكلمات المهمة.
      900 Black (ضخم) للعناوين الضخمة جداً لجذب الانتباه بقوة.

      Pages