رفتن به محتوای اصلی به پیمایش اسناد بروید
in English

خارج از بوم

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

چگونه کار می کند

Offcanvas یک مؤلفه نوار کناری است که می توان آن را از طریق جاوا اسکریپت تغییر داد تا از لبه سمت چپ، راست یا پایین درگاه نمایش ظاهر شود. دکمه‌ها یا لنگرها به‌عنوان محرک‌هایی استفاده می‌شوند که به عناصر خاصی که شما تغییر می‌دهید متصل می‌شوند، و dataاز ویژگی‌ها برای فراخوانی جاوا اسکریپت ما استفاده می‌شود.

  • Offcanvas برخی از کدهای جاوا اسکریپت مشابه را به عنوان مدال به اشتراک می گذارد. از نظر مفهومی، آنها کاملاً مشابه هستند، اما پلاگین های جداگانه ای هستند.
  • به طور مشابه، برخی از متغیرهای منبع Sass برای سبک‌ها و ابعاد offcanvas از متغیرهای modal به ارث رسیده‌اند.
  • وقتی نشان داده می‌شود، offcanvas شامل یک پس‌زمینه پیش‌فرض است که می‌توان روی آن کلیک کرد تا offcanvas پنهان شود.
  • مشابه حالت‌های مدال، در هر بار فقط یک offcanvas قابل نمایش است.

سر بالا! با توجه به اینکه CSS چگونه انیمیشن ها را مدیریت می کند، نمی توانید از یک عنصر marginیا translateروی یک .offcanvasعنصر استفاده کنید. در عوض، از کلاس به عنوان یک عنصر بسته بندی مستقل استفاده کنید.

prefers-reduced-motionاثر انیمیشن این مؤلفه به پرسش رسانه بستگی دارد . بخش حرکت کاهش یافته اسناد دسترسی ما را ببینید.

مثال ها

اجزای Offcanvas

در زیر یک مثال offcanvas است که به طور پیش فرض (از طریق .showروی .offcanvas) نشان داده شده است. Offcanvas شامل پشتیبانی از یک هدر با دکمه بستن و یک کلاس بدنه اختیاری برای مقدار اولیه paddingاست. پیشنهاد می‌کنیم در صورت امکان، سرصفحه‌های offcanvas را با کنش‌های رد کردن اضافه کنید، یا یک اقدام رد کردن صریح ارائه دهید.

خارج از بوم
محتوای offcanvas در اینجا قرار می گیرد. شما می توانید تقریباً هر مؤلفه بوت استرپ یا عناصر سفارشی را در اینجا قرار دهید.
<div class="offcanvas offcanvas-start" 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 text-reset" 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"لازم است.

لینک با href
خارج از بوم
برخی از متن ها به عنوان جایگیر. در زندگی واقعی می توانید عناصری را که انتخاب کرده اید داشته باشید. مانند، متن، تصاویر، لیست ها و غیره
<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 text-reset" 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" id="dropdownMenuButton" data-bs-toggle="dropdown">
        Dropdown button
      </button>
      <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
        <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>

تعیین سطح

هیچ جای پیش‌فرضی برای اجزای offcanvas وجود ندارد، بنابراین باید یکی از کلاس‌های اصلاح‌کننده زیر را اضافه کنید.

  • .offcanvas-startoffcanvas را در سمت چپ درگاه نمایش قرار می دهد (نشان داده شده در بالا)
  • .offcanvas-endoffcanvas را در سمت راست درگاه دید قرار می دهد
  • .offcanvas-topoffcanvas را در بالای درگاه دید قرار می دهد
  • .offcanvas-bottomoffcanvas را در پایین درگاه دید قرار می دهد

نمونه های بالا، سمت راست و پایین را در زیر امتحان کنید.

بالای بوم
...
<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 id="offcanvasTopLabel">Offcanvas top</h5>
    <button type="button" class="btn-close text-reset" 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 id="offcanvasRightLabel">Offcanvas right</h5>
    <button type="button" class="btn-close text-reset" 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 text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
  </div>
  <div class="offcanvas-body small">
    ...
  </div>
</div>

پس زمینه

پیمایش <body>عنصر زمانی غیرفعال می‌شود که یک offcanvas و پس‌زمینه آن قابل مشاهده باشد. از data-bs-scrollویژگی برای جابجایی <body>اسکرول و data-bs-backdropتغییر پس زمینه استفاده کنید.

رنگی با پیمایش

سعی کنید بقیه صفحه را اسکرول کنید تا این گزینه را در عمل ببینید.

خارج از بوم با پس زمینه

.....

پس زمینه با پیمایش

سعی کنید بقیه صفحه را اسکرول کنید تا این گزینه را در عمل ببینید.

<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button>
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBackdrop" aria-controls="offcanvasWithBackdrop">Enable backdrop (default)</button>
<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" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel">
  <div class="offcanvas-header">
    <h5 class="offcanvas-title" id="offcanvasScrollingLabel">Colored with scrolling</h5>
    <button type="button" class="btn-close text-reset" 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>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasWithBackdrop" aria-labelledby="offcanvasWithBackdropLabel">
  <div class="offcanvas-header">
    <h5 class="offcanvas-title" id="offcanvasWithBackdropLabel">Offcanvas with backdrop</h5>
    <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
  </div>
  <div class="offcanvas-body">
    <p>.....</p>
  </div>
</div>
<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">Backdroped with scrolling</h5>
    <button type="button" class="btn-close text-reset" 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 از نظر مفهومی یک گفتگوی مودال است، حتماً aria-labelledby="..."-با ارجاع به عنوان offcanvas- به .offcanvas. توجه داشته باشید که نیازی به اضافه کردن ندارید role="dialog"زیرا ما قبلاً آن را از طریق جاوا اسکریپت اضافه کرده ایم.

ساس

متغیرها

$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 از چند کلاس و ویژگی برای انجام کارهای سنگین استفاده می کند:

  • .offcanvasمحتوا را پنهان می کند
  • .offcanvas.showمحتوا را نشان می دهد
  • .offcanvas-startبوم را در سمت چپ پنهان می کند
  • .offcanvas-endبوم را در سمت راست پنهان می کند
  • .offcanvas-bottomبوم را در پایین پنهان می کند

یک دکمه رد کردن با data-bs-dismiss="offcanvas"ویژگی اضافه کنید، که عملکرد جاوا اسکریپت را فعال می کند. حتماً از <button>عنصر با آن برای رفتار مناسب در همه دستگاه‌ها استفاده کنید.

از طریق ویژگی های داده

اضافه کردن data-bs-toggle="offcanvas"و data-bs-targetیا hrefبه عنصر برای اختصاص خودکار کنترل یک عنصر offcanvas. این data-bs-targetویژگی یک انتخابگر CSS را برای اعمال offcanvas می پذیرد. حتماً کلاس offcanvasرا به عنصر offcanvas اضافه کنید. اگر می‌خواهید به‌طور پیش‌فرض باز شود، کلاس اضافی را اضافه کنید show.

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

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

var offcanvasElementList = [].slice.call(document.querySelectorAll('.offcanvas'))
var offcanvasList = offcanvasElementList.map(function (offcanvasEl) {
  return new bootstrap.Offcanvas(offcanvasEl)
})

گزینه ها

گزینه ها را می توان از طریق ویژگی های داده یا جاوا اسکریپت منتقل کرد. data-bs-برای ویژگی های داده، نام گزینه را به مانند در ضمیمه کنید data-bs-backdrop="".

نام تایپ کنید پیش فرض شرح
backdrop بولی true در حالی که offcanvas باز است، یک پس‌زمینه روی بدنه اعمال کنید
keyboard بولی true هنگامی که کلید فرار فشار داده می شود، offcanvas را می بندد
scroll بولی false هنگامی که صفحه خارج از بوم باز است، به پیمایش بدنه اجازه دهید

مواد و روش ها

روش ها و انتقال های ناهمزمان

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

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

محتوای شما را به عنوان یک عنصر offcanvas فعال می کند. یک گزینه اختیاری را می پذیرد object.

می توانید یک نمونه offcanvas با سازنده ایجاد کنید، به عنوان مثال:

var myOffcanvas = document.getElementById('myOffcanvas')
var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas)
روش شرح
toggle یک عنصر offcanvas را به نشان داده یا پنهان تغییر می دهد. قبل از اینکه عنصر offcanvas واقعاً نشان داده یا پنهان شود (یعنی قبل از اینکه رویداد shown.bs.offcanvasیا hidden.bs.offcanvasرخ دهد) به تماس گیرنده برمی گردد.
show یک عنصر offcanvas را نشان می دهد. قبل از اینکه عنصر offcanvas واقعاً نشان داده شود (یعنی قبل از shown.bs.offcanvasوقوع رویداد) به تماس گیرنده برمی گردد.
hide یک عنصر offcanvas را پنهان می کند. قبل از اینکه عنصر offcanvas واقعاً پنهان شود (یعنی قبل از hidden.bs.offcanvasوقوع رویداد) به تماس گیرنده برمی گردد.
getInstance روش ایستا که به شما امکان می دهد نمونه offcanvas مرتبط با یک عنصر DOM را دریافت کنید
getOrCreateInstance روش ایستا که به شما امکان می دهد نمونه offcanvas مرتبط با یک عنصر DOM را دریافت کنید یا در صورتی که مقدار اولیه اولیه نشده بود، یک نمونه جدید ایجاد کنید.

مناسبت ها

کلاس offcanvas بوت استرپ چند رویداد را برای اتصال به عملکرد offcanvas نشان می دهد.

نوع رویداد شرح
show.bs.offcanvas این رویداد بلافاصله پس از showفراخوانی متد نمونه فعال می شود.
shown.bs.offcanvas این رویداد زمانی فعال می شود که یک عنصر offcanvas برای کاربر قابل مشاهده باشد (منتظر تکمیل انتقال CSS می شود).
hide.bs.offcanvas این رویداد بلافاصله پس از hideفراخوانی متد اجرا می شود.
hidden.bs.offcanvas این رویداد زمانی فعال می شود که یک عنصر offcanvas از کاربر پنهان شده باشد (منتظر تکمیل انتقال CSS می شود).
var myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', function () {
  // do something...
})