بطريقة اوتماتيكية كما الفليكس بوكس وليس بحساب العرض وتقسيمه عليهم.
الflex-basis or grow for example
يمكنك إستخدام الخاصية flex للعناصر الأبناء والتي ستعطي للجميع نفس المساحة بالتساوى لتصبح جميع العناصر معا لها نفس عرض العنصر الأب .
وهذا الكود كمثال لك :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .parent { display: flex; } .child { flex: 1; border: 1px solid #000; } </style> </head> <body> <div class="parent"> <div class="child">عنصر 1</div> <div class="child">عنصر 2</div> <div class="child">عنصر 3</div> </div> </body> </html>
هنا بفضل الخاصية flex:1 للعناصر الأبناء ستجد أن تم تقسيم العرض عليهم جميعا .
ولكن من الصورة التي أرفقتها يبدوا أنك تريد وضع صور وهنا يجب عليك تنسيق الصور لتأخذ عرض 100% حتي تأخذ عرض العنصر الأب لها والذي هو العنصر الإبن لل flexbox وهذا مثال ليوضح لك :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .parent { display: flex; } .child { flex: 1; } .child img { width: 100%; height: 100px; } </style> </head> <body> <div class="parent"> <div class="child"><img src="1.jpg" alt=""></div> <div class="child"><img src="2.jpg" alt=""></div> <div class="child"><img src="3.jpg" alt=""></div> </div> </body> </html>
وبهذا ستجد أنه تم تقسيم مساحة الأب للأبناء بالتساوي .
ولمعرفة تفاصيل أكثر حول تلك الخاصية يمكنك زيارة الرابط التالي لموسوعة حسوب لشرح أفضل .
فهمتك شكرا جزيلا، ولكن الا يعني هذا اننا نستخدم الخاصية f-grow ؟
+ كيف اخبره ان يعمل break للسطر عند عدد ابناء معين .(css) .
نعم بالفعل هذه الخاصية هي short hand لثلاث خصائص flex-grow و flex-shrink و flex-basis يمكنك وضع الثلاث قيم معا في سطر واحد .
وما قمنا به هو وضع 1 لقيمة flex-grow و يمكنك إستبدال flex ب flex-grow إذا أردت .
أما بخصوص عمل break بعد عدد عناصر معين يمكنك إستخدام الخاصية flex-basis هكذا :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .container { display: flex; flex-wrap: wrap; } .item { flex-grow: 1; flex-basis: 30%; box-sizing: border-box; padding: 10px; border: 1px solid #000; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> </div> </body> </html>
لاحظ هنا إستخدمنا الخاصة flex-basis ووضعناها 30% أي أننا نريد ثلاث عناصر فقط في الصف ويمكنك تحديد النسبة بناء على عدد العناصر التي تريدها ويمكنك إستخدام ال short hand كالتالي :
.item { flex: 1 1 30%; box-sizing: border-box; padding: 10px; border: 1px solid #000; }
وهذه هي النتيجة التي ستحصل عليها
التعليقات