سیاساس/position
| ویژگی display | position | z-index |
| سیاساس |
ویژگی position در CSS
[ویرایش]ویژگی position در CSS نحوهٔ قرارگیری (موقعیتیابی) یک عنصر در صفحه را کنترل میکند. با استفاده از این ویژگی، میتوان عناصر را به صورت دقیق در جای دلخواه قرار داد.
در واقع position مشخص میکند که مرورگر چگونه باید موقعیت عنصر را با استفاده از ویژگیهای top، right، bottom و left تفسیر کند.
دستور کلی
[ویرایش]element {
position: value;
top: ...;
right: ...;
bottom: ...;
left: ...;
}
مقادیر position
[ویرایش]۱. static (پیشفرض)
[ویرایش]این مقدار پیشفرض است. عنصر در جریان عادی صفحه قرار میگیرد و نمیتوان از ویژگیهای top, left, right, bottom استفاده کرد.
div {
position: static;
}
- نکته: بیشتر عناصر HTML بهصورت پیشفرض
staticهستند.
۲. relative
[ویرایش]عنصر نسبت به موقعیت عادی خودش جابهجا میشود. یعنی مکان اصلی عنصر حفظ میشود، ولی ظاهر آن میتواند با top، left و غیره تغییر کند.
.box {
position: relative;
top: 10px;
left: 20px;
}
- کاربرد مهم: اغلب از
relativeبرای موقعیتدهی فرزندان باabsoluteاستفاده میشود.
۳. absolute
[ویرایش]عنصر از جریان معمول صفحه حذف میشود و نسبت به نزدیکترین عنصر والد که position غیر از static دارد، موقعیتگذاری میشود. اگر هیچ والد مناسبی نبود، نسبت به کل صفحه (body) تنظیم میشود.
.container {
position: relative;
}
.popup {
position: absolute;
top: 0;
right: 0;
}
- نکته: عنصر absolutely-positioned دیگر فضای خود را اشغال نمیکند.
۴. fixed
[ویرایش]عنصر از جریان صفحه حذف میشود و نسبت به پنجره مرورگر (viewport) موقعیتگذاری میشود. با اسکرول، عنصر سر جای خود باقی میماند.
nav {
position: fixed;
top: 0;
width: 100%;
}
- کاربرد: منوهای ثابت، دکمههای شناور، نوار اعلان بالا یا پایین.
۵. sticky
[ویرایش]ترکیبی از relative و fixed است. عنصر ابتدا مانند relative عمل میکند، ولی وقتی به یک نقطه خاص رسید، به حالت fixed میچسبد.
.header {
position: sticky;
top: 0;
}
- مرورگرهای جدید از
stickyپشتیبانی خوبی دارند. - پدر عنصر باید ارتفاع مشخص داشته باشد تا
stickyعمل کند.
تفاوتها به صورت جدول
[ویرایش]| مقدار | در جریان صفحه؟ | موقعیت نسبت به؟ | فضای خود را اشغال میکند؟ |
|---|---|---|---|
| static | بله | موقعیت عادی | بله |
| relative | بله | موقعیت اصلی خودش | بله |
| absolute | خیر | نزدیکترین پدر دارای position غیر static | خیر |
| fixed | خیر | پنجره مرورگر (viewport) | خیر |
| sticky | بله تا رسیدن به موقعیت، سپس خیر | ناحیهٔ والد و اسکرول | بله |
نکات کلیدی
[ویرایش]- اگر هیچ والد دارای position غیر از static وجود نداشته باشد، عنصر با position: absolute نسبت به
<html>یا<body>موقعیتگذاری میشود. z-indexفقط روی عناصری کار میکند که position آنها چیزی غیر از static باشد.- موقعیتدهی دقیق اغلب به ترکیب position با flexbox یا grid و ویژگیهای margin و padding نیاز دارد.
- در موبایل، استفاده زیاد از
fixedمیتواند باعث مشکلات در تجربه کاربری شود (مانند پنهان شدن ناگهانی نوار ابزار مرورگر).
تمرینها
[ویرایش]تمرین ۱: موقعیتدهی ساده
[ویرایش]عنصری بسازید که با position: relative از جای اصلیاش ۲۰ پیکسل به پایین و ۴۰ پیکسل به راست منتقل شود.
تمرین ۲: ساخت پنجره پاپآپ
[ویرایش]یک container با position: relative بسازید، و یک پاپآپ کوچک داخل آن قرار دهید که با position: absolute در گوشه بالا-راست ظاهر شود.
تمرین ۳: نوار ثابت بالا
[ویرایش]یک نوار منو طراحی کنید که همیشه در بالای صفحه باقی بماند (با position: fixed).
تمرین ۴: سربرگ چسبنده
[ویرایش]سربرگی طراحی کنید که هنگام اسکرول از بالای صفحه نگذرد و بچسبد (با position: sticky).
جمعبندی
[ویرایش]ویژگی position ابزاری قدرتمند برای کنترل موقعیت عناصر در صفحه است. یادگیری دقیق تفاوت بین مقادیر مختلف آن، مانند absolute، relative و fixed برای ساخت رابطهای کاربری دقیق و حرفهای ضروری است.
بهترین راه یادگیری position، تمرین زیاد و بازی با مثالهای واقعی است. در ادامه این کتاب، با ترکیب position با flex و grid لایهبندیهای پیچیدهتری خواهیم ساخت.