استفاده از CSS برای کشیدن یک عنصر به عرض موجود

css stretch element to available width
20 آبان 1403

در CSS، یکی از روش‌های ساده که می‌توان برای کشش یک عنصر به عرض کامل یا موجود صفحه استفاده کرد، تنظیم ویژگی‌هایی مانند width یا max-width است. اغلب اوقات نیاز داریم که عناصر وب‌سایت به گونه‌ای باشند که با تغییر عرض صفحه یا پنجره مرورگر به طور خودکار تنظیم شوند. این نیاز به خصوص در طراحی‌های پاسخ‌گو یا ریسپانسیو نمایان می‌شود.

یکی از معمول‌ترین راه‌ها برای این کار استفاده از ویژگی width: 100%; است. با این تنظیم، عنصر به تمام عرض والد خود کشیده می‌شود. این روش بسیار کاربری و ساده است، چرا که اکثر مرورگرها به خوبی از آن پشتیبانی می‌کنند. اما باید به خاطر داشت که اگر عنصر دارای padding یا border باشد، این موضوع می‌تواند باعث ایجاد اسکرول افقی ناخواسته شود.

برای جلوگیری از چنین مشکلاتی، می‌توانید از box-sizing: border-box; استفاده کنید. این ویژگی باعث می‌شود محاسبات عرض و ارتفاع شامل padding و border باشند. به این ترتیب، عرض کلی عنصر از مقدار اعلام شده بیشتر نخواهد شد، حتی اگر padding یا border وجود داشته باشد.

روش دیگر، استفاده از flexbox است. اگر والد یک عنصر به صورت flex تنظیم شود، می‌توان عنصر را با استفاده از flex: 1; به گونه‌ای تنظیم کرد که تمام فضاهای موجود در آن والد را پر کند. این روش مخصوصاً در مواقعی که نیاز به پشتیبانی از طراحی‌های پیچیده‌تر و ریسپانسیو دارید، مورد استفاده قرار می‌گیرد.

مثال‌هایی از کد CSS برای کشیدن یک عنصر به عرض موجود

 
<style>
  .stretch {
    width: 100%;
    box-sizing: border-box;
  }

  .flex-container {
    display: flex;
  }

  .flex-item {
    flex: 1;
  }
</style>

شرح خط به خط کد

.stretch: تعیین کلاس برای کشیدن عنصر به عرض 100%
width: 100%;: تنظیم عرض کامل برای عنصر
box-sizing: border-box;: محاسبه عرض با در نظر گرفتن padding و border
.flex-container: تعیین کلاس برای استفاده از مدول flex
display: flex;: تنظیم نمایش به صورت flex در والد
.flex-item: تعیین کلاس برای فرزندانی که باید کشیده شوند
flex: 1;: تنظیم فرزند برای پر کردن تمام فضای موجود در والد

سوالات متداول

؟

چگونه عرض یک عنصر را بدون ایجاد اسکرول افقی تنظیم کنم؟

؟

چرا از flexbox برای کشیدن عناصر استفاده کنیم؟