خارج از بوم
با چند کلاس و افزونه جاوا اسکریپت ما، نوارهای کناری مخفی را در پروژه خود برای پیمایش، سبد خرید و موارد دیگر ایجاد کنید.
چگونه کار می کند
Offcanvas یک مؤلفه نوار کناری است که میتوان آن را از طریق جاوا اسکریپت تغییر داد تا از لبههای چپ، راست، بالا یا پایین درگاه نمایش ظاهر شود. دکمهها یا لنگرها بهعنوان محرکهایی استفاده میشوند که به عناصر خاصی که شما تغییر میدهید متصل میشوند، و data
از ویژگیها برای فراخوانی جاوا اسکریپت ما استفاده میشود.
- Offcanvas برخی از کدهای جاوا اسکریپت مشابه را به عنوان مدال به اشتراک می گذارد. از نظر مفهومی، آنها کاملاً مشابه هستند، اما پلاگین های جداگانه ای هستند.
- به طور مشابه، برخی از متغیرهای منبع Sass برای سبکها و ابعاد offcanvas از متغیرهای modal به ارث رسیدهاند.
- وقتی نشان داده میشود، offcanvas شامل یک پسزمینه پیشفرض است که میتوان روی آن کلیک کرد تا offcanvas پنهان شود.
- مشابه حالتهای مدال، در هر بار فقط یک offcanvas قابل نمایش است.
سر بالا! با توجه به اینکه CSS چگونه انیمیشن ها را مدیریت می کند، نمی توانید از یک عنصر margin
یا translate
روی یک .offcanvas
عنصر استفاده کنید. در عوض، از کلاس به عنوان یک عنصر بسته بندی مستقل استفاده کنید.
prefers-reduced-motion
اثر انیمیشن این مؤلفه به پرسش رسانه
بستگی دارد
. بخش
حرکت کاهش یافته اسناد دسترسی ما را ببینید.
مثال ها
اجزای Offcanvas
در زیر یک مثال offcanvas است که به طور پیش فرض (از طریق .show
روی .offcanvas
) نشان داده شده است. Offcanvas شامل پشتیبانی از یک هدر با دکمه بستن و یک کلاس بدنه اختیاری برای مقدار اولیه padding
است. پیشنهاد میکنیم در صورت امکان، سرصفحههای offcanvas را با کنشهای رد کردن اضافه کنید، یا یک اقدام رد کردن صریح ارائه دهید.
خارج از بوم
<div class="offcanvas offcanvas-start show" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.
</div>
</div>
نسخه ی نمایشی زنده
از دکمه های زیر برای نمایش و پنهان کردن یک عنصر offcanvas از طریق جاوا اسکریپت استفاده کنید که .show
کلاس را روی یک عنصر با .offcanvas
کلاس تغییر می دهد.
.offcanvas
محتوا را پنهان می کند (پیش فرض).offcanvas.show
محتوا را نشان می دهد
می توانید از یک پیوند با href
ویژگی یا یک دکمه با data-bs-target
ویژگی استفاده کنید. در هر دو مورد، data-bs-toggle="offcanvas"
لازم است.
خارج از بوم
<a class="btn btn-primary" data-bs-toggle="offcanvas" href="#offcanvasExample" role="button" aria-controls="offcanvasExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" aria-controls="offcanvasExample">
Button with data-bs-target
</button>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasExampleLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div>
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
</div>
<div class="dropdown mt-3">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
Dropdown button
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
</div>
</div>
پیمایش بدنه
پیمایش <body>
عنصر زمانی غیرفعال میشود که یک offcanvas و پسزمینه آن قابل مشاهده باشد. از data-bs-scroll
ویژگی برای فعال کردن <body>
اسکرول استفاده کنید.
خارج از بوم با پیمایش بدنه
سعی کنید بقیه صفحه را اسکرول کنید تا این گزینه را در عمل ببینید.
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button>
<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasScrollingLabel">Offcanvas with body scrolling</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Try scrolling the rest of the page to see this option in action.</p>
</div>
</div>
پیمایش بدنه و پسزمینه
همچنین می توانید <body>
پیمایش با پس زمینه قابل مشاهده را فعال کنید.
پس زمینه با پیمایش
سعی کنید بقیه صفحه را اسکرول کنید تا این گزینه را در عمل ببینید.
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions" aria-controls="offcanvasWithBothOptions">Enable both scrolling & backdrop</button>
<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions" aria-labelledby="offcanvasWithBothOptionsLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Try scrolling the rest of the page to see this option in action.</p>
</div>
</div>
پس زمینه ایستا
وقتی پسزمینه روی استاتیک تنظیم میشود، offcanvas هنگام کلیک کردن در خارج از آن بسته نمیشود.
خارج از بوم
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#staticBackdrop" aria-controls="staticBackdrop">
Toggle static offcanvas
</button>
<div class="offcanvas offcanvas-start" data-bs-backdrop="static" tabindex="-1" id="staticBackdrop" aria-labelledby="staticBackdropLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="staticBackdropLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div>
I will not close if you click outside of me.
</div>
</div>
</div>
بوم تیره
اضافه شده در نسخه 5.2.0ظاهر offcanvases را با ابزارهای کاربردی تغییر دهید تا بهتر آنها را با زمینه های مختلف مانند نوارهای ناوبری تاریک مطابقت دهید. در اینجا ما .text-bg-dark
به .offcanvas
و .btn-close-white
به .btn-close
برای یک ظاهر طراحی مناسب با یک بوم تیره تیره اضافه می کنیم. اگر کرکرهای در داخل دارید، اضافه کردن .dropdown-menu-dark
به را نیز در نظر بگیرید .dropdown-menu
.
خارج از بوم
محتوای offcanvas را در اینجا قرار دهید.
<div class="offcanvas offcanvas-start show text-bg-dark" tabindex="-1" id="offcanvasDark" aria-labelledby="offcanvasDarkLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasDarkLabel">Offcanvas</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvasDark" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Place offcanvas content here.</p>
</div>
</div>
پاسخگو
اضافه شده در نسخه 5.2.0کلاسهای واکنشگرا offcanvas محتوا را خارج از viewport از یک نقطه شکست مشخص و پایین پنهان میکنند. بالاتر از آن نقطه شکست، محتویات درون طبق معمول رفتار خواهند کرد. برای مثال، .offcanvas-lg
محتوا را در یک offcanvas در زیر lg
نقطه شکست پنهان می کند، اما محتوای بالای lg
نقطه شکست را نشان می دهد.
پاسخگو offcanvas
این محتوا در یک .offcanvas-lg
است.
<button class="btn btn-primary d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasResponsive" aria-controls="offcanvasResponsive">Toggle offcanvas</button>
<div class="alert alert-info d-none d-lg-block">Resize your browser to show the responsive offcanvas toggle.</div>
<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasResponsive" aria-labelledby="offcanvasResponsiveLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasResponsiveLabel">Responsive offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#offcanvasResponsive" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p class="mb-0">This is content within an <code>.offcanvas-lg</code>.</p>
</div>
</div>
کلاسهای offcanvas پاسخگو برای هر نقطه شکست در دسترس هستند.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
تعیین سطح
هیچ جای پیشفرضی برای اجزای offcanvas وجود ندارد، بنابراین باید یکی از کلاسهای اصلاحکننده زیر را اضافه کنید.
.offcanvas-start
offcanvas را در سمت چپ درگاه نمایش قرار می دهد (نشان داده شده در بالا).offcanvas-end
offcanvas را در سمت راست درگاه دید قرار می دهد.offcanvas-top
offcanvas را در بالای درگاه دید قرار می دهد.offcanvas-bottom
offcanvas را در پایین درگاه دید قرار می دهد
نمونه های بالا، سمت راست و پایین را در زیر امتحان کنید.
بالای بوم
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop">Toggle top offcanvas</button>
<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop" aria-labelledby="offcanvasTopLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasTopLabel">Offcanvas top</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
...
</div>
</div>
Offcanvas درست است
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Toggle right offcanvas</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasRightLabel">Offcanvas right</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
...
</div>
</div>
پایین بوم
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button>
<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body small">
...
</div>
</div>
دسترسی
از آنجایی که پانل offcanvas از نظر مفهومی یک گفتگوی مودال است، حتماً aria-labelledby="..."
-با ارجاع به عنوان offcanvas- به .offcanvas
. توجه داشته باشید که نیازی به اضافه کردن ندارید role="dialog"
زیرا ما قبلاً آن را از طریق جاوا اسکریپت اضافه کرده ایم.
CSS
متغیرها
اضافه شده در نسخه 5.2.0به عنوان بخشی از رویکرد متغیرهای CSS در حال تکامل Bootstrap، offcanvas اکنون از متغیرهای CSS محلی .offcanvas
برای سفارشیسازی در زمان واقعی استفاده میکند. مقادیر برای متغیرهای CSS از طریق Sass تنظیم میشوند، بنابراین سفارشیسازی Sass نیز همچنان پشتیبانی میشود.
--#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
--#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
--#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
--#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
--#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};
--#{$prefix}offcanvas-color: #{$offcanvas-color};
--#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};
--#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
--#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
--#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
متغیرهای Sass
$offcanvas-padding-y: $modal-inner-padding;
$offcanvas-padding-x: $modal-inner-padding;
$offcanvas-horizontal-width: 400px;
$offcanvas-vertical-height: 30vh;
$offcanvas-transition-duration: .3s;
$offcanvas-border-color: $modal-content-border-color;
$offcanvas-border-width: $modal-content-border-width;
$offcanvas-title-line-height: $modal-title-line-height;
$offcanvas-bg-color: $modal-content-bg;
$offcanvas-color: $modal-content-color;
$offcanvas-box-shadow: $modal-content-box-shadow-xs;
$offcanvas-backdrop-bg: $modal-backdrop-bg;
$offcanvas-backdrop-opacity: $modal-backdrop-opacity;
استفاده
افزونه offcanvas از چند کلاس و ویژگی برای انجام کارهای سنگین استفاده می کند:
.offcanvas
محتوا را پنهان می کند.offcanvas.show
محتوا را نشان می دهد.offcanvas-start
بوم را در سمت چپ پنهان می کند.offcanvas-end
بوم را در سمت راست پنهان می کند.offcanvas-top
بوم را در بالا پنهان می کند.offcanvas-bottom
بوم را در پایین پنهان می کند
یک دکمه رد کردن با data-bs-dismiss="offcanvas"
ویژگی اضافه کنید، که عملکرد جاوا اسکریپت را فعال می کند. حتماً از <button>
عنصر با آن برای رفتار مناسب در همه دستگاهها استفاده کنید.
از طریق ویژگی های داده
تغییر وضعیت
اضافه کردن data-bs-toggle="offcanvas"
و data-bs-target
یا href
به عنصر برای اختصاص خودکار کنترل یک عنصر offcanvas. این data-bs-target
ویژگی یک انتخابگر CSS را برای اعمال offcanvas می پذیرد. حتماً کلاس offcanvas
را به عنصر offcanvas اضافه کنید. اگر میخواهید بهطور پیشفرض باز شود، کلاس اضافی را اضافه کنید show
.
رد
رد کردن را می توان با data
ویژگی روی دکمه ای در داخل offcanvas به دست آورد که در زیر نشان داده شده است:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
یا روی دکمه ای خارج از کانواس با استفاده از موارد data-bs-target
زیر نشان داده شده است:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
از طریق جاوا اسکریپت
فعال کردن دستی با:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
گزینه ها
از آنجایی که گزینهها میتوانند از طریق ویژگیهای داده یا جاوا اسکریپت ارسال شوند، میتوانید یک نام گزینه را data-bs-
مانند در ضمیمه کنید data-bs-animation="{value}"
. هنگام عبور گزینه ها از طریق ویژگی های داده، حتماً نوع حروف نام گزینه را از “ camelCase ” به “ kebab-case ” تغییر دهید. به عنوان مثال، data-bs-custom-class="beautifier"
به جای استفاده از data-bs-customClass="beautifier"
.
از Bootstrap 5.2.0، همه مؤلفهها از یک ویژگی داده رزرو شده تجربیdata-bs-config
پشتیبانی میکنند که میتواند پیکربندی مؤلفه ساده را به عنوان یک رشته JSON در خود جای دهد. هنگامی که یک عنصر دارای data-bs-config='{"delay":0, "title":123}'
و data-bs-title="456"
ویژگی باشد، مقدار نهایی title
خواهد بود 456
و ویژگی های داده جداگانه مقادیر داده شده در را لغو می کنند data-bs-config
. علاوه بر این، ویژگی های داده موجود می توانند مقادیر JSON مانند data-bs-delay='{"show":0,"hide":150}'
.
نام | تایپ کنید | پیش فرض | شرح |
---|---|---|---|
backdrop |
بولی یا رشته ایstatic |
true |
در حالی که offcanvas باز است، یک پسزمینه روی بدنه اعمال کنید. همچنین، static پسزمینهای را مشخص کنید که وقتی روی آن کلیک میشود، offcanvas بسته نشود. |
keyboard |
بولی | true |
هنگامی که کلید فرار فشار داده می شود، offcanvas را می بندد. |
scroll |
بولی | false |
هنگامی که صفحه خارج از بوم باز است، به پیمایش بدنه اجازه دهید. |
مواد و روش ها
روش ها و انتقال های ناهمزمان
همه متدهای API ناهمزمان هستند و یک انتقال را شروع می کنند . آنها به محض شروع انتقال اما قبل از پایان آن به تماس گیرنده باز می گردند . علاوه بر این، فراخوانی متد بر روی یک جزء انتقال نادیده گرفته خواهد شد .
محتوای شما را به عنوان یک عنصر offcanvas فعال می کند. یک گزینه اختیاری را می پذیرد object
.
می توانید یک نمونه offcanvas با سازنده ایجاد کنید، به عنوان مثال:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
روش | شرح |
---|---|
getInstance |
روش ایستا که به شما امکان می دهد نمونه offcanvas مرتبط با یک عنصر DOM را دریافت کنید. |
getOrCreateInstance |
روش ایستا که به شما امکان می دهد نمونه offcanvas مرتبط با یک عنصر DOM را دریافت کنید، یا در صورتی که اولیه نشده بود، یک نمونه جدید ایجاد کنید. |
hide |
یک عنصر offcanvas را پنهان می کند. قبل از اینکه عنصر offcanvas واقعاً پنهان شود (یعنی قبل از hidden.bs.offcanvas وقوع رویداد) به تماس گیرنده برمی گردد. |
show |
یک عنصر offcanvas را نشان می دهد. قبل از اینکه عنصر offcanvas واقعاً نشان داده شود (یعنی قبل از shown.bs.offcanvas وقوع رویداد) به تماس گیرنده برمی گردد. |
toggle |
یک عنصر offcanvas را به نشان داده یا پنهان تغییر می دهد. قبل از اینکه عنصر offcanvas واقعاً نشان داده یا پنهان شود (یعنی قبل از اینکه رویداد shown.bs.offcanvas یا hidden.bs.offcanvas رخ دهد) به تماس گیرنده برمی گردد. |
مناسبت ها
کلاس offcanvas بوت استرپ چند رویداد را برای اتصال به عملکرد offcanvas نشان می دهد.
نوع رویداد | شرح |
---|---|
hide.bs.offcanvas |
این رویداد بلافاصله پس از hide فراخوانی متد اجرا می شود. |
hidden.bs.offcanvas |
این رویداد زمانی فعال می شود که یک عنصر offcanvas از کاربر پنهان شده باشد (منتظر تکمیل انتقال CSS می شود). |
hidePrevented.bs.offcanvas |
این رویداد زمانی اجرا میشود که offcanvas نشان داده میشود، پسزمینه آن است static و کلیکی در خارج از offcanvas انجام میشود. این رویداد همچنین با فشار دادن کلید فرار و keyboard تنظیم گزینه روی false . |
show.bs.offcanvas |
این رویداد بلافاصله پس از show فراخوانی متد نمونه فعال می شود. |
shown.bs.offcanvas |
این رویداد زمانی فعال می شود که یک عنصر offcanvas برای کاربر قابل مشاهده باشد (منتظر تکمیل انتقال CSS می شود). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})