آموزش ناوبری در بوت استرپ

این فصل به بررسی ناوبری ها (navs) و تب ها (tabs) در بوت استرپ می پردازد. برای ساخت منوی ناوبری از کلاس .nav و برای ساخت منوی تب از کلاس .tab استفاده می شود.

ناوبری در بوت استرپ

تمام انواع اجزای ناوبری در بوت استرپ بر پایه کلاس .nav ساخته می شوند. این اجزا با استفاده از فلکس باکس (flexbox) طراحی شده اند. شما می توانید از این اجزا برای افزودن فهرستی از لینک ها استفاده کنید تا کاربران بتوانند به صفحات مختلف وب سایت هدایت شوند.

  • برای افزودن آیتم ها در منوی ناوبری، باید از کلاس .nav-item استفاده کنید.
  • برای قرار دادن لینک ها داخل هر آیتم نیز باید از کلاس .nav-link استفاده کنید.

در اجزای .nav هیچ حالت فعال (.active) به صورت پیش فرض وجود ندارد. در مثال های بعدی این کلاس را به کار می بریم تا نشان دهیم که بوت استرپ برای آن استایل ویژه ای تعریف نکرده است.

برای اینکه لینک های فعال به فناوری های کمکی مانند صفحه خوان ها (screen readers) به درستی منتقل شوند، باید از ویژگی aria-current استفاده کنید. مقدار این ویژگی برای صفحه جاری، page است و در صورتی که آیتم فعال باشد، مقدار آن true قرار می گیرد.

ناوبری پایه در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

در صورتی که ترتیب آیتم ها اهمیت دارد، از تگ <ul> یا <ol> استفاده کنید، یا می توانید ساختار دلخواه خود را با تگ <nav> ایجاد کنید. لینک های ناوبری (nav links) عملکردی مشابه آیتم های ناوبری (nav items) دارند، زیرا کلاس .nav از نمایش فلکس (display: flex) استفاده می کند و به کد اضافه نیازی ندارد.

ناوبری با ترتیب در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

استایل های موجود

برای تغییر ظاهر کامپوننت .navs می توانید از کلاس های کمکی (modifiers) و ابزارهای کاربردی (utilities) استفاده کنید. در بخش های بعدی، این موارد را مشاهده خواهید کرد.

چینش افقی منو ناوبری در بوت استرپ

برای تغییر نحوه چینش افقی منوی ناوبری، از ابزارهای فلکس باکس (flexbox utilities) استفاده کنید. به صورت پیش فرض، ناوبری ها در سمت چپ چینش می شوند. با این حال، می توانید آن ها را به راحتی در وسط یا سمت راست صفحه قرار دهید.

برای چینش وسط، از کلاس CSS به نام .justify-content-center استفاده کنید.

چینش افقی منو ناوبری در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

برای قرار دادن منوی ناوبری در سمت راست، از کلاس CSS به نام .justify-content-end استفاده کنید.

منوی ناوبری در سمت راست

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

چینش عمودی منو ناوبری در بوت استرپ

برای چیدن آیتم های ناوبری به صورت عمودی، از کلاس کمکی .flex-column استفاده کنید. این کلاس جهت آیتم های فلکس را تغییر می دهد و باعث می شود آیتم های ناوبری به صورت ستونی در کنار هم قرار بگیرند. همچنین می توانید از نسخه های واکنش گرا (responsive) این کلاس استفاده کنید تا در اندازه های مختلف صفحه، منو به صورت عمودی نمایش داده شود. به عنوان مثال، کلاس .flex-sm-column برای این منظور کاربرد دارد.

چینش عمودی منو ناوبری در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

حتی بدون استفاده از تگ <ul> نیز می توانید منوی ناوبری را به صورت عمودی ایجاد کنید.

چینش عمودی منو ناوبری بدون استفاده از تگ <ul>

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

تب در بوت استرپ

برای ساخت منوی تب، کلاس .nav-tabs را به همراه کلاس .nav استفاده کنید. با این روش می توانید منویی به صورت تب ایجاد کنید. همچنین می توانید با استفاده از افزونه جاوا اسکریپت تب، بخش های قابل پیمایش (tabbable regions) در صفحه بسازید.

تب در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

پیل در بوت استرپ

برای ساخت منوی ناوبری به صورت پیل، به جای استفاده از کلاس .nav-tabs، کلاس .nav-pills را داخل کلاس .nav قرار دهید.

پیل در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

منوی زیرخط دار

برای ساخت منوی ناوبری با زیر خط، از کلاس .nav-underline استفاده کنید.

منوی ناوبری با زیر خط

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

پر کردن و تراز کردن منوی ناوبری در بوت استرپ

برای اینکه آیتم های ناوبری به طور یکنواخت تمام فضای موجود را پر کنند، از کلاس .nav-fill استفاده کنید. با این کار، فضای افقی به طور کامل پر می شود، حتی اگر عرض هر آیتم ناوبری متفاوت باشد.

تراز کردن منوی ناوبری در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

در ناوبری هایی که با تگ <nav> ساخته می شوند، می توانید از کلاس .nav-item صرف نظر کنید و تنها با استفاده از کلاس .nav-link، تگ های <a> را استایل دهی کنید.

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

از کلاس .nav-justified برای ایجاد آیتم هایی با عرض مساوی استفاده کنید. با این کلاس، لینک های ناوبری به طور کامل فضای افقی را پر می کنند و هر آیتم ناوبری عرض یکسانی خواهد داشت. این رفتار با کلاس .nav-fill که پیشتر توضیح داده شد، تفاوت دارد.

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

یک مثال مشابه با نمونه استفاده از .nav-fill، اما این بار با ناوبری ای که بر پایه تگ <nav> ساخته شده است.

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

کار با ابزارهای فلکس در بوت استرپ

در صورتی که به نسخه های واکنش گرا برای منوی ناوبری نیاز دارید، از ابزارهای فلکس باکس (flexbox utilities) استفاده کنید.

این ابزارها امکان سفارشی سازی بیشتر را در تمام نقاط شکست (breakpoints) مختلف فراهم می کنند. با این روش، منوی ناوبری در کوچک ترین اندازه صفحه به صورت عمودی نمایش داده می شود و از نقطه شکست کوچک به بعد، به یک چیدمان افقی که تمام عرض صفحه را می پوشاند، تغییر می کند.

منو ناوبری با فلکس باکس در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

دسترس پذیری نوار های ناوبری در بوت استرپ

  • برای نوارهای ناوبری که از کامپوننت nav استفاده می کنند، ویژگی role="navigation" را به عنصر والد تگ <ul> اضافه کنید یا کل منوی ناوبری را داخل یک تگ <nav> قرار دهید. توجه داشته باشید که این ویژگی را نباید به خود تگ <ul> بدهید، چون در این صورت فناوری های کمکی (assistive technologies) آن را به عنوان یک فهرست (list) اعلام می کنند.
  • برای نوارهای ناوبری که با کلاس .nav-tabs طراحی شده اند، نباید از ویژگی های role="tablist"، role="tab" یا role="tabpanel" استفاده کنید. این نکته مخصوصاً برای رابط های کاربری تب بندی شده دینامیک صدق می کند.
  • در رابط های تب بندی شده دینامیک، نیازی به استفاده از ویژگی aria-current وجود ندارد، زیرا جاوا اسکریپت به طور خودکار وضعیت انتخاب شده (selected state) را با ویژگی aria-selected="true" روی تب فعال مدیریت می کند.

استفاده از منوی کشویی

می توانید با استفاده از HTML و افزونه جاوا اسکریپت dropdowns، منوهای کشویی به منوی ناوبری اضافه کنید.

تب با منوی کشویی در بوت استرپ

برای ایجاد تب همراه با منوی کشویی، کلاس .nav-tabs را به عنصر <ul> اضافه کنید.

تب با منوی کشویی در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

پیل با منوی کشویی در بوت استرپ

برای نمایش منوی کشویی به صورت پیل، کلاس .nav-pills را به عنصر <ul> اضافه کنید.

پیل با منوی کشویی در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

رفتار جاوا اسکریپت

برای ایجاد پنل های محلی قابل پیمایش با استفاده از تب ها و پیل های ناوبری، از فایل bootstrap.js و افزونه جاوا اسکریپت تب (tab JavaScript plugin) استفاده کنید.

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

  • این قابلیت هم با ساختار مبتنی بر <ul> کار می کند و هم با هر نوع ساختار سفارشی که خودتان طراحی می کنید.
  • برای اینکه نقش اصلی تگ <nav> به عنوان یک نشانگر ناوبری (navigation landmark) حفظ شود، ویژگی role="tablist" را مستقیماً به آن اضافه نکنید. به جای آن، از یک عنصر جایگزین (مانند یک <div> ساده) استفاده کنید و تگ <nav> را داخل آن قرار دهید.

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

می توانید از پیل ها (pills) همراه با افزونه تب (tabs plugin) استفاده کنید.

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

برای تب های عمودی، بهتر است ویژگی aria-orientation="vertical" را به عنصر والد لیست تب ها اضافه کنید.

تب عمودی در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

دسترس پذیری

  • برای اینکه کاربران فناوری های کمکی بتوانند ساختار، عملکرد و وضعیت فعلی تب ها را به درستی درک کنند، از ویژگی های role="tablist"، role="tab"، role="tabpanel" و سایر ویژگی های aria استفاده کنید.
  • به عنوان یک روش پیشنهادی، از تگ <button> برای ایجاد تب ها استفاده کنید. این نوع کنترل ها تغییرات دینامیک در صفحه ایجاد می کنند و کاربر را به صفحه دیگری منتقل نمی کنند.
  • بر اساس راهنمای نگارش ARIA Authoring Practices، تنها تب فعال باید فوکوس صفحه کلید را دریافت کند. هنگام مقداردهی اولیه، جاوا اسکریپت ویژگی tabindex="-1" را روی تب های غیر فعال تنظیم می کند.

برای بهبود ناوبری با صفحه کلید، توصیه می شود پنل های تب (tab panels) قابلیت فوکوس داشته باشند، مگر اینکه اولین عنصر معنادار داخل آن ها از قبل قابلیت فوکوس داشته باشد. افزونه جاوا اسکریپت این موضوع را مدیریت نمی کند، بنابراین باید خودتان ویژگی tabindex="0" را به پنل های تب اضافه کنید تا امکان فوکوس فراهم شود.

افزونه جاوا اسکریپت تب ها، با رابط های تب بندی شده ای که شامل منوی کشویی هستند، به خوبی کار نمی کند. این موضوع به دلیل نگرانی های مربوط به کاربردپذیری (usability) و دسترس پذیری (accessibility) مطرح می شود. منوهای کشویی، عنصر فعال تب را مخفی می کنند و همین مسأله باعث سردرگمی کاربران می شود.

استفاده از ویژگی های داده

برای فعال کردن ناوبری تب یا پیل، ویژگی data-bs-toggle="tab" یا data-bs-toggle="pill" را روی عنصری که دارای کلاس .nav-tabs یا .nav-pills است، اضافه کنید.

فعال کردن ناوبری تب یا پیل در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

فعالسازی از طریق جاوا اسکریپت

برای فعال کردن تب های قابل پیمایش (tabbable tabs)، از جاوا اسکریپت استفاده کنید. با این روش می توانید هر تب را به صورت جداگانه فعال کنید.

می توانید تب های جداگانه را به روش های مختلف فعال کنید.

افکت محو شدن تب در بوت استرپ

برای ایجاد افکت محو شدن هنگام نمایش تب ها، کلاس .fade را به هر .tab-pane اضافه کنید. برای اینکه محتوای تب اول از ابتدا قابل مشاهده باشد، باید روی آن کلاس .show را نیز اعمال کنید.

افکت محو شدن تب در بوت استرپ

با کپی کردن کد بالا در ویرایشگر آنلاین، میتوانید آن را اجرا کنید.

آنلاین امتحان کنید

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

5/5 - (1 امتیاز)

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

دوره آموزش برنامه نویسی پایتون در 24 ساعت + ساخت ربات تلگرامی
  • انتشار: ۱۷ خرداد ۱۴۰۴

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید