با سلام خدمت منتورهای گرامی.....من راجب مفهوم box-sixzing=border-box یه کم گیج شدم:( میشه روشنم کنید؟ مچکر
سلام،
در حالت پیشفرض، CSS از box-sizing: content-box استفاده میکنه. این یعنی وقتی که عرض (width) یا ارتفاع (height) یه المان رو مشخص میکنی، فقط اندازهی محتوا (content) در نظر گرفته میشه و پدینگ (padding) و حاشیه (border) به اون اضافه میشه. این باعث میشه که اندازهی کلی المان بزرگتر از چیزی باشه که توی CSS نوشتهای.
مثال با content-box:
This is a test.
توی این مثال، عرض کلی دیو اینجوری حساب میشه:
عرض محتوا: 200px
پدینگ (چپ و راست): 20px + 20px = 40px
حاشیه (چپ و راست): 10px + 10px = 20px
پس عرض کلی دیو میشه: 200px + 40px + 20px = 260px
حالا، اگه بخوای عرض کلی دیو دقیقاً همون 200px باشه و پدینگ و حاشیه هم توش حساب بشه، باید از box-sizing: border-box استفاده کنی.
وقتی که box-sizing: border-box رو استفاده میکنی، اندازهی کلی المان (عرض و ارتفاع) شامل محتوا، پدینگ و حاشیه میشه. یعنی اندازهای که توی CSS مینویسی، همون اندازهایه که المان اشغال میکنه.
مثال با border-box:
This is a test.
توی این مثال، عرض کلی دیو دقیقاً 200px میشه چون:
عرض محتوا + پدینگ + حاشیه = 200px
اگه میخوای این ویژگی برای همهی المانهای صفحه استفاده بشه، میتونی این کد رو به CSS اضافه کنی:
* {
box-sizing: border-box;
}
با این کار، همهی المانها از این قانون پیروی میکنن و اندازهها دقیقتر میشن.
محسن موحد۱۵ تیر ۱۴۰۳، ۰۲:۲۳
استاد گرامی فرمودید در هر دوصورت مجموع برابر با عرض محتوا +پدینگ + حاشیه شده!! تفاوتشون رو نفهمیدم....
rojin۱۶ تیر ۱۴۰۳، ۱۶:۵۳
ببینید در CSS، هر المان یه جعبه (box) داره که شاملِ: content padding border margin میشه. وقتی میخواید ابعاد (طول و عرض) یک المان رو تعیین کنید حالتهای مختلفی وجود داره که مهمترینشون: content-box و border-box هستن. بهطور پیشفرض، همه المانها تو CSS از box-sizing: content-box; استفاده میکنن. این یعنی وقتی مثلاً عرض یه المان رو 200 پیکسل تعیین میکنید، فقط برای محتوا (content) این المان 200 پیکسل فضا در نظر گرفته میشه. حالا اگه پدینگ و حاشیه هم داشته باشید، به این 200 پیکسل اضافه میشه. فرض کنید یک width: 200px به المانتون دادید و یک padding: 10px اگر box-sizing: content-box; باشه، عرض شما چند پیکسل میشه؟ یک پدینگ راست 10 پیکسل + پدینگ چپ 10 پیکسل به عرض المانتون اضافه میشه و عرض نهایی 220px اعمال میشه بهش. یعنی درواقع پدینگ و بوردر روی سایز نهایی المان شما تاثیر خواهد گذاشت، حتی اگه شما یک عرض ثابت براش ست کرده باشید. اما ما تو طراحی نمیخوایم همچین اتفاقی بیوفته و با نتایج غیرقابل پیشبینی مواجه شیم، اینجاست که مقدار border-box به کارمون میاد، ساده بگم اجازه نمیده مقدار پدینگ، بورد روی سایز اصلی المانمون که خودمون براش ست کردیم، اثر بذاره و دیزاینمون رو بهم بریزه. مثال زیر رو ببرید در vscode و در inspect دو حالت رو با هم مقایسه کنید: https://codepen.io/Sahar_Pashaei/pen/MWMWggV