اذهب إلى المحتوى

السؤال

نشر

السلام عليكم.

في الكود الموجود تحت, ألاحظ أن العنصر <div> ذو الكلاس logo-container يتناقص طوله بعد إعطائه خاصية display: flex لكي يكون ملاصقا لطول صورة اللوجو,

فأسئلتي هي :

لماذا حدث ما حدث بعد إعطاء هذا الـ <div> خاصية display: flex ؟ و لماذا هذا الكلاس لم يكن طوله ملاصقا للصورة من البداية مع أنني لم أعطيه أي طول معين ؟

الأكواد المقصودة :

<header>
            <div class="logo-container">
                <img src="https://keenthemes.com/metronic/assets/images/logos/logo-white.svg">
            </div>
            <nav>
                <ul>
                    <li>Home</li>
                    <li>Metronic</li>
                    <li>Hire Us</li>
                    <li>Buy Now</li>
                </ul>
            </nav>
        </header>
header {
    display: flex;
    align-items: center;
}
header .logo-container {
    flex: 1;
}
nav {
    flex: 2
}
nav ul {
    list-style: none;
    display: flex;
}

/*.logo-container {
	display: flex;
}*/

 

Recommended Posts

  • 0
نشر

سبب حدوث ذلك هو أن الصور تكون من نوع inline بشكل إفتراضي وبالتالي يتم حساب طولها من خلال ما يسمى بطول السطر line-height وهذه القيمة تختلف من متصفح لآخر، وبالتالي يمكن حل هذه المشكلة بطريقتين:

  1. يمكنك أن تحدد طول السطر line-height بقيمة 0 للعنصر .logo-container، كالتالي:
    .logo-container {
      line-height: 0;
    }
  2. كما يمكن حل المشكلة من خلال إضافة الخاصية display للصورة بقيمة block، كالتالي:
    img {
      display: block;
    }

    وذلك لأن في العناصر من نوع inline، تُستخدم خاصية line-height لحساب ارتفاع المحتوى نفسه. بينما في العناصر من نوع block، تُستخدم الخاصية line-height لتحديد الحد الأدنى لارتفاع المحتوى داخل العنصر.

يمكنك أن تلقي نظرة على توثيق الخاصية line-height من خلال موسوعة حسوب لمعرفة المزيد عن هذه الخاصية.

  • 0
نشر
بتاريخ 12 ساعات قال سامح أشرف:

سبب حدوث ذلك هو أن الصور تكون من نوع inline بشكل إفتراضي وبالتالي يتم حساب طولها من خلال ما يسمى بطول السطر line-height وهذه القيمة تختلف من متصفح لآخر، وبالتالي يمكن حل هذه المشكلة بطريقتين:

  1. يمكنك أن تحدد طول السطر line-height بقيمة 0 للعنصر .logo-container، كالتالي:
    
    .logo-container {
      line-height: 0;
    }
  2. كما يمكن حل المشكلة من خلال إضافة الخاصية display للصورة بقيمة block، كالتالي:
    
    img {
      display: block;
    }

    وذلك لأن في العناصر من نوع inline، تُستخدم خاصية line-height لحساب ارتفاع المحتوى نفسه. بينما في العناصر من نوع block، تُستخدم الخاصية line-height لتحديد الحد الأدنى لارتفاع المحتوى داخل العنصر.

يمكنك أن تلقي نظرة على توثيق الخاصية line-height من خلال موسوعة حسوب لمعرفة المزيد عن هذه الخاصية.

شكرا جزيلا, لماذا بعد إعطاء ذلك الـ <div> خاصية display: flex, الصورة نقص إرتفاعها ؟

  • 0
نشر
بتاريخ 6 ساعات قال مصطفى اوريك:

شكرا جزيلا, لماذا بعد إعطاء ذلك الـ <div> خاصية display: flex, الصورة نقص إرتفاعها ؟

ذلك لأن القيمة flex مثلها مثل block و inline و inline-block، تقوم بالتأثير على العناصر بشكل معين، فعلى سبيل المثال، الخاصية display: block تجعل العناصر تترتب أسفل بعضهم البعض، بينما الخاصية inline تجعل العناصر بجانب بعضهم البعض لكن لا يمكنك أن تحدد طول height للعناصر، بينما القيمة inline-block تجعل العناصر بجانب بعضهم البعض ويمكنك أن تحدد طول height ... إلخ. وكذلك القيمة flex تجعل العنصر ينكمش على محتوياته بشكل إفتراضي وتجعل المحتويات (العناصر الأبناء بجانب بعضهم البعض)، وبالطبع يمكن تغير هذا الأمر من خلال بعض خصائص flexbox مثل الخاصية flex أو الخاصية flex-direction.

يمكنك معرفة المزيد عن خصائص Flexbox في CSS من خلال هذه المقالات:

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...