CSS – پاکسازی (Clearfix)

تکنیک Clearfix یک روش است که اطمینان حاصل می‌کند محتوای یک کانتینر به درستی اطراف و حاوی المان‌های پراکنده (floated) داخل آن می‌شود. این تکنیک با اضافه کردن یک المان خالی به کانتینر، که هر دو طرف فلوت‌های چپ و راست را پاک می‌کند، از وقوع مشکلات طراحی جلوگیری می‌کند و به کانتینر اجازه می‌دهد تا گسترده شود و طرح آن را حفظ کند.

Clearfix کمک می‌کند تا مشکلاتی مانند فروریزش کانتینر، ارتفاع‌های نامتوازن، تداخل محتوا، ترازی نامنظم را جلوگیری کند.

این فصل، چگونگی استفاده از تکنیک clearfix را برای اطمینان از اینکه عناصر کانتینر به درستی المان‌های فلوت شده خود را دربر می‌گیرند، بررسی می‌کند.

همانطور که گفته شد، CSS clearfix مشکلات سرریز المان‌ها را از المان مورد نظر رفع می‌کند. سه ویژگی زیر برای این کار مورد استفاده قرار می‌گیرند:

  1. ویژگی Overflow و Float
  2. ویژگی Height
  3. ویژگی Clear

نمودار زیر تکنیک clearfix را به عنوان مرجع نشان می‌دهد:

With overflow & float Property

در این مثال، یک تصویر درون یک کانتینر قرار گرفته است که اندازه آن بزرگتر از ارتفاع کانتینر است، که باعث می‌شود تصویر از مرزهای کانتینر خارج شده و ممکن است طرح صفحه را به هم بزند.

<html>
<head>
<style>
    div {
        border: 2px solid #f0610e;
        padding: 5px;
        background-color: #86f00e;
    }
    .tutimg {
        float: right;
        border: 3px solid #f0610e;
    }
</style>
</head>
<body>
    <h2>Without clearfix</h2>
    <div>
        <img class="tutimg" src="images/tutimg.png" width="200" height="200">
        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet.
    </div>
</body>
</html>

در این مثال، تصویر با کلاس .tutimg به سمت راست شناور شده است (float: right;). این باعث می‌شود تصویر از جریان متن بیرون بیاید و ممکن است ارتفاع کانتینر را به گونه‌ای تغییر دهد که محتوای کانتینر با تصویر همپوشانی داشته باشد، که این امر می‌تواند به طرح صفحه آسیب بزند.

With overflow Property

برای حل مشکل اضافه شدن تصویر از مرزهای کانتینر، می‌توانیم به المان مربوطه خاصیت overflow: auto; را اعمال کنیم تا تصویر به طور کامل در داخل کانتینر قرار گیرد.

<html>
<head>
<style>
    div {
        border: 2px solid #f0610e;
        padding: 5px;
        background-color: #86f00e;
    }
    .tutimg {
        float: right;
        border: 3px solid #f0610e;
    }
    .custom-clearfix {
        overflow: auto;
    }
</style>
</head>
<body>
    <h2>With clearfix</h2>
    <div class="custom-clearfix">
        <img class="tutimg" src="images/tutimg.png" width="200" height="200">
        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet.
    </div>
</body>
</html>

در این مثال، به المان دارای کلاس .custom-clearfix خاصیت overflow: auto; اعمال شده است. این باعث می‌شود که هرگاه محتوای داخل کانتینر از ابعاد مشخص شده آن بیشتر شود، نوارهای اسکرول به کانتینر اضافه شود و کاربر بتواند با استفاده از آن به محتوای بیشتری دسترسی پیدا کند.

With height Property

می‌توانید نیز با تنظیم ارتفاع المان <div> مشابه ارتفاع تصویر شناور clearfix را به دست آورید.

<html>
<head>
<style>
    div {
        border: 2px solid #f0610e;
        padding: 10px;
        height: 120px;
        background-color: #86f00e;
    }
    .tutimg {
        float: right;
        border: 3px solid #f0610e;
    }
</style>
</head>
<body>
    <div>
        <img class="tutimg" src="images/tutimg.png" width="120" height="120">
        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet.
    </div>
</body>
</html>

در این مثال، ارتفاع المان <div> به ارتفاع مشخص شده‌ی تصویر شناور (120px) تنظیم شده است. این باعث می‌شود که المان <div> به اندازه کافی بزرگ شود تا تصویر شناور را در خود جای دهد و از مشکلات clearfix جلوگیری شود.

CSS Clear Property

در CSS، ویژگی clear تاثیری بر مفهوم float دارد و عناصر را پس از عناصر شناور جا می‌دهد به جای اینکه آن‌ها به بالا بروند تا فضای موجود را اشغال کنند. ویژگی clear برای عناصر شناور و غیر شناور قابل اعمال است.

مقادیر ممکن عبارتند از:

  • none: یک کلیدواژه که نشان می‌دهد عنصر به پایین حرکت نمی‌کند تا از عناصر شناور گذشته بپاشد.
  • left: یک کلیدواژه که نشان می‌دهد عنصر به پایین حرکت می‌کند تا از شناورهای سمت چپ گذشته بپاشد.
  • right: یک کلیدواژه که نشان می‌دهد عنصر به پایین حرکت می‌کند تا از شناورهای سمت راست گذشته بپاشد.
  • both: یک کلیدواژه که نشان می‌دهد عنصر به پایین حرکت می‌کند تا از همه شناورهای سمت چپ و راست گذشته بپاشد.
  • inline-start: یک کلیدواژه که نشان می‌دهد عنصر به پایین حرکت می‌کند تا از شناورهای سمت شروع بلوک خود، یعنی شناورهای سمت چپ در اسکریپت‌های ltr و شناورهای سمت راست در اسکریپت‌های rtl گذشته بپاشد.
  • inline-end: یک کلیدواژه که نشان می‌دهد عنصر به پایین حرکت می‌کند تا از شناورهای سمت پایان بلوک خود، یعنی شناورهای سمت راست در اسکریپت‌های ltr و شناورهای سمت چپ در اسکریپت‌های rtl گذشته بپاشد.

CSS clear – left Value

در مثال زیر، با استفاده از ویژگی clear:left برای عنصر مورد نظر، از clearfix استفاده شده است.

<html>
<head>
<style>
      .mainbody{
        border: 1px solid black;
        padding: 10px;
      }
      .left {
        border: 1px solid black;
        clear: left;
      }
      .aqua{
        float: left;
        margin: 0;
        background-color: aqua;
        color: #000;
        width: 20%;
      }
      .pink{
        float: left;
        margin: 0;
        background-color: pink;
        width: 20%;
      }
      p {
        width: 50%;
      }
  </style>
</head>
<body>
    <div class="mainbody">
      <p class="aqua">
       There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in ton the Internet.
    </p>
  <p class="pink">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
  <p class="left">This paragraph clears left.</p>
</div>
</body>
</html>

CSS clear – right Value

در مثال زیر، با استفاده از ویژگی clear:right برای عنصر مورد نظر، از clearfix استفاده شده است.

<html>
<head>
<style>
    .mainbody{
      border: 1px solid black;
      padding: 10px;
    }
    .right {
      border: 1px solid black;
      clear: right;
    }
    .aqua{
      float: right;
      margin: 0;
      background-color: black;
      color: #fff;
      width: 20%;
    }
    .pink{
      float: right;
      margin: 0;
      background-color: pink;
      width: 20%;
    }
    p {
      width: 50%;
    }
  </style>
</head>
<body>
    <div class="mainbody">
      <p class="aqua">
       There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in ton the Internet.
    </p>
  <p class="pink">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
  <p class="right">This paragraph clears right.</p>
</div>
</body>
</html>

CSS clear – both Value

در مثال زیر، با استفاده از ویژگی clear:both برای عنصر مورد نظر، از clearfix استفاده شده است.

<html>
<head>
<style>
    .mainbody{
      border: 1px solid black;
      padding: 10px;
    }
    .both {
      border: 1px solid black;
      clear: both;
    }
    .aqua{
      float: left;
      margin: 0;
      background-color: black;
      color: #fff;
      width: 20%;
    }
    .pink {
      float: right;
      margin: 0;
      background-color: pink;
      width: 20%;
    }
    p {
      width: 45%;
    }
  </style>
</head>
<body>
    <div class="mainbody">
      <p class="aqua">
       There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in ton the Internet.
    </p>
  <p class="pink">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
  <p class="both">This paragraph clears both.</p>
</div>
</body>
</html>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.