آموزش position در css برای جابه جایی تگ ها

  • در جلسه پنجم از آموزش html و css میپردازم به آموزش position در css برای تعیین موقعیت عناصر صفحه

     

    تعیین موقعیت این امکان را به ما خواهد داد تا موقعیت یک عنصر را در چینش صفحه وب سایت انتخاب کنید . تعیین موقعیت عناصر در صفحه باچهار مقدار top , right , bottom , left و روش های ( absolute , relative , fixed ) انجام میگیرد

     

    مشاهده از یوتیوب:

    https://www.youtube.com/watch?v=wG_6G1vFXSU

     

    نکته : ۲ روش کلی برای جا به جا کردن اشیا در صفحه است :

    ۱-    با استفاده از margin  و padding

    ۲-    با استفاده از position

    نکته در مورد position در css  :

    روش اول : تر کیب absolute  و  relative با هم

    وقتی به یم آیتم موقعیت absolute  مدهیم نسبیت به نزدیکترین parent خود که relative  است

    توسط سوییچ های Top , Button , left , Right  جا به جا میشود

    یعنی یک پرنت relative  تعینن میکنیم و سپس به آیتم که میخواهیم جابه جا شود absolute مدهیم

    روش دوم : استفاده فقط از relative

    یعنی آیتم نسبت به همان جایی که هست تغییر میکند مثلا میگوییم نسبت به جایی که هستی ۲ پیکسل برو بالاتر و …

     

    نکته :

    از مقادیر منفی نیز در سوییچ های Top , Button , left , Right   استفاده میشود

     

    در همین زمینه ببینید :

    طراحی سایت حرفه ای با قالب محبوب پابلیشر

    آموزش Position در CSS: چیدمان دقیق عناصر در صفحات وب

    پاسخ به سؤال اصلی: position در CSS یک ویژگی کلیدی است که نحوه قرارگیری و چیدمان عناصر HTML را در صفحه وب کنترل می‌کند. این ویژگی به شما امکان می‌دهد تا عناصر را از جریان عادی سند خارج کرده و آن‌ها را با استفاده از خصوصیات top، right، bottom و left در مکان‌های دقیق مورد نظر خود قرار دهید. درک این خصوصیت برای طراحی‌های پیچیده و واکنش‌گرا ضروری است.

    مقدمه: چرا چیدمان عناصر در وب مهم است؟

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

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


    ۱. Position در CSS چیست و چرا باید آن را یاد بگیریم؟

    position در CSS یک ویژگی است که نحوه قرارگیری یک عنصر را در سند HTML مشخص می‌کند. این ویژگی به ما امکان می‌دهد تا کنترل دقیق‌تری بر جایگاه عناصر، فراتر از جریان عادی سند، داشته باشیم.

    چرا یادگیری position اهمیت دارد؟

    • کنترل دقیق چیدمان:
      • پاسخ کوتاه: position به شما اجازه می‌دهد تا عناصر را دقیقاً در جایی که می‌خواهید قرار دهید، حتی اگر این مکان خارج از جریان عادی سند باشد.
      • جزئیات: به طور پیش‌فرض، عناصر HTML در یک “جریان عادی” (Normal Flow) قرار می‌گیرند؛ یعنی پشت سر هم یا زیر هم. position به شما قدرت می‌دهد که این جریان را بشکنید و عناصر را به صورت آزادانه‌تر جابجا کنید.
    • طراحی‌های پیچیده و واکنش‌گرا:
      • پاسخ کوتاه: برای ایجاد طرح‌بندی‌های پیچیده مانند نوارهای ثابت، پاپ‌آپ‌ها، یا المان‌های همپوشان، position ضروری است.
      • جزئیات: بسیاری از طرح‌های مدرن وب، نیاز به المان‌هایی دارند که در جایگاه خاصی قرار بگیرند یا هنگام اسکرول ثابت بمانند. position ابزار اصلی برای پیاده‌سازی این گونه طراحی‌هاست.
    • بهبود تجربه کاربری (UX):
      • پاسخ کوتاه: چیدمان مناسب می‌تواند به بهبود قابلیت استفاده و جذابیت بصری صفحه کمک کند.
      • جزئیات: وقتی عناصر به درستی چیده شده‌اند، کاربران راحت‌تر می‌توانند با صفحه تعامل کنند و اطلاعات را پیدا کنند. یک چیدمان خوب، تجربه کاربری را لذت‌بخش‌تر می‌کند.
    • پایه و اساس انیمیشن‌ها و تعاملات:
      • پاسخ کوتاه: بسیاری از انیمیشن‌ها و تعاملات پیشرفته در وب، بر پایه تغییرات خصوصیت position ساخته می‌شوند.
      • جزئیات: وقتی می‌خواهید یک عنصر با کلیک کاربر جابجا شود یا هنگام اسکرول افکت خاصی داشته باشد، معمولاً از position برای کنترل حرکت آن استفاده می‌شود.

    ۲. انواع مقادیر Position در CSS کدامند؟

    خصوصیت position پنج مقدار اصلی دارد که هر کدام نحوه قرارگیری عنصر و تأثیر خصوصیات top، right، bottom و left را متفاوت می‌کنند.

    ۲.۱. position: static (پیش‌فرض)

    پاسخ کوتاه: این مقدار پیش‌فرض تمام عناصر HTML است و عنصر را طبق جریان عادی سند (Normal Flow) قرار می‌دهد.

    جزئیات:

    • نحوه عملکرد: عناصر با position: static بدون هیچ تغییر خاصی در مکان پیش‌فرض خود قرار می‌گیرند. آن‌ها پشت سر هم یا زیر هم ظاهر می‌شوند، درست همان‌طور که در HTML کدنویسی شده‌اند.
    • تأثیر خصوصیات top, right, bottom, left: این خصوصیات هیچ تأثیری بر عناصر با position: static ندارند.
    • مثال:

      HTML

      <div class="static-box">این یک جعبه Static است.</div>
      

      CSS

      .static-box {
          position: static; /* پیش‌فرض است و نیازی به تعریف ندارد */
          background-color: lightblue;
          padding: 20px;
          margin: 10px;
      }
      
    • کاربرد: برای اکثر عناصر در یک صفحه وب که می‌خواهید به صورت عادی در جریان سند قرار بگیرند.

    ۲.۲. position: relative

    پاسخ کوتاه: عنصر را طبق جریان عادی سند قرار می‌دهد، اما سپس به شما امکان می‌دهد آن را نسبت به موقعیت اصلی خود با استفاده از top, right, bottom, left جابجا کنید.

    جزئیات:

    • نحوه عملکرد: عنصر ابتدا در جایگاه عادی خود قرار می‌گیرد. سپس، اگر خصوصیات top, right, bottom, left به آن اعمال شوند، عنصر از آن مکان اصلی جابجا می‌شود.
    • نکته مهم: فضایی که عنصر در جریان عادی اشغال می‌کرد، حتی پس از جابجایی نیز حفظ می‌شود. این بدان معناست که جابجایی یک عنصر relative تأثیری بر جایگاه عناصر اطراف خود ندارد.
    • مثال:

      HTML

      <div class="relative-box">این یک جعبه Relative است.</div>
      <div class="another-box">جعبه بعدی</div>
      

      CSS

      .relative-box {
          position: relative;
          top: 20px;
          left: 30px;
          background-color: lightcoral;
          padding: 20px;
          margin: 10px;
      }
      .another-box {
          background-color: lightgreen;
          padding: 20px;
          margin: 10px;
      }
      
    • کاربرد:
      • جابجایی جزئی یک عنصر بدون تأثیر بر چیدمان اطراف.
      • ایجاد یک “زمینه موقعیت‌یابی” (Positioning Context) برای عناصر absolute فرزند. (در ادامه توضیح داده خواهد شد).

    ۲.۳. position: absolute

    پاسخ کوتاه: عنصر را به طور کامل از جریان عادی سند خارج می‌کند و آن را نسبت به نزدیک‌ترین عنصر والد با position غیر از static، یا در غیر این صورت نسبت به <body> صفحه، موقعیت می‌دهد.

    جزئیات:

    • نحوه عملکرد: وقتی یک عنصر position: absolute می‌گیرد، دیگر فضایی در جریان عادی اشغال نمی‌کند. عناصر اطراف آن، طوری رفتار می‌کنند که انگار عنصر absolute وجود ندارد.
    • نحوه موقعیت‌یابی:
      • اگر عنصر والد مستقیمی با position: relative, absolute, fixed, یا sticky داشته باشد، عنصر absolute نسبت به آن والد موقعیت می‌یابد.
      • اگر هیچ والد دارای position غیر از static نداشته باشد، نسبت به عنصر <body> (پنجره مرورگر) موقعیت می‌یابد.
    • تأثیر خصوصیات top, right, bottom, left: این خصوصیات مکان دقیق عنصر را نسبت به والد موقعیت‌دهنده (یا <body>) مشخص می‌کنند.
    • مثال:

      HTML

      <div class="parent-relative">
          این والد با Position Relative است.
          <div class="absolute-box">جعبه Absolute</div>
      </div>
      <div class="footer">پایین صفحه</div>
      

      CSS

      .parent-relative {
          position: relative; /* ایجاد Positioning Context */
          width: 300px;
          height: 150px;
          border: 2px solid blue;
          margin: 50px;
          padding: 20px;
      }
      .absolute-box {
          position: absolute;
          top: 20px;
          right: 20px;
          background-color: gold;
          padding: 10px;
      }
      .footer {
          background-color: gray;
          padding: 20px;
          margin-top: 100px; /* footer جای جعبه absolute را اشغال نمی‌کند */
      }
      
    • کاربرد:
      • قرار دادن المان‌های شناور مانند نوتیفیکیشن‌ها، دکمه‌های بستن (close buttons) در پاپ‌آپ‌ها.
      • همپوشانی عناصر (مثلاً متن روی تصویر).
      • ایجاد منوهای دراپ‌داون.

    ۲.۴. position: fixed

    پاسخ کوتاه: عنصر را به طور کامل از جریان عادی سند خارج می‌کند و آن را نسبت به پنجره مرورگر (viewport) موقعیت می‌دهد. این عنصر حتی با اسکرول کردن صفحه نیز در جای خود ثابت می‌ماند.

    جزئیات:

    • نحوه عملکرد: مانند absolute، عنصر فضایی در جریان عادی اشغال نمی‌کند.
    • نحوه موقعیت‌یابی: همیشه نسبت به پنجره مرورگر موقعیت می‌یابد.
    • تأثیر خصوصیات top, right, bottom, left: مکان دقیق عنصر را نسبت به لبه‌های پنجره مرورگر مشخص می‌کنند.
    • مثال:

      HTML

      <div class="fixed-header">این نوار ثابت است.</div>
      <div style="height: 1000px;">محتوای طولانی برای اسکرول</div>
      

      CSS

      .fixed-header {
          position: fixed;
          top: ۰;
          width: ۱۰۰%;
          background-color: #۳۳۳;
          color: white;
          padding: 15px;
          text-align: center;
          z-index: ۱۰۰۰; /* برای قرار گرفتن روی سایر عناصر */
      }
      
    • کاربرد:
      • نوارهای ناوبری ثابت (Fixed Navbar).
      • دکمه‌های “بازگشت به بالا” (Scroll-to-top buttons).
      • پاپ‌آپ‌های تبلیغاتی یا کوکی.
      • فوترهای ثابت.

    ۲.۵. position: sticky

    پاسخ کوتاه: عنصر را طبق جریان عادی سند قرار می‌دهد تا زمانی که به یک آستانه (offset) مشخص از پنجره مرورگر برسد، سپس مانند fixed عمل کرده و در آنجا ثابت می‌ماند.

    جزئیات:

    • نحوه عملکرد: ترکیبی از relative و fixed. در حالت عادی مانند relative است. اما وقتی کاربر صفحه را اسکرول می‌کند و عنصر به مقداری که با top, right, bottom, left مشخص شده می‌رسد، به حالت fixed در می‌آید و در آنجا ثابت می‌ماند تا زمانی که اسکرول از محدوده والد آن خارج شود.
    • نکته مهم: برای اینکه position: sticky کار کند، باید حتماً یکی از خصوصیات top, right, bottom, left را به آن اعمال کنید.
    • مثال:

      HTML

      <div style="height: 500px; background-color: #eee;">محتوای اولیه</div>
      <div class="sticky-sidebar">این نوار کناری Sticky است.</div>
      <div style="height: 1000px; background-color: #ddd;">محتوای طولانی‌تر</div>
      

      CSS

      .sticky-sidebar {
          position: sticky;
          top: ۰; /* در ۰ پیکسل از بالای پنجره ثابت می‌شود */
          background-color: lightgreen;
          padding: 20px;
          margin: 10px;
          z-index: ۹۹;
      }
      
    • کاربرد:
      • نوارهای ناوبری که پس از اسکرول به بالای صفحه ثابت می‌شوند.
      • سایدبارهای ثابت در بلاگ‌ها.
      • عناوین جدول‌ها که هنگام اسکرول ثابت می‌مانند.

    جدول: خلاصه مقادیر position و کاربرد آن‌ها

    مقدار position موقعیت‌گیری نسبت به جریان عادی سند top/right/bottom/left کاربرد رایج
    static پیش‌فرض در جریان عادی بی‌تأثیر اکثر عناصر عادی
    relative موقعیت اصلی خود در جریان عادی (فضا را اشغال می‌کند) نسبت به جایگاه اصلی جابجا می‌کند جابجایی جزئی، والد برای absolute
    absolute نزدیک‌ترین والد غیر static (یا <body>) از جریان خارج می‌شود (فضا را اشغال نمی‌کند) مکان دقیق را مشخص می‌کند پاپ‌آپ‌ها، همپوشانی عناصر
    fixed پنجره مرورگر (Viewport) از جریان خارج می‌شود (فضا را اشغال نمی‌کند) مکان دقیق را نسبت به Viewport مشخص می‌کند نوارهای ناوبری ثابت، دکمه “بازگشت به بالا”
    sticky جریان عادی، سپس Viewport در جریان عادی، سپس از جریان خارج می‌شود آستانه ثابت شدن را مشخص می‌کند نوارهای ثابت شونده هنگام اسکرول

    ۳. خصوصیت z-index و Position: کنترل لایه‌ها

    z-index خصوصیت مهمی است که همراه با position به شما امکان می‌دهد ترتیب قرارگیری عناصر روی هم را در محور Z (عمق) کنترل کنید.

    چرا z-index مهم است؟

    • پاسخ کوتاه: هنگامی که عناصر با position غیر از static، روی هم قرار می‌گیرند، z-index تعیین می‌کند کدام عنصر بالاتر (جلوی) دیگری نمایش داده شود.
    • جزئیات: هرچه مقدار z-index یک عنصر بالاتر باشد، آن عنصر در لایه بالاتری قرار می‌گیرد و عناصر با z-index کمتر را می‌پوشاند. z-index فقط برای عناصر دارای position غیر از static (یعنی relative, absolute, fixed, sticky) عمل می‌کند.
    • مثال:

      HTML

      <div class="box-one">جعبه اول</div>
      <div class="box-two">جعبه دوم</div>
      

      CSS

      .box-one {
          position: absolute;
          top: 20px;
          left: 20px;
          width: 100px;
          height: 100px;
          background-color: blue;
          z-index: ۱; /* این جعبه پایین‌تر است */
      }
      .box-two {
          position: absolute;
          top: 50px;
          left: 50px;
          width: 100px;
          height: 100px;
          background-color: red;
          z-index: ۲; /* این جعبه بالاتر است و box-one را می‌پوشاند */
      }
      
    • نکات مهم:
      • بدون position غیر از static، z-index هیچ تأثیری ندارد.
      • z-index در یک زمینه موقعیت‌یابی (stacking context) عمل می‌کند. هر عنصری که position غیر از static داشته باشد و یا خصوصیات خاصی مانند opacity، transform و غیره داشته باشد، یک زمینه موقعیت‌یابی جدید ایجاد می‌کند.

    ۴. نکات و بهترین روش‌ها در استفاده از Position در CSS

    درک نظری position کافی نیست؛ برای استفاده مؤثر از آن، به برخی نکات و بهترین روش‌ها نیاز دارید.

    ۴.۱. ایجاد زمینه موقعیت‌یابی (Positioning Context):

    پاسخ کوتاه: برای کنترل دقیق‌تر عناصر absolute، والد آن‌ها باید دارای position غیر از static باشد.

    جزئیات:

    • هنگامی که یک عنصر را position: absolute می‌دهید، این عنصر نسبت به نزدیک‌ترین والد خود که دارای position: relative, absolute, fixed, یا sticky است، موقعیت می‌یابد. اگر والد این خصوصیت را نداشته باشد، عنصر absolute تا بالاترین والد غیر static بالا می‌رود و در نهایت نسبت به <body> صفحه موقعیت می‌یابد.
    • بهترین روش: اغلب اوقات، والد یک عنصر absolute را position: relative بدهید (بدون جابجایی آن) تا یک زمینه موقعیت‌یابی برای فرزند absolute خود ایجاد کند و بتوانید آن را در محدوده والدش کنترل کنید.

    مثال:

    HTML

    <div class="card">
        <h2>عنوان محصول</h2>
        <span class="badge">جدید</span>
        <p>توضیحات محصول</p>
    </div>
    

    CSS

    .card {
        position: relative; /* والد برای badge */
        width: 250px;
        border: 1px solid #ccc;
        padding: 15px;
        margin: 20px;
        background-color: #f9f9f9;
    }
    .badge {
        position: absolute;
        top: -10px; /* خارج از محدوده والد بصورت بصری */
        right: -10px;
        background-color: red;
        color: white;
        padding: 5px 10px;
        border-radius: 5px;
        font-size: ۰.8em;
    }
    

    ۴.۲. اجتناب از position: absolute برای چیدمان کلی:

    پاسخ کوتاه: از position: absolute برای چیدمان اصلی و کلی صفحه خود استفاده نکنید.

    جزئیات:

    • absolute عناصر را از جریان عادی سند خارج می‌کند، که می‌تواند مشکلات زیادی در واکنش‌گرا بودن (Responsive Design)، قابلیت دسترسی (Accessibility) و مدیریت محتوا ایجاد کند.
    • بهترین روش: برای چیدمان‌های کلی و پیچیده، از CSS Grid و Flexbox استفاده کنید. position را برای جابجایی‌های جزئی، همپوشانی‌ها یا عناصر خاصی که باید خارج از جریان عادی باشند، رزرو کنید.

    ۴.۳. استفاده محتاطانه از z-index:

    پاسخ کوتاه: از مقادیر z-index زیاد و بی‌رویه خودداری کنید.

    جزئیات:

    • استفاده از اعداد بسیار بزرگ برای z-index (مثلاً z-index: 9999) می‌تواند مدیریت لایه‌ها را دشوار کند و مشکلات غیرقابل پیش‌بینی ایجاد کند.
    • بهترین روش: از مقادیر کم و منطقی استفاده کنید (مثلاً از ۱ تا ۱۰۰) و فقط در صورت لزوم افزایش دهید. قبل از استفاده از z-index، مطمئن شوید که عنصر شما یک “زمینه موقعیت‌یابی” دارد.

    نتیجه‌گیری: تسلط بر چیدمان وب با Position CSS

    آموزش position در CSS یک گام اساسی برای هر توسعه‌دهنده وب است که می‌خواهد کنترل کاملی بر چیدمان و ظاهر صفحات خود داشته باشد. با درک مقادیر مختلف این خصوصیت – static, relative, absolute, fixed, و sticky – و همچنین خصوصیت z-index، می‌توانید انواع طرح‌بندی‌های پیچیده و جذاب را پیاده‌سازی کنید. به یاد داشته باشید که position یک ابزار قدرتمند است، اما باید با آگاهی و در جایگاه مناسب خود استفاده شود. برای چیدمان‌های کلی، همیشه Flexbox و Grid را در اولویت قرار دهید و position را برای جزئیات، لایه‌بندی‌ها و عناصر خاص رزرو کنید. با تمرین و تجربه، به سرعت بر این خصوصیت مسلط خواهید شد و خلاقیت بیشتری در طراحی وب به خرج خواهید داد.

    آیا در پیاده‌سازی یک طرح خاص با استفاده از position در CSS به چالش خورده‌اید یا سؤالی دارید؟ تیم متخصص ما آماده است تا با ارائه مشاوره و راهنمایی‌های کاربردی، به شما در حل مشکلات چیدمان و ارتقاء مهارت‌های CSS کمک کند. همین حالا با ما تماس بگیرید و طراحی‌های خود را به سطح بعدی ببرید!


    سؤالات متداول (FAQ)

    Q1: تفاوت اصلی position: absolute و position: fixed چیست؟ A1: تفاوت اصلی در مرجع موقعیت‌یابی آن‌هاست. position: fixed همیشه نسبت به پنجره مرورگر (viewport) موقعیت می‌یابد و با اسکرول ثابت می‌ماند، در حالی که position: absolute نسبت به نزدیک‌ترین والد خود که دارای position غیر از static است (یا در نهایت <body>) موقعیت می‌یابد و با اسکرول صفحه جابجا می‌شود.

    Q2: چرا z-index روی یک عنصر با position: static کار نمی‌کند؟ A2: z-index فقط برای عناصری که از جریان عادی سند خارج شده‌اند (یعنی دارای position غیر از static هستند) یا یک “زمینه موقعیت‌یابی” خاص ایجاد کرده‌اند، عمل می‌کند. عناصر static بخشی از جریان عادی هستند و ترتیب آن‌ها با z-index تغییر نمی‌کند.

    Q3: آیا می‌توانم از position: relative بدون top/right/bottom/left استفاده کنم؟ A3: بله، می‌توانید. در این صورت عنصر با position: relative دقیقاً در جایگاه عادی خود قرار می‌گیرد و جابجایی نمی‌کند. اما این کار برای ایجاد یک “زمینه موقعیت‌یابی” برای عناصر absolute فرزندش بسیار مفید است.

    Q4: آیا position: sticky در همه مرورگرها پشتیبانی می‌شود؟ A4: position: sticky به طور گسترده توسط مرورگرهای مدرن پشتیبانی می‌شود. اما همیشه توصیه می‌شود برای اطمینان از پشتیبانی کامل در مرورگرهای قدیمی‌تر، جدول پشتیبانی مرورگرها (مانند Can I use) را بررسی کنید.

    Q5: چه زمانی باید از Flexbox/Grid استفاده کنم و چه زمانی از position؟ A5: برای چیدمان کلی و سازمان‌دهی بلوک‌های اصلی صفحه، همیشه از Flexbox و Grid استفاده کنید. این دو ابزار برای طراحی واکنش‌گرا و انعطاف‌پذیر بهینه‌سازی شده‌اند. position را برای قرار دادن عناصر خاص (مانند نوتیفیکیشن‌ها، دکمه‌های شناور، لوگوهای گوشه‌ای) یا همپوشانی‌های خاص به کار ببرید.

    میانگین امتیازات ۴ از ۵
    از مجموع ۴ رای

    ارسال یک پاسخ

    آدرس ایمیل شما منتشر نخواهد شد.

    این سایت توسط reCAPTCHA و گوگل محافظت می‌شود حریم خصوصی و شرایط استفاده از خدمات اعمال.

    The reCAPTCHA verification period has expired. Please reload the page.