تخطي إلى المحتوى الرئيسي انتقل إلى ملاحة المستندات
Check
in English

أوفاكانفاس

أنشئ أشرطة جانبية مخفية في مشروعك للتنقل وعربات التسوق والمزيد مع بعض الفئات ومكوِّن JavaScript الإضافي.

كيف تعمل

Offcanvas هو أحد مكونات الشريط الجانبي التي يمكن تبديلها عبر JavaScript لتظهر من الحافة اليسرى أو اليمنى أو العلوية أو السفلية لإطار العرض. تُستخدم الأزرار أو المراسي كمشغلات مرتبطة بعناصر محددة تقوم بتبديلها ، dataوتُستخدم السمات لاستدعاء JavaScript الخاص بنا.

  • يشارك Offcanvas بعضًا من نفس كود JavaScript مثل الوسائط. من الناحية المفاهيمية ، هما متشابهان تمامًا ، لكنهما مكونات إضافية منفصلة.
  • وبالمثل ، فإن بعض متغيرات مصدر Sass لأنماط وأبعاد offcanvas موروثة من متغيرات الوسائط.
  • عند إظهارها ، تتضمن offcanvas خلفية افتراضية يمكن النقر عليها لإخفاء offcanvas.
  • على غرار النماذج ، يمكن عرض فتحة واحدة فقط في كل مرة.

انتباه! بالنظر إلى كيفية تعامل CSS مع الرسوم المتحركة ، لا يمكنك استخدام عنصر marginأو translateعليه .offcanvas. بدلاً من ذلك ، استخدم الفئة كعنصر التفاف مستقل.

يعتمد تأثير الرسوم المتحركة لهذا المكون على prefers-reduced-motionالاستعلام عن الوسائط. راجع قسم الحركة المخفضة في وثائق إمكانية الوصول الخاصة بنا .

أمثلة

مكونات الأغطية

يوجد أدناه مثال offcanvas يتم عرضه افتراضيًا (عبر .showon .offcanvas). يتضمن Offcanvas دعمًا لرأس مع زر إغلاق وفئة جسم اختيارية لبعض الأحرف الأولية padding. نقترح عليك تضمين عناوين offcanvas مع إجراءات الرفض كلما أمكن ذلك ، أو تقديم إجراء رفض صريح.

أوفاكانفاس
هنا يتم عرض المحتوى الخاص بالفوهة. يمكنك وضع أي مكون Bootstrap أو عناصر مخصصة هنا.
لغة البرمجة
<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 عبر JavaScript الذي يبدل .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" 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>للعنصر عندما تكون الفوهة وخلفيتها مرئية. استخدم 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>

خلفية ثابتة

عند ضبط الخلفية على ثابت ، لن يتم إغلاق الغطاء الخارجي عند النقر خارجها.

أوفاكانفاس
لن أغلق إذا نقرت خارج مني.
لغة البرمجة
<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 مع الأدوات المساعدة لمطابقتها بشكل أفضل مع سياقات مختلفة مثل navbars الداكنة. هنا نضيف .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 المستجيبة بإخفاء المحتوى خارج إطار العرض من نقطة توقف محددة ولأسفل. فوق نقطة التوقف هذه ، ستعمل المحتويات داخلها كالمعتاد. على سبيل المثال ، .offcanvas-lgيخفي المحتوى في فتحة أسفل 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"لأننا نضيفها بالفعل عبر JavaScript.

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};
  

متغيرات ساس

$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"السمة ، والتي تقوم بتشغيل وظيفة JavaScript. تأكد من استخدام <button>العنصر معه من أجل السلوك الصحيح عبر جميع الأجهزة.

عبر سمات البيانات

تبديل

إضافة data-bs-toggle="offcanvas"و a 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>
على الرغم من دعم كلتا الطريقتين لرفض أحد الأعمدة ، ضع في اعتبارك أن الرفض من الخارج لا يتطابق مع نمط حوار دليل ممارسات التأليف في ARIA (شكلي) . أفعل هذا على مسؤوليتك.

عبر JavaScript

التمكين يدويًا باستخدام:

const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))

خيارات

نظرًا لأنه يمكن تمرير الخيارات عبر سمات البيانات أو JavaScript ، يمكنك إلحاق اسم خيار بـ 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"النهائية وستتجاوز سمات البيانات المنفصلة القيم المعطاة . بالإضافة إلى ذلك ، يمكن لسمات البيانات الحالية استيعاب قيم JSON مثل .title456data-bs-configdata-bs-delay='{"show":0,"hide":150}'

اسم يكتب تقصير وصف
backdrop منطقي أو السلسلةstatic true ضع خلفية على الجسم أثناء فتح الغطاء. بدلاً من ذلك ، حدد staticخلفية لا تغلق الغطاء الخارجي عند النقر فوقه.
keyboard قيمة منطقية true يغلق الغطاء الخارجي عند الضغط على مفتاح الهروب.
scroll قيمة منطقية false السماح بتمرير الجسم أثناء فتح الغطاء.

طُرق

الطرق غير المتزامنة والانتقالات

جميع طرق API غير متزامنة وتبدأ في الانتقال . يعودون إلى المتصل بمجرد بدء الانتقال ولكن قبل أن ينتهي . بالإضافة إلى ذلك ، سيتم تجاهل استدعاء طريقة على مكون انتقالي .

راجع وثائق JavaScript الخاصة بنا للحصول على مزيد من المعلومات .

ينشط المحتوى الخاص بك كعنصر offcanvas. يقبل الخيارات الاختيارية object.

يمكنك إنشاء مثيل offcanvas باستخدام المُنشئ ، على سبيل المثال:

const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
طريقة وصف
getInstance طريقة Static تسمح لك بالحصول على مثيل offcanvas المرتبط بعنصر DOM.
getOrCreateInstance طريقة Static تسمح لك بالحصول على مثيل offcanvas المرتبط بعنصر DOM ، أو إنشاء مثيل جديد في حالة عدم تهيئته.
hide يخفي عنصر offcanvas. يعود إلى المتصل قبل إخفاء عنصر offcanvas (أي قبل hidden.bs.offcanvasوقوع الحدث).
show يظهر عنصر offcanvas. يعود إلى المتصل قبل عرض عنصر offcanvas (أي قبل shown.bs.offcanvasوقوع الحدث).
toggle يبدل عنصر offcanvas لإظهاره أو إخفاؤه. يعود إلى المتصل قبل إظهار عنصر offcanvas بالفعل أو إخفاؤه (أي قبل وقوع الحدث shown.bs.offcanvasor ).hidden.bs.offcanvas

الأحداث

تعرض فئة offcanvas في Bootstrap بعض الأحداث للتثبيت في وظيفة 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...
})