چرا overflow-y: auto باعث می‌شود overflow-x پنهان شود؟

why does overflow y auto cause overflow x to be hidden
20 آبان 1403

مفهوم overflow در CSS

در CSS، ویژگی overflow برای کنترل چگونگی نمایش محتوایی که از محدوده عنصر خارج می‌شود، استفاده می‌شود. حالت‌های مختلف overflow شامل visible, hidden, scroll, و auto هستند. overflow-x و overflow-y به ترتیب برای کنترل محتوای اضافی به صورت افقی و عمودی استفاده می‌شوند.

ارتباط بین overflow-x و overflow-y

هنگامی که overflow-y: auto تنظیم می‌شود، مرورگر به صورت پیشفرض تلاش می‌کند تا محتوای اضافی را در جهت عمودی مدیریت کند. با این حال، در برخی موارد، این تنظیم باعث می‌شود که محتوا در جهت افقی هم نمایش داده نشود. این به این دلیل است که مرورگرها برای بهینه‌سازی چارچوب‌بندی صفحه‌ها، ترجیح می‌دهند محتوا را در یک جهت محدود کنند و نیازی به اسکرول افقی نباشد.

نحوه عملکرد overflow-y: auto

هنگامی که overflow-y روی auto تنظیم می‌شود، مرورگر تنها زمانی که محتوا بیش از حد شود، اسکرول‌بار عمودی را فعال می‌کند. در حالت عادی، اگر هیچ محتوای اضافی وجود نداشته باشد، هیچ اسکرول‌باری ظاهر نمی‌شود. با این حال، این ویژگی ممکن است به طور غیرمستقیم overflow-x را تحت تاثیر قرار دهد، مخصوصاً زمانی که عرض محتوای داخلی به نسبت بیشتر از محتوای عمودی باشد.

راهکارهایی برای کنترل بهتر overflow

اگر تمایلی به پنهان شدن اسکرول افقی ندارید، می‌توانید از تنظیمات overflow-x به صورت جداگانه استفاده کنید. به عنوان مثال، می‌توانید به صراحت overflow-x: visible; را تنظیم کنید تا مطمئن شوید محتوا در جهت افقی دیده می‌شود.

<style>
  .content {
    width: 200px;
    height: 150px;
    border: 1px solid black;
    overflow-x: visible;
    overflow-y: auto;
  }
</style>
<div class="content">
  <p>این یک متن نمونه‌ با محتوای بیشتر از حد معمول در یک باکس مشخص شده است.</p>
  <p>اگر عرض این باکس کافی نباشد، این متن باید باعث شود که قابلیت اسکرول اعمال شود.</p>
</div>

توضیح کد

<style>
تعریف استایل‌های CSS
.content
انتخاب‌گر کلاس برای عنصری که می‌خواهیم ویژگی overflow را به آن اعمال کنیم
width: 200px;
عرض عنصر را به 200 پیکسل محدود می‌کند
height: 150px;
ارتفاع عنصر را به 150 پیکسل محدود می‌کند
border: 1px solid black;
تنظیم یک حاشیه مشکی برای عنصر
overflow-x: visible;
اجازه می‌دهد که محتوای اضافی در جهت افقی نمایش داده شود
overflow-y: auto;
فعال‌سازی اسکرول‌بار عمودی تنها در صورت محتوای اضافی
</style>
پایان بخش استایل
<div class="content">
تعریف ساختار HTML برای نشان دادن نتایج
<p>
استفاده از عناصر پاراگراف برای افزودن محتوای متنی

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

؟

چرا overflow-x به طور خودکار پنهان می‌شود؟

؟

چگونه می‌توانیم اسکرول افقی را فعال کنیم؟

؟

آیا راهکاری برای جلوگیری از هم‌پوشانی وجود دارد؟