بطريقة اوتماتيكية كما الفليكس بوكس وليس بحساب العرض وتقسيمه عليهم.
ال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;
}
وهذه هي النتيجة التي ستحصل عليها
التعليقات