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

این بخش به بررسی کامپوننت مودال در بوت استرپ (Modal) می پردازد. توسعه دهندگان از مودال ها برای نمایش محتوا یا پیام ها در یک پنجره محاوره ای (Dialog Box) استفاده می کنند که به صورت یک لایه روی صفحه فعلی ظاهر می شود.

شما می توانید از مودال ها برای نمایش انواع محتوا مانند تصاویر، ویدیوها، فرم ها و اعلان ها بهره ببرید.

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

برای سفارشی سازی مودال ها، کافی است از کلاس های داخلی بوت استرپ و افزونه های جاوا اسکریپت (JavaScript plugins) استفاده کنید.

وقتی کاربر روی پس زمینه مودال (Modal backdrop) کلیک می کند، مرورگر به طور خودکار مودال را می بندد.

بوت استرپ همزمان فقط از یک پنجره مودال پشتیبانی می کند.

برای جلوگیری از بروز مشکل، مودال را به جای قرار دادن درون عناصر دیگر، در بالاترین سطح ساختار صفحه (top-level) جای دهید.

استفاده از مودال ها روی دستگاه های موبایل با محدودیت هایی همراه است، زیرا موقعیت آن ها به صورت position: fixed تعریف می شود.

مدیا کوئری prefers-reduced-motion تعیین می کند که افکت های انیمیشنی مودال چگونه نمایش داده شوند.

ویژگی autofocus در تگ HTML داخل مودال های بوت استرپ به صورت پیش فرض عمل نمی کند، زیرا استاندارد HTML5 این رفتار را محدود کرده است. اگر می خواهید به نتیجه مشابه برسید، می توانید از کد جاوا اسکریپت استفاده کنید:

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

اجزای اصلی یک مودال در بوت استرپ شامل موارد زیر هستند:

  • Modal header: این بخش عنوان (title) و دکمه بستن (close button) را نمایش می دهد.

  • Modal body: این بخش محتوای اصلی مودال را ارائه می دهد.

  • Modal footer: این بخش دکمه ها یا سایر اقدامات (actions) قابل استفاده برای کاربر را در بر می گیرد.

  • Modal backdrop: این لایه نیمه شفاف پس زمینه صفحه را در زمان فعال بودن مودال می پوشاند.

  • Modal content: این بخش تمام اجزای header، body و footer را درون خود نگه می دارد.

  • Modal dialog: این محفظه بیرونی اندازه مودال و محل قرارگیری محتوا را تعیین می کند.

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

مودال ساده در بوت استرپ

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

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

پس زمینه ایستا (Static backdrop)

زمانی که پس زمینه مودال (backdrop) به صورت ایستا (static) تنظیم می شود، با کلیک بر روی آن، مودال بسته نخواهد شد.

اکنون یک مثال از استفاده از پس زمینه ایستا را بررسی می کنیم:

مودال با پس زمینه ایستا

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

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

مودال اسکرول شونده (Scrollable modal)

بوت استرپ این امکان را فراهم می کند که مودال را به صورت مستقل از صفحه، اسکرول پذیر طراحی کنید. این ویژگی زمانی کاربرد دارد که ارتفاع مودال از فضای قابل نمایش (viewport) یا اندازه صفحه دستگاه بیشتر می شود.

در ادامه یک مثال از مودال اسکرول شونده را مشاهده می کنیم:

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

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

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

مودال با چینش عمودی در مرکز

برای مرکزچین کردن عمودی مودال کافی است کلاس .modal-dialog-centered را به عنصر .modal-dialog اضافه کنید.

اکنون یک مثال از مودال با چینش عمودی در مرکز را بررسی می کنیم:

مودال با چینش عمودی در مرکز

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

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

تولتیپ (Tooltip) و پاپ اور (Popover)

شما می توانید درون مودال ها از تولتیپ و پاپ آور استفاده کنید. زمانی که مودال بسته می شود، بوت استرپ به طور خودکار تولتیپ ها و پاپ آور های داخل آن را نیز حذف می کند.

اکنون یک مثال از مودال همراه با تولتیپ را مشاهده می کنیم:

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

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

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

اکنون یک مثال از مودال همراه با پاپ آور (Popover) را بررسی می کنیم:

مودال با پاپ آور در بوت استرپ

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

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

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

شما می توانید از سیستم گرید بوت استرپ درون بخش .modal-body استفاده کنید. برای این کار، ابتدا یک .container-fluid درون .modal-body قرار می دهید و سپس بر اساس نیاز، کلاس های سیستم گرید را به کار می برید.

در ادامه یک مثال از این روش را مشاهده می کنیم:

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

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

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

تغییر محتوای مودال در بوت استرپ

اگر مجموعه ای از دکمه ها دارید که همگی یک مودال مشابه را فعال می کنند، اما می خواهید محتوای آن برای هر دکمه کمی متفاوت باشد، می توانید از event.relatedTarget و ویژگی های HTML با پیشوند data-bs-* استفاده کنید. با این روش، محتوای مودال براساس دکمه ای که کاربر کلیک کرده است، تغییر می کند.

در ادامه یک مثال از این کاربرد را مشاهده می کنیم:

تغییر محتوای مودال در بوت استرپ

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

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

جابجایی بین مودال ها در بوت استرپ (Toggle between modals)

با استفاده از ویژگی های data-bs-target و data-bs-toggle می توانید به راحتی بین چند مودال جابجا شوید.

در بوت استرپ، امکان باز کردن چند مودال به صورت همزمان وجود ندارد. اما می توانید به سادگی بین دو مودال مختلف جابجا کنید.

اکنون یک مثال از جابجایی بین مودال ها را مشاهده می کنیم:

جابجایی بین مودال ها در بوت استرپ

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

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

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

برای اضافه کردن انیمیشن به مودال، کافی است کلاس .fade را به عنصر .modal اضافه کنید. با این کار، هنگام باز و بسته شدن مودال، یک افکت محو شدن (fading effect) نمایش داده می شود.

اگر تمایل دارید انیمیشن را حذف کنید، فقط کافی است کلاس .fade را از روی .modal بردارید.

اکنون یک مثال از مودال همراه با انیمیشن را بررسی می کنیم:

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

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

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

ارتفاع های پویا

اگر ارتفاع مودال به صورت پویا تغییر کند، باید با فراخوانی تابع myModal.handleUpdate() موقعیت مودال را به روز رسانی کنید تا به درستی در صفحه نمایش داده شود.

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

برای رعایت اصول دسترسی پذیری، حتماً ویژگی aria-labelledby="..." را به مودال اضافه کنید تا به عنوان مودال اشاره کند. همچنین می توانید با استفاده از ویژگی aria-describedby توضیحاتی درباره محتوای مودال ارائه دهید. نیازی به افزودن role="dialog" وجود ندارد، زیرا این نقش به طور پیش فرض از طریق جاوا اسکریپت اعمال شده است.

اندازه های اختیاری

با افزودن کلاس های تغییر دهنده (modifier classes) به عنصر .modal-dialog می توانید از سه اندازه اختیاری برای مودال ها استفاده کنید. این اندازه ها در نقاط شکست (breakpoints) مشخص فعال می شوند تا از ایجاد نوار اسکرول افقی در صفحه های کوچک جلوگیری شود.

اندازه کلاس حداکثر عرض (Max-width)
کوچک (Small) .modal-sm 300px
پیش فرض (Default) (بدون کلاس) 500px
بزرگ (Large) .modal-lg 800px
فوق بزرگ (Extra large) .modal-xl 1140px

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

نکته: برای مشاهده تفاوت در اندازه های مختلف مودال، لطفاً اندازه مرورگر خود را تغییر دهید.

اکنون یک مثال از مودال های با اندازه های مختلف مانند xl، lg و sm را بررسی می کنیم:

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

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

مودال تمام صفحه در بوت استرپ

با استفاده از کلاس های تغییر دهنده (modifier classes) که به عنصر .modal-dialog اضافه می شوند، می توانید مودالی ایجاد کنید که کل نمای صفحه کاربر (viewport) را بپوشاند. این روش یک گزینه دیگر برای سفارشی سازی نمایش مودال به شمار می رود.

کلاس محدوده در دسترس
.modal-fullscreen همیشه (Always)
.modal-fullscreen-sm-down 576px و کمتر
.modal-fullscreen-md-down 768px و کمتر
.modal-fullscreen-lg-down 992px و کمتر
.modal-fullscreen-xl-down 1200px و کمتر
.modal-fullscreen-xxl-down 1400px و کمتر

اکنون یک مثال از مودال هایی در اندازه های مختلف که تمام صفحه را می پوشانند مشاهده می کنیم:

نکته: برای مشاهده تاثیر تغییر اندازه در انواع مختلف مودال ها، لطفاً اندازه مرورگر خود را تغییر دهید.

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

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

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

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

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

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

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

مشاهده همه

نظرات

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