loading...
طراحی وب- برنامه نویسی
برنامه نویس بازدید : 33 پنجشنبه 27 تیر 1398 نظرات (0)

خاصیت float

float در لغت به معنی «شناور شدن/بودن» است. از این خاصیت برای موقعیت دهی به عناصر مختلف صفحه استفاده می شود و یکی از مقادیر زیر را می گیرد:

  • left: در این حالت عنصر مورد نظر به سمت چپ نگه دارنده اش1 (container) می رود یا به قولی در سمت چپ شناور می شود
  • right: در این حالت عنصر مورد نظر به سمت راست نگه دارنده اش (container) می رود یا به قولی در سمت راست شناور می شود
  • none: در این حالت عنصر مورد نظر اصلا شناور نمی شود و همان جایی که هست می ماند (حالت پیش فرض همین مورد است)
  • inherit: در این حالت عنصر مورد نظر مقدار float را از عنصر پدرش به ارث می برد.

1- منظور از container یا نگه دارنده، همان پدر عنصر است. اگر عنصر x درون عنصرِ y قرار داشته باشد آنگاه عنصر y نگه دارنده یا پدر عنصر x محسوب می شود.

بیایید از هر کدام مثالی بزنیم!

مثال هایی از float

 float: right 

در این مثال می خواهیم به تصویرمان بگوییم که به سمت راست متن برود:

مشاهده ی خروجی در JSBin

 float: left 

در این مثال می خواهیم به تصویرمان بگوییم که به سمت چپ متن برود:

مشاهده ی خروجی در JSBin

 float: none 

در این مثال به تصویر هیچ دستوری نمی دهیم و می گذاریم به حالت عادی در هر جایی خواست قرار بگیرد. این حالت همان حالت پیش فرض است:

مشاهده ی خروجی در JSBin

خصوصیت clear و مشکل معروف clearfix

خاصیت clear مشخص می کند که چه عناصری می توانند در کنار عناصر clear در حالت شناور باقی بمانند. شاید بحث کمی برایتان گنگ باشد اما نگران نباشید، در ادامه کاملا متوجه آن خواهید شد. مقادیر مجاز خاصیت clear از این قرار اند:

  • none: عنصری که این مقدار را بگیرد به بقیه ی عناصر اجازه میدهد در کنارش شناور شوند. حالت پیش فرض همین است
  • left: عنصری که این مقدار را بگیرد به بقیه ی عناصر اجازه میدهد تنها در سمت چپ اش شناور شوند
  • right: عنصری که این مقدار را بگیرد به بقیه ی عناصر اجازه میدهد تنها در سمت راست اش شناور شوند
  • both: عنصری که این مقدار را بگیرد به هیچ عنصری در هیچ سمتی اجازه ی شناور شدن نمی دهد
  • inherit: عنصر مورد نظر مقدار clear را از پدرش به ارث می برد

در واقع clear در لغت به معنی «پاک کردن» است. حالا متوجه شدید؟ اگر به عنصری clear بدهیم یعنی می خواهیم اطراف آن را از عناصر شناور پاکسازی کنیم!

ما می توانیم از مقدار clear در موقعیت های مختلفی استفاده کنیم اما شایع ترین استفاده ی آن بعد از دستور float است. کار شما این است که مقدار float را با مقدار clear یکی کنید؛ به طور مثال اگر به float مقدار right داده اید باید به clear هم right بدهید.

مشاهده ی خروجی در JSBin

حتما به صفحه ی خروجی این مثال بروید؛ در آنجا توضیحاتی خدمتتان ارائه کرده ام.

تا اینجای کار مشکلی نیست و درک آن ساده است اما حتما مشکل معروف clearfix را شنیده اید! تعریف ساده ی این مشکل در مثال زیر قرار دارد: اگر عنصری از عنصر نگه دارنده (پدرش) بلند تر باشد (از نظر ارتفاع) و همچنین شناور (floated) هم باشد، از عنصر نگه دارنده بیرون می زند. به این تصویر نگاه کنید:

مشکل معروف clearfix - در این مثال عنصر پدر یا نگه دارنده کوچک تر از عنصر فرزند است بنابراین عنصر فرزند از نگه دارنده اش بیرون می زندمشکل معروف clearfix – در این مثال عنصر پدر یا نگه دارنده کوچک تر از عنصر فرزند است بنابراین عنصر فرزند از نگه دارنده اش بیرون می زند

برای حل این مشکل می توانیم از ;overflow: auto استفاده کنیم. به این مثال توجه کنید:

مشاهده ی خروجی در JSBin

تصحیح این مشکل با استفاده از ;overflow: auto راه حل خوبی است، البته تا زمانی که بتوانید اندازه ی margin و padding هایتان را کنترل کنید. اگر نتوانید این دو را کنترل کنید، صفحه تان اسکرول بار میگیرد و ظاهر زشتی پیدا می کند. به همین خاطر این روش دیگر قدیمی شده است و کسی از آن استفاده نمی کند. به نظر شما راه حل مدرن چیست؟

راه حل مدرن همان clearfix است. به کد زیر نگاهی بیندازید:

مشاهده ی خروجی در JSBin

در مورد شبه‌عنصرِ after:: در جلسات بعد صحبت خواهیم کرد اما بدانید که راه حل همین است و شما می توانید بدون اینکه دانشی در مورد  after:: داشته باشید از این کد به همین صورتی که در مثال بالا آمده است استفاده کنید.

قابلیت های بیشتر float

با استفاده از خاصیت float می توانیم چندین قسمت مختلف از محتوا را دقیقا کنار هم قرار دهیم و قسمت های هم عرضرا به وجود بیاوریم:

مشاهده ی خروجی در JSBin

اگر به کدها دقت کنید متوجه خواهید شد که ما از راه حل clearfix استفاده کرده ایم و همچنین از box-sizing نیز بهره گرفته ایم تا مطمئن شویم اندازه ی این قسمت های مختلف و مربعی شکل به خاطر padding و چنین خصوصیت هایی بهم نمیریزد. برای مشاهده ی اثر آنها و تفاوت‌شان با حالت عادی، می توانید این دو دستور را از کدها حذف کنید.

یکی از استفاده های عملی این دستور کنار هم قرار دادن تصاویر مختلف در سایت ها است که حتما آن را در سایت های مختلف مشاهده کرده اید:

مشاهده ی خروجی در JSBin

تا اینجای کار توانستیم قسمت های هم عرض را ایجاد کنیم اما اگر بخواهیم قسمت های هم ارتفاع داشته باشیم چطور؟ در این صورت باید از روش دیگری استفاده کنیم. ایجاد قسمت هایی با ارتفاع یکسان کار پیچیده تری است؛ به طور مثال یکی از راه حل ها این است که به این قسمت ها ارتفاع ثابت و یکسانی بدهیم:

مشاهده ی خروجی در JSBin

روش بسیار بهتری برای حل این مشکل وجود دارد و آن استفاده از Flexbox است:

مشاهده ی خروجی در JSBin

تنها مشکل Flexbox این است که در مرورگر Internet Explorer 10 و نسخه های قبل تر از آن کار نمی کند چرا که نسبتا جدید بوده و یکی از ویژگی های CSS3 محسوب می شود.

راه حل دیگر استفاده از کتابخانه های Grid در CSS می باشد که می توانید به سادگی با جست و جو در اینترنت آن ها را پیدا کنید.

کمی خلاق تر

با کمی خلاقیت بیشتر می توانیم کار های زیبایی با float انجام دهیم. یکی از آن ها ایجاد منوی سایت ها است:

مشاهده ی خروجی در JSBin

همچنین می توانید طرح کلی یک سایت را با آن پیاده سازی کنید:

مشاهده ی خروجی در JSBin

به هم

منبع: روکسو

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 346
  • کل نظرات : 0
  • افراد آنلاین : 3
  • تعداد اعضا : 0
  • آی پی امروز : 10
  • آی پی دیروز : 17
  • بازدید امروز : 36
  • باردید دیروز : 21
  • گوگل امروز : 2
  • گوگل دیروز : 5
  • بازدید هفته : 110
  • بازدید ماه : 475
  • بازدید سال : 6,984
  • بازدید کلی : 35,219