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

در این بخش با قابلیت اسکرول اسپای در بوت استرپ (Scrollspy) آشنا می شویم. این ویژگی هنگام اسکرول صفحه، به صورت خودکار بخش های فعال را در نوار ناوبری (navigation bar) شناسایی و به روز رسانی می کند.

نحوه عملکرد اسکرول اسپای در بوت استرپ (Scrollspy)

وقتی کاربر صفحه را اسکرول می کند و عنصری با شناسه (id) مشخص، که در ویژگی href لینک ها به آن اشاره شده، وارد ناحیه قابل مشاهده می شود، اسکرول اسپای آن را شناسایی می کند. این قابلیت با نوار ناوبری (nav)، لیست گروهی (list group)، و همچنین با هر لینک (anchor) دیگری در صفحه کار می کند.

برای استفاده از اسکرول اسپای باید دو بخش آماده کنید:
۱. یک نوار ناوبری، گروه فهرست یا مجموعه ساده ای از لینک ها
۲. یک کانتینر قابل اسکرول، مانند تگ <body> یا یک عنصر سفارشی با ارتفاع مشخص و ویژگی overflow-y: scroll

برای فعال سازی اسکرول اسپای، ویژگی های data-bs-spy="scroll" و data-bs-target="#navId" را به عنصر کانتینر اضافه کنید. شناسه "navId" به نوار ناوبری مربوط می شود. اگر کانتینر هیچ عنصر قابل فوکوسی نداشته باشد، ویژگی tabindex="0" را هم اضافه کنید تا کاربر بتواند با صفحه کلید به آن دسترسی داشته باشد.

وقتی در این کانتینر اسکرول می کنید، بوت استرپ به لینک های مربوطه در نوار ناوبری کلاس .active اضافه یا از آن حذف می کند. اگر لینک ها به شناسه های نامعتبر اشاره کنند، بوت استرپ آن ها را نادیده می گیرد. برای نمونه، لینک <a href="#home">خانه</a> باید به عنصری مانند <div id="home"></div> متصل باشد.

در بخش هایی از صفحه که عناصر غیر قابل مشاهده وجود دارند، اسکرول اسپای فقط عناصر قابل مشاهده را پردازش می کند.

اسکرول اسپای در نوار ناوبری (Navbar)

زمانی که کاربر در ناحیه زیر نوار ناوبری اسکرول می کند، می تواند تغییر کلاس .active را روی لینک های فعال مشاهده کند. همچنین هنگام باز کردن منوی کشویی (dropdown)، آیتم های هایلایت شده نمایش داده می شوند.

اسکرول اسپای در نوار ناوبری

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

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

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

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

در صورتی که به دنبال درک بهتر و تسلط کامل بر ناوبری های تو در تو هستید، دوره تخصصی بوت استرپ می تواند مسیر یادگیری شما را هموار کند.

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

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

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

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

اسکرول اسپای از لیست های گروهی (.list-group) نیز پشتیبانی می کند. زمانی که به بخش مربوط به لیست گروه اسکرول می کنید، می توانید تغییر کلاس .active را به طور واضح مشاهده کنید.

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

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

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

اسکرول اسپای در لینک های ساده

اسکرول اسپای با تمام عناصر لینک <a> به درستی کار می کند و محدود به نوار ناوبری (nav) یا لیست گروهی (list group) نیست. می توانید این قابلیت را برای هر لینک ساده ای در صفحه به کار ببرید.

اسکرول اسپای در لینک های ساده

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

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

عناصر غیر قابل مشاهده

اسکرول اسپای عناصر غیر قابل مشاهده را نادیده می گیرد و برای آیتم های ناوبری مربوط به آن ها، کلاس .active اعمال نمی کند. اگر نمونه ای از اسکرول اسپای را داخل یک بخش غیر قابل مشاهده (wrapper) مقداردهی اولیه کنید، این نمونه تمام اهداف موجود در آن بخش را نادیده می گیرد. در صورتی که بخش wrapper بعداً قابل مشاهده شد، باید از متد refresh استفاده کنید تا اسکرول اسپای وضعیت عناصر قابل مشاهده را به روز کند.

مثال:

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

استفاده از ویژگی های داده ای (data attributes)

برای پیاده سازی سریع اسکرول اسپای می توانید ویژگی data-bs-spy="scroll" را به عنصری که قصد مانیتور کردن آن را دارید (معمولاً تگ <body>) اضافه کنید.
به این ترتیب، رفتار اسکرول اسپای برای نوار ناوبری بالای صفحه (topbar navigation) فعال می شود. سپس با استفاده از ویژگی data-bs-target، شناسه (id) یا نام کلاس والد یکی از کامپوننت های .nav در بوت استرپ را مشخص می کنید تا اسکرول اسپای به درستی با آن نوار ناوبری کار کند.

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

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

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

برای فعال کردن اسکرول اسپای در نوار ناوبری بالای صفحه، ابتدا ویژگی data-bs-spy="scroll" را به عنصری که می خواهید مانیتور شود (معمولاً تگ <body>) اضافه کنید. سپس در داخل تگ <script>، می توانید اسکرول اسپای را به یک کامپوننت خاص با استفاده از شناسه (id) یا نام کلاس، مانند "navbarJavaScript"، اعمال کنید.

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

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

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

شما می توانید تنظیمات اسکرول اسپای را هم از طریق data attributes و هم از طریق جاوااسکریپت اعمال کنید.

  • برای اضافه کردن یک گزینه به صورت data attributes، کافی است از پیشوند data-bs- به همراه نام گزینه استفاده کنید. به عنوان نمونه:
    data-bs-animation="{value}". در زمان استفاده از data attributes، باید نام گزینه را به صورت kebab-case بنویسید و نه camelCase. برای مثال، از data-bs-custom-class="beautifier" استفاده کنید، نه data-bs-customClass="beautifier".
  • از نسخه Bootstrap 5.2.0 به بعد، ویژگی جدیدی به نام data-bs-config اضافه شده که به شما اجازه می دهد تنظیمات پایه ای کامپوننت را به صورت یک رشته JSON در آن ذخیره کنید. اگر یک عنصر همزمان هم ویژگی data-bs-config و هم سایر data attributes را داشته باشد، مقادیر data attributes در اولویت بالاتری نسبت به مقادیر درون data-bs-config قرار می گیرند. حتی خود data attributes نیز می توانند مقادیر JSON داشته باشند.
  • در نهایت، مقادیر موجود در data-bs-config، سایر ویژگی های data-bs- و اشیای جاوااسکریپت (JS objects) با یکدیگر ترکیب می شوند تا پیکربندی نهایی شکل بگیرد. در این ترکیب، مقدار جدیدتر هر کلید (key) جایگزین مقادیر قبلی آن می شود.

ویژگی های CSS مربوط به اسکرول اسپای در بوت استرپ

جدول زیر خصوصیات و مقادیر مربوط به افزونه ScrollSpy در بوت استرپ را توضیح می دهد:

نام ویژگی (Name) نوع داده (Type) مقدار پیش فرض (Default) توضیحات (Description)
rootMargin string 0px 0px -25% واحد معتبر rootMargin برای Intersection Observer هنگام محاسبه موقعیت اسکرول.
smoothScroll boolean false فعال کردن اسکرول نرم (smooth scrolling) زمانی که کاربر روی لینکی کلیک می کند که به عناصر تحت نظارت ScrollSpy اشاره دارد.
target string, DOM element null عنصری که افزونه ScrollSpy روی آن اعمال می شود.
threshold array [0.1, 0.5, 1] مقدار معتبر threshold برای IntersectionObserver در زمان محاسبه موقعیت اسکرول.

به این مطلب امتیاز دهید

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

پکیج صفر تا صد آموزش سئو و بهینه سازی بصورت عملی
  • انتشار: ۱۹ خرداد ۱۴۰۴

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

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

مشاهده همه

نظرات

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