شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3:30

کاربرد ویژگی position و float در CSS

css-position-float

از جمله مباحث پیشرفته در زمینه استایل نویسی وب با زبان CSS، بحث استفاده از ویژگی position و float برای شناور کردن عناصر مختلف در صفحات به نحو دلخواه و مورد انتظار است، آشنایی با این خاصیت ها را می توان نقطه آغاز استایل نویسی حرفه ای برشمرد چرا که معمولا در بسیاری از جلوه های ویژه و امکانات مورد نیاز برای ساخت واسط کاربری (UI یا User Interface) مناسب در صفحات وب این خواص استاندارد استفاده خواهند شد، به طور مثال منوهای طراحی شده با CSS، باکس های شناور و واکنش پذیر (Interactive)، افزونه ها و Widget ها و مواردی از این دست، لذا در ادامه آموزش های مقدماتی این بخش می خواهیم به توضیح در رابطه با کاربرد دو خاصیت position  و float در CSS بپردازیم.

خاصیت position


همان طور که پیش از این اشاره شد خاصیت position جزء خاصیت های کلیدی و حرفه ای در CSS محسوب می شود، این خاصیت امکان تعریف موقعیت و استقرار عناصر به صورت ثابت یا شناور در هر نقطه از صفحه نمایش کاربر را میسر می کند که در طراحی وب بسیار کاربرد دارد، ویژگی position مقادیر متعددی به شرح زیر می پذیرد:
- مقادیر static
مقادیر static یا ایستا حالت پیش فرض عناصر در صفحات وب است که در واقع با این خاصیت موقعیت یک عنصر در کنار سایر عناصر موجود در صفحات HTML پردازش و مشخص می شود.
- مقادیر relative
مقادیر relative یا نسبی به معنی تعیین موقعیت عنصر از محل قرارگیری معمول خود در صفحه وب است، در این حالت در نظر گرفتن مقدار برای خاصیت های top، right، bottom، left بر روی عنصر نسبت به محل قرارگیری نرمال آن اعمال می شود.
- مقادیر absolute
مقادیر absolute یا مطلق به معنی تعیین موقعیت عنصر از نزدیکترین تگ والد خود است که یکی از حالت های position (به غیر از static) را داشته باشد، اگر هیچ کدام از تگ های بالادستی با خاصیت position مقداردهی نشده باشند، در حالت پیش فرض عنصر absolute از تگ body یا سند HTML پیروی خواهد کرد، به طور مثال از این خاصیت می توانیم برای شناورسازی یک عنصر در بالاترین سطح صفحه وب استفاده کنیم.
- مقادیر fixed
مقادیر fixed یا تثبیت شده به معنی ثابت شدن موقعیت عنصر در محلی تعریف شده است که حتی با اسکرول نیز تغییر نخواهد کرد.
- مقادیر sticky
مقادیر sticky یا چسبنده موقعیت عنصر را با توجه به اسکرول بار صفحه مشخص می کند و در واقع ترکیبی از مقادیر relative و fixed است، موقعیت عنصر در این حالت در هنگام اسکرول نسبت به Viewport صفحه به صورت relative تعیین و در همان نقطه ثابت و fixed می شود.
در ادامه هر یک از مقادیر بالا را همراه با مثال بررسی خواهیم کرد.

خاصیت position با مقادیر static


از خاصیت position با مقادیر static زمانی استفاده می کنیم که بخواهیم یک عنصر به صورت پیش فرض و نرمال در کنار سایر عناصر موجود در سند HTML پردازش شود، این مقدار چندان کاربردی نیست و کمتر استفاده می شود چرا که بدون استفاده از آن نیز عناصر صفحه وب به صورت Static پردازش می شوند، مگر اینکه بخواهیم خاصیتی که قبلا به یک عنصر داده شده است را دوباره نویسی و به حالت پیش فرض تغییر دهیم که به این حالت در اصطلاح برنامه نویسی Override می گویند.
<style>
.static {
    position: static;    
    width: 200px;
    height: 100px;
    background: #88C2FF;
}
</style>
<div class="static">بلاک با خاصیت position static</div>
برای بررسی مثال با پیش نمایش آنلاین، لطفا به انتهای این آموزش مراجعه کنید.

خاصیت position با مقادیر relative


از خاصیت position با مقادیر relative زمانی استفاده می کنیم که بخواهیم یک عنصر نسبت به محل قرارگیری نرمال خود در صفحه وب مقادیر مربوط به موقعیت را اعمال کند، به طور مثال اگر برای عنصر با خاصیت position و مقدار relative خاصیت top در نظر بگیریم، موقعیت عنصر از همان محلی که قرار دارد بر اساس مقدار top تغییر خواهد کرد.
<style>
.relative {
    position: relative;
    width: 200px;
    height: 100px;
    background: #F90;
    border: 1px solid #999;
    top: 40px;
}
</style>
<div class="relative">بلاک با خاصیت position relative</div>
برای بررسی مثال با پیش نمایش آنلاین، لطفا به انتهای این آموزش مراجعه کنید.
موقعیت قرارگیری عناصر دارای خاصیت position با مقادیر relative را می توانیم با خاصیت های top، right، bottom، left تغییر دهیم، همچنین امکان اعمال خاصیت z-index بر روی این عناصر وجود دارد.

خاصیت position با مقادیر absolute


از خاصیت position با مقادیر absolute زمانی استفاده می کنیم که بخواهیم یک عنصر (به فرض بلاک div) نسبت به تگ والد خود یا نسبت به کل صفحه وب به صورت شناور درآید، در این حالت عنصر به صورت پیش فرض به ابتدای موقعیت بلاک والد یا سند HTML (گوشه بالای پنجره مرورگر) منتقل می شود و برای اعمال تغییرات سفارشی بیشتر می توانیم از خاصیت های top، right، bottom، left استفاده کنیم.
<style>
.relative {
    position: relative;
    width: 200px;
    height: 100px;
    background: #F90;
    border: 1px solid #999;
}
.absolute {
    position: absolute;
    width: 220px;
    height: 50px;
    background: #F90;
    border: 1px solid #999;
    top: 30px;
    left: -30%;
}
</style>
<div class="relative">
بلاک والد با خاصیت position relative
<div class="absolute">
بلاک فرزند با خاصیت position absolute
</div>
</div>
برای بررسی مثال با پیش نمایش آنلاین، لطفا به انتهای این آموزش مراجعه کنید.
یکی از کاربردهای متداول خاصیت position با مقادیر absolute در صفحات وب ایجاد منوهای شناور است که معمولا ساختاری مشابه با نمونه کد بالا دارند، یعنی به تگ والد خاصیت position با مقادیر relative و به تگ فرزند خاصیت position با مقادیر absolute می دهیم.

خاصیت position با مقادیر fixed


از position با مقادیر fixed زمانی استفاده می کنیم که بخواهیم یک عنصر به صورت ثابت در یک قسمت از صفحه نمایش قرار گیرد و حتی با اسکرول نیز تغییری نکند، به عنوان مثال این شیوه ای است که برخی طراحان قالب از آن در کدنویسی های خود (معمولا بیشتر در قالب وبلاگ ها) برای ثابت کردن تصویر پس زمینه استفاده می کنند.
<style>
.fixed {
    position: fixed;
    width: 200px;
    height: 100px;
    background: #FF9A9B;
    border: 1px solid #999;
    top: 8px;
    left: 8px;
}
</style>
<div class="fixed">بلاک با خاصیت position fixed</div>
برای بررسی مثال با پیش نمایش آنلاین، لطفا به انتهای این آموزش مراجعه کنید.

خاصیت float


در کنار خاصیت position که می توانیم با آن یک عنصر را در راستای محور Xها و Yها (کل صفحه) شناور کنیم، خاصیت دیگری به نام float وجود دارد که برای شناور کردن عنصر صرفا در راستای محور Xها (محور افقی) در دو سمت چپ (Left)  و راست (Right) در درون تگ والد خود به کار می رود، منظور از والد تگی است که عنصر شناور شده در درون آن قرار دارد و به اصطلاح Container یا ظرف آن است، به فرض اگر بخواهیم بلاک مربوط به نمایش تصویر بندانگشتی در یک مطلب به سمت چپ یا راست پاراگراف متمایل باشد از float با مقادیر left یا right استفاده می کنیم.
مثال:
<style>
.block {
    width: 220px;
    height: 220px;
    background: #9EBBFF;
    border: 1px solid #999;
    text-align: justify;
    padding: 4px;
    top: 8px;
    left: 8px;
}
.float {
    width: 100px;
    height: 100px;
    background: #424AE4;
    color: #FFFFFF;
    float: left;
    padding: 4px;
    margin: 4px;
    text-align: right;
}
.rtl {
    direction: rtl;
}
</style>
<div class="block rtl">
<div class="float">بلاک مربوط به نمایش تصویر بندانگشتی در مطلب با خاصیت float و مقدار left</div>
<p>تفاوت خاصیت float با خاصیت position و مقادیر absolute در این است که با float عنصر صرفا در سمت چپ یا راست تگ والد خود شناور می شود اما همچنان بر روی موقعیت سایر عناصر مجاور تاثیرگذار است اما در مورد خاصیت position با مقادیر absolute عنصر به صورت کامل در سند HTML شناور می شود و بر روی موقعیت عناصر مجاور خود تاثیری ندارد.</p>
</div>
در ادامه شرح مقادیری که float می پذیرد را بررسی می کنیم.
- مقادیر right
از float با مقادیر right زمانی استفاده می کنیم که بخواهیم عنصر به سمت راست تگ والد خود متمایل شود.
- مقادیر left
از float با مقادیر left زمانی استفاده می کنیم که بخواهیم عنصر به سمت چپ تگ والد خود متمایل شود.
- مقادیر none
از float با مقادیر none زمانی استفاده می کنیم که بخواهیم مقادیر پیشین مربوط به float را برای یک عنصر دوباره نویسی و خنثی کنیم، در واقع این حالت پیش فرض float است.
نکته 1: در استایل نویسی کاربردی معمولا مواردی پیش می آید که در کنار استفاده از خاصیت float ناچاریم از خاصیت clear با مقادیر both نیز برای همپوشانی بلاک های تو در تو استفاده کنیم.
نکته 2: برای چینش بلاک ها در کنار هم و در یک ردیف افقی معمولا از خاصیت display با مقادیر inline-block استفاده می کنیم، اما استفاده از خاصیت float نیز می تواند در مواردی با توجه به نیاز طراحی وب به کار گرفته شود.

مثال و پیش نمایش آنلاین


برای آشنایی بیشتر با خاصیت های position و float در CSS، مثال و پیش نمایش آنلاین را با نمونه کد زیر بررسی می کنیم.
<!doctype html>
<html lang="fa">
<head>
<meta charset="utf-8">
<title>وبگو | استفاده از خاصیت position و float در CSS</title>
<!-- Webgoo.ir -->
<style>
body {
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 12px;
    direction: rtl;
    height: 1500px;
}
.static {
    position: static;    
    width: 200px;
    height: 100px;
    background: #88C2FF;
    margin: 4px;
}
.relative {
    position: relative;
    width: 200px;
    height: 100px;
    background: #F90;
    border: 1px solid #999;
    margin: 4px;
}
.absolute {
    position: absolute;
    width: 220px;
    height: 50px;
    background: #F90;
    border: 1px solid #999;
    top: 30px;
    left: -30%;
}
.fixed {
    position: fixed;
    width: 200px;
    height: 100px;
    background: #FF9A9B;
    border: 1px solid #999;
    top: 8px;
    left: 8px;
}
.block {
    width: 220px;
    height: 220px;
    background: #9EBBFF;
    border: 1px solid #999;
    text-align: justify;
    padding: 4px;
    top: 8px;
    left: 8px;
}
.float {
    width: 100px;
    height: 100px;
    background: #424AE4;
    color: #FFFFFF;
    float: left;
    padding: 4px;
    margin: 4px;
    text-align: right;
}
</style>
</head>
<body>
<div class="static">بلاک با خاصیت position static</div>
<div class="relative">
بلاک والد با خاصیت position relative
<div class="absolute">
بلاک فرزند با خاصیت position absolute
</div>
</div>
<div class="fixed">بلاک با خاصیت position fixed، برای بررسی بیشتر به پائین صفحه اسکرول کنید.</div>
<div class="block">
<div class="float">بلاک مربوط به نمایش تصویر بندانگشتی در مطلب با خاصیت float و مقدار left</div>
<p>تفاوت خاصیت float با خاصیت position و مقادیر absolute در این است که با float عنصر صرفا در سمت چپ یا راست تگ والد خود شناور می شود اما همچنان بر روی موقعیت سایر عناصر مجاور تاثیرگذار است اما در مورد خاصیت position با مقادیر absolute عنصر به صورت کامل در سند HTML شناور می شود و بر روی موقعیت عناصر مجاور خود تاثیری ندارد.</p>
</div>
</body>
</html>
پیش نمایش آنلاین
دسته بندی: آموزش مقدماتی » CSS
related مطالب بیشتر:
ویژگی های Font و Text در CSS
نحوه تنظیم لیست با تگ ul li در CSS
کاربرد خاصیت height و width در CSS
کار با ویژگی margin و padding در CSS
مقدمه ای بر CSS و استایل دهی صفحات وب
دیدگاه
more ۶۲ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
saeed
۱۵:۰۴ ۱۳۹۵/۰۵/۲۵
با سلام و درود. خسته نباشید.
قربان سوالی داشتم نمی دونم جاش تو این پیج یا نه، با این حال پوزش می طلبم.
من می خوام navbar سایت وقتی سایت اسکرول می خوره میره پایین این نوارم بالای سایت نمایان باشه. یک هدره 150*960 دارم و بدش navbar سایت هستش، می خوام سایت که لود میشه سرجاش باشه و وقتی کاربر اسکرول می کنه navbar بره بالای سایت و نمایان باشه. لطفا راهنمایی کنید.
می توانید از نمونه کدهای لینک زیر استفاده کنید (به این قابلیت در اصطلاح sticky menu یا منوی چسبنده گفته می شود):
https://codepen.io/senff/pen/ayGvD

http://www.websitecodetutorials.com/code/jquery-plugins/sticky-js-position-fixed-at-certain-point-in-page-demo.php
فرشید
۱۰:۳۳ ۱۳۹۵/۰۵/۰۳
با عرض سلام و خسته نباشید
من یه اسلاید شو دارم که وقتی width اش رو افزایش میدم height تغییر میکنه نمیدونم باید چکار کنم لطفا راهنمایی کنید.
درج آدرس صفحه جهت بررسی و تست اسلایدشو ضروری است!
محسن
۱۸:۱۹ ۱۳۹۵/۰۴/۱۲
منظورم قسمت بالایی بلاکه که داخلش عنوان وبلاگ و موتور جوستجو و ..... رو قرار میدم
در کل آنچه که اهمیت دارد خروجی نهایی HTML است که باید مطابق با استانداردهای وب باشد، اینکه شما به چه نحوی این خروجی را با سیستم مدیریت وبلاگ خود ایجاد کنید از نظر کاربر نهایی و در سئو اهمیتی ندارد، اگر سیستم وبلاگتان چنین قابلتی را پشتیبانی می کند، منعی در آن وجود ندارد، منتها در اکثر سیستم های وبلاگی کد قالب باید به صورت یکپارچه باشد.
محسن
۱۸:۵۸ ۱۳۹۵/۰۴/۱۱
سلام استاد
میخواستم بدونم لزومی داره بلاک تیتر همیشه داخل قالب اصلی باشه یعنی میتونیم این دوتا رو خارج از هم به هم بچسپونیم؟
سوال واضح نیست! لطفا دقیقتر منظورتان را از "بلاک تیتر" و "قالب اصلی" توضیح دهید.
۱۶:۵۱ ۱۳۹۵/۰۲/۰۶
مرسی بسیار عالی بود
محسن
۲۲:۱۸ ۱۳۹۴/۱۱/۲۸
سلام
استاد من این کدها رو برای شروع و بلاک بندی نوشتم:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>webgoo.ir | برنامه نویسی وب</title>
<meta name="description" content="اولین نمونه آزمایش" />
<meta name="keywords" content="استایل+اچ تی ام ال" />
<!-- http://webgoo.ir -->
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
font-size:15px;
direction:rtl;
}
.block{
position:absolute;
width:200px;
height:30px;
background:#9C0;
top:0;
right:540px;
}
.block-1{
display:list-item;
height:200px;
width:200px;
background:#F60;
margin-bottom:8px;
list-style:circle;
margin-right:10px;
}
.block-2{
display:list-item;
height:200px;
width:200px;;
background:#39C;
margin-bottom:8px;
list-style:circle;
margin-right:10px;
}
.mblock {
position: absolute;
width: 100px;
height: 400px;
background: blue;
top: auto;
left: 60px;
}
</style>
</head>
<body>
<div class="block"> title </div>
<div class="block-1">
display:list-item
</div>
<div class="block-2">
display:list-item
</div>
<div class= "mblock"> picture </div>
</body>
</html>
ولی نمیدونم چرا کلاس آخری شناور نمیشه!
کد شما در قسمت کلاس mblock خطای Syntax دارد و چند کاراکتر (از جمله علامت ; برای مقدار absolute و علامت { برای بستن کلاس) از قلم افتاده است (کد بالا اصلاح شد)!
محسن
۱۸:۰۹ ۱۳۹۴/۱۱/۲۲
سلام استاد
می خواستم بدونم چرا کلاسهای آخر همسطح شدن شما که از خاصیت inline و display استفاده نکردین؟
چندین شیوه برای نمایش بلاک ها در یک سطح وجود دارد، به فرض اگر در تمام بلاک ها از float با مقادیر یکسان استفاده کنید، در یک سطح نمایش داده می شوند، گاهی در طراحی های پیچیده نیاز است که علاوه بر خاصیت inline، مقدار float نیز در نظر گرفته شود!
مهسا
۱۳:۲۸ ۱۳۹۴/۱۱/۰۲
سلام من میخوام دو تا دایره (یکی کوچک و دیگری بزرگتر) روی هم قرار گیرند به طوری که هر دو position:fixed باشند و وسط صفحه پایین قرار بگیرند هرچی تلاش میکنم نمیشه یعنی وقتی زوم این و زوم اوت میکنم از هم جدا میشن.
برای اینکه ثابت باشن fixed می دم و برای اینکه باهم در وسط قرار بگیرن لازمه که relative و absolute بدم.. نمیشه دو تا position بگیرند.. چیکار کنم؟؟
سلام
برای این منظور باید بلاک سوی به عنوان لفاف (wrapper) اضافه کنید که دو بلاک مربوط به دایره ها، درون آن باشند، موقعیت و حالت fixed را برای این بلاک تنظیم نمائید!
داوود
۱۲:۵۹ ۱۳۹۴/۰۹/۰۱
سلام آقای مهندس؛ وقتتون بخیر.
استاد در این جا که فرمودین:
"نکته 2: برای چینش بلاک ها در کنار هم و در یک ردیف افقی، معمولا علاوه بر خاصیت float، از display با مقادیر inline-block نیز استفاده می شود (جهت سازگاری با برخی مرورگرها)."
اگه ما بیایم و مثل خود شما تو همین مثال آخری، به بلاکهامون فقط عرض رو بدیم و همچنین خاصیت float رو هم استفاده کنیم، آیا با توجه به ماهیت بلاکها که inline نیستند، بازهم نیازه که از خاصیت inline-block استفاده کنیم؟؟ منظورم اینه که آیا با دادن عرض ، بلاک خاصیت خودش رو در خصوص block بودن از دست میده که ما دیگه نیام و از inline-block استفاده کنیم؟ الان تو مثال شما انگار همین قضیه پیش اومده و دیگه بهش خاصیت inline-block رو ندادین. ببخشید.
سلام
طبق آخرین تست ها، برای چینش عناصر در یک راستا انتخاب اول باید خاصیت inline-block باشد، چون علاوه بر پشتیبانی در مرورگرها، هدف از تعریف این خاصیت نیز همین بوده است، اما float الزاما برای فرمت بندی و نمایش عناصر در یک راستا استفاده نمی شود، به طور مثال نمایش توضیح یک عکس روی تصویر از اهداف اولیه تعریف خاصیت float بوده! با این تفاسیر در آینده در این آموزش تجدید نظر خواهد شد (با توجه به تکمیل نبودن مطالب و ایجاد تغییرات در سایت، لطفا به آموزش های ما در زمینه CSS اکتفا نکنید!).
داوود
۱۸:۵۷ ۱۳۹۴/۰۸/۲۸
سلام آقای مهندس؛
خیلی خیلی ممنونم بابت توضیحی که فرمودین. آقای مهندس من همینجوری برای خودم یه مثال داشتم میزدم، یه استنباطی که کردم ببینید درسته: اگه به یه بلاک خاصیت relative بدیم، سایر عناصر دیگه جای این رو محفوظ نگه داشته و نمیان اشغال کنن جاش رو در صورتی که این بلاک رو جابجاش کنیم. یعنی به نوعی اون حاکمیت خودش رو داره بلاک relative.
ولی در absolute اینجوری نیست، کلا این بلاک معلق میشه و جاش رو هم میده به کنار دستی و دیگه حاکمیتی بر جای اولیه خودش نداره!
فقط آقای مهندس امکانش هست جمله آخرتون رو یه خورده دیگه بیشتر توضیح بدین یا تو این کدی که میذارم و خودم ایجادش کردم برای فهم بیشتر خودم، روی همین توضیح بدین که یعنی چی جمله آخرتون؛ منظورم این هستش عزیز: "تفاوت در این است که بلاک absolute در صورت فرزند نبودن، نسبت به سند HTML شناور می شود، اما بلاک relative (در صورت فرزند نبودن) نسبت به تگ بالادست خود position می گیرد."
این هم کد من:
* {
margin: 0;
padding: 0;
}
body {
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
height: 1500px;
}
.father-1 {
position: relative;
height: 100px;
width: 200px;
background: #9C3;
}
.child-1 {
position:absolute;
height: 50px;
width: 50px;
background: #CCC;
bottom: 0;
}
.child-2 {
position: relative;
height: 50px;
width: 50px;
background: yellow;
bottom: 0;
}
.father-2{
position: relative;
height: 100px;
width: 200px;
background: #9C3;
background-color: red;
}
کد html :
 <body>
<div class="father-1">
<div class="child-1"></div>
<div class="child-2"></div>
</div>
<div class="father-2"></div>
</body>
سلام
برداشت شما صحیح است!، استفاده از absolute عنصر مورد نظر را به طور کلی نسبت به سایر عناصر شناور می کند و در این حالت هیچ تاثیری بر روی سایر عناصر ندارد (حتی چند عنصر می توانند در یک مکان نیز قرار گیرند!)، اما در relative به این صورت نیست و وجود یک عنصر بر روی عناصر مجاور تاثیر دارد، منظور از جمله آخر نیز مشخص است، یعنی اگر بلاک relative به طور مثال به شکل زیر باشد:
<div style="background:#FB0105; height:100px; width:200px; margin-top:100px;">1</div>
<div style="position:relative; background:#00B569; height:100px; width:200px; margin-top:100px;">2</div>
<div style="background:#D2D800; height:100px; width:200px; margin-top:100px;">3</div>
ملاحظه می کنید که بلاک دوم مانند یک بلاک معمولی (static) پردازش می شود و با وجود relative بودن، از عناصر مجاور تاثیر می پذیرد!
داوود
۱۹:۰۳ ۱۳۹۴/۰۸/۲۷
سلام آقای مهندس، شبتون بخیر.
خیلی عذرمیخوام که مزاحمتون شدم. راستش مثالی رو که تو این درس دیدم باعث شد کلی گیج بشم. ببین مهندس جان مگه ما وقتی میایم و برای عنصری position رو از نوع relative تعریف میکنیم، به نوعی به اون یه موقعیت نسبی در صفحه میدیم دیگه درسته!!!! یعنی هر جا که هستش همونجا بمون ولی position رو هم بگیر. حالا اگه بخوایم برای این یه بچه تعریف کنیم که ازش تبعیت کنه، باید به بچه بیام و position رو absolute بدیم دیگه! درست میگم. الان شما در مثالی که زدین نباید یه اصلاحیه داشته باشین؟؟ بخدا تا قبل از خوندن این مقاله خیلی خوب این قضیه رو فهمیده بودم، ولی الان گیج گیج شدم. آخه فکر کنم همیشه والد باید relative باشه و فرزند هم absolute بزارین اینجوری بگم:
" عنصری که به صورت نسبی موقعیت دهی شده باشد، اغلب به عنوان ظرفی برای عناصر absolute استفاده می شوند". پس با این توضیحی که دادم باید مثالتون بدین شکل تغییر کنه دیگه استاد:
.parent{
position:relative;
top:400px;
width:200px;
height:100px;
}
.block{
position:absolute;
width:200px;
height:100px;
background:#F90;
border:1px solid #999;
right:40px;
}
<div class="parent">
<div class="block">بلاک با خاصیت position relative</div>
</div>
لطفا حتما این مورد رو اگه اشتباه میگم (که فکر کنم درست گفته باشم) ، برام کامل توضیح بدین اگه براتون مقدوره.
سلام
نه شما اشتباه می کنید و نه آنچه در مثال آموزش ذکر شده اشتباه است!
در واقع رابطه یک بلاک position relative با یک بلاک position absolute الزاما نباید پدر فرزندی باشد، بلکه برعکس این حالت نیز شدنی است! به عبارتی دیگر زمانی که بلاک relative داخل بلاکی دیگر باشد، از همان تبعیت می کند و زمانی که یک بلاک absolute داخل بلاک relative باشد، مشابه بلاک relative، از والد خود تبعیت می کند (به استثنای زمانی که والد static باشد)! تفاوت در این است که بلاک absolute در صورت فرزند نبودن، نسبت به سند HTML شناور می شود، اما بلاک relative (در صورت فرزند نبودن) نسبت به تگ بالادست خود position می گیرد.
۰۹:۴۹ ۱۳۹۴/۰۸/۱۶
با سلام و تشكر از سايتتون.
يك سوال داشتم ممنون ميشم پاسخ بديد
من ميخواستم يك تصوير را در دو موقعيت نمايش بدم بعنوان مثال لوگو سايتم را در قسمت (بالا، چپ) و هم در قسمت (بالا، راست) سايت به نمايش بذارم
پيشاپيش ممنون
سلام
قاعدتا برای این کار باید در هنگام طراحی قالب یا با ویرایش کد قالب فعلی، فضایی در نظر بگیرید که یا با درج مستقیم تگ img یا از طریق اعمال خاصیت background به بلاک div بتوان تصویر را نمایش داد، به عبارتی دیگر باید در کدهای HTML و CSS چنین حالتی ایجاد شود که معمولا از عهده فردی آشنا با طراحی وب بر می آید!
فاطمه
۱۷:۰۶ ۱۳۹۴/۰۵/۱۳
سلام. من تازه شروع کردم و فقط تئوری کار کردم و از سایت شما و w3schools کمک میگیرم. تو این قسمت فهمش برام مشکل شده و دقیق نمیدونم وقتی خواستم سایت بسازم از این قسمت چه جوری استفاده کنم یعنی کاربردش تو سایت چه جوریه؟
سلام
یادگیری CSS به صورت کاربردی یک فرآیند تدریجی است که مهارت آن با تمرین و تکرار به دست می آید، لذا عجله نداشته باشید! به مرور و طبق نیاز طراحی، متوجه خواهید شد که کدام خاصیت ها باید در چه قسمتی و برای چه قابلیتی استفاده شوند، فعلا در حد مطالعه و تمرین معمول مطالب را گام به گام دنبال کنید.
داوود
۱۰:۵۲ ۱۳۹۴/۰۴/۲۵
سلام آقای مهندس، وقتتون بخیر و ممنونم بابت پاسخگویی شما.
استاد این شبه کد رو ببینید:
span{
display:block;
background:yellow;
border:1px solid #f08;
}
الان و پس از اجرای تکه کد فوق، میبینیم که تگ span ما کل خط یا بلاک رو اشغال کرده که خوب این بخاطر خاصیت block بودنی هستش که ما بهش دادیم.
حالا اگه بیایم و یه float هم اضافه کنیم، میبینیم که خودش رو جمع کرده و به اندازه ای که متن داره خودش رو بسط میده؛
الف) پس در واقع میتونیم بگیم که float در اینجا علاوه بر اینکه عنصر رو شناور میکنه، باعث میشه که تگ مورد نظر ما هم به اندازه مقدار مطلبی که داره صفحه رو اشغال بکنه.
ب) اگه بخوایم float این کار رو نکنه، باید width رو اعمال کنیم دیگه، درست میگم؟؟ خاصیت ذاتی float جمع کردنم هست مگه؟؟
سلام
تا آنجا که اطلاع داریم و بنا به تجربه می توان گفت زمانی که از float استفاده می کنید، در واقع به نوعی عنصر تبدیل به حالت inline-block می شود (البته نه به صورت صددرصد مشابه، چون خود float در حالت های مختلف، نسبت به inline-block رفتارهای متفاوتی دارد)، به همین دلیل است که عناصر شناور شده می توانند در کنار هم قرار گیرند، ضمن اینکه امکان اعمال خاصیت هایی مانند height و width برای آنها وجود دارد.
داوود
۰۸:۲۲ ۱۳۹۴/۰۴/۲۳
سلام آقای مهندس؛ دستتون بابت همین نگاه اجمالی هم درد نکنه و ممنونم ازتون. همین برام کافیه. آیا میتونم کارهای کوچولوی دیگه رو از همین طریق براتون بفرستم نگاه کنید یا اینکه صفحه خاصی برای اینکار وجود نداره؟؟؟ یا اینکه از طریق تماس با ما براتون بفرستم!!
- همچنین آقای مهندس راستش رو بخواین bottom از قبل مونده بود و من چون داشتم position رو تست میکردم دیگه یادم نبود که بردارمش. آقای مهندس اینجا رو میشه یه کوچولوی دیگه توضیح بدین؟؟
"فاصله top کمتر، نادیده گرفته می شود (البته مشخص نیست چرا دو عنصر را با دو مقدار متفاوت top تنظیم کرده اید و در عین حال انتظار دارید فاصله از پائین صفر پیکسل باشد، در صورتی که هر دو در یک بلاک والد قرار دارند و در عمل چنین حالتی شدنی نیست!)."
چون من علیرغم اینکه فاصله از بالا رو هم یکی گرفتم باز عنصر 4 رفت پایین کادر.
کد نهایی ویرایش شده:
http://jsfiddle.net/dLztuw2L/1/
البته اگه فرصت داشتین پاسخ بدین چون خیلی واجب نیست و جهت اطلاع خودم بود. مرسی و ممنونم ازتون.
سلام
- موارد متفرقه و مباحثی که مطلبی مرتبط با موضوع در سایت وجود ندارد را لطفا از طریق ایمیل مطرح کنید (برخی از نظرات شما حذف شد، پاسخ را از طریق ایمیل پیگیری کنید).
- برای اینکه دو عنصر در یک خط در کنار هم قرار بگیرند، یا باید از نوع inline-block باشند، یا اینکه هر دو float (شناور) شده باشند، در اینجا چون display بلاک سوم به صورت block است (حالت پیش فرض تگ div)، قاعدتا اجازه نمایش سایر بلاک ها در یک تراز را نخواهد داد، به این دلیل مرورگر مجبور می شود بلاک چهارم را به بیرون از کادر هدایت کند! اگر دقت کنید بلاک اول و دوم هر دو float شده اند و لذا مشکلی از این نظر دیده نمی شود.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
7 × 2
20 × 20
=