۴ rojin
خدا قوت :)
سحر پاشائی حل شده توسط سحر پاشائی

با سلام خدمت منتورهای گرامی.....من راجب  مفهوم 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

بهترین پاسخ
سحر پاشائی ۱۶ تیر ۱۴۰۳، ۱۷:۴۱

مچکرم خانوم پاشائی عزیز خیلی لطف کردین :)

rojin ۱۷ تیر ۱۴۰۳، ۱۰:۰۴