box-sizing هي خاصية تمكننا من الحفاظ على نفس طول وعرض المحدد لعنصر معين في HTML رغم تأثير خاصيات أخرى مثل Padding و border و غيرها
لتوضيح
{
box-sizing: border-box; /* هذه الحالة تحافظ على حجم الطول والعرض */
box-sizing: content-box; /* هذه الحالة لا تحافظ على حجم الطول والعرض الأصلي */
}
أنصحك بمتابعة الأمثلة كاملة لكي تحصل على فكرة شاملة حول هذه الخاصية
المثال الأول
في هذا المثال سوف نقوم بإنشاء عنصرين من div الأولى سوف نطبق عليها border-box في box-sizing و div الثانية لن نطبق عليها الأمر وسوف نقوم بوضع padding بقيمة مرتفعة لترى الفرق بينهم بالعين المجردة .
<div id="div1"></div>
<div id="div2"></div>
#div1{
width: 200px;
height: 80px;
padding: 50px;
background-color:#006000;
box-sizing: border-box;
}
#div2{
width: 200px;
height: 80px;
padding: 50px;
background-color:#006000;
box-sizing: content-box; /* اختيارية وقد تكون اجبارية اذا كنت وضعت الخاصية الأولى على كل العناصر */
}
div1
div2
المثال الثاني
في هذا المثال سوف نصنع مشكل ونحله ومن خلال هذا الأمر سوف يتبين لك اهمية خاصية box-sizing وستعلم انها خاصية لا يمكن الإستغناء عنها في برمجة CSS بدون ان اطيل تابع المشكلة وحلها
المشكلة
<section>
<div id="div1"></div>
<div id="div2"></div>
</section>
section{
display: inline;
width:100%;
height: auto;
}
#div1{
background-color: #006000;
width: 70%;
height: 20px;
float: left;
}
#div2{
background-color: #600000;
height: 20px;
width: 30%;
float: left;
border: solid 2px;
}
كما نلاحظ لقد أثر الإطار border الذي اضفناه بقيمة 2px فقط على الحجم الأصلي ل div2 مما ادى الى عدم وضعها في نفس سطر الوجود فيه div1 ولهذا في التجربة الثانية من المثال الثاني سوف ترى بنفسك ما سيحصل عند اضافة box-sizing الى div2 .
<section>
<div id="div1"></div>
<div id="div2"></div>
</section>
section{
display: inline;
width:100%;
height: auto;
}
#div1{
background-color: #006000;
width: 70%;
height: 20px;
float: left;
}
#div2{
background-color: #600000;
height: 20px;
width: 30%;
float: left;
border: solid 2px;
box-sizing: border-box;
}
كما ترى لم يحدث تغيير لقيمة الطول والعرض وهذا ما جعل div2 تكون في نفس السطر مع div1 اتمنى ان يكون الشرح واضح وشكرا على القراءة .
Tags:
CSS