أوفاكانفاس
أنشئ أشرطة جانبية مخفية في مشروعك للتنقل وعربات التسوق والمزيد مع بعض الفئات ومكوِّن JavaScript الإضافي.
كيف تعمل
Offcanvas هو أحد مكونات الشريط الجانبي التي يمكن تبديلها عبر JavaScript لتظهر من الحافة اليسرى أو اليمنى أو العلوية أو السفلية لإطار العرض. تُستخدم الأزرار أو المراسي كمشغلات مرتبطة بعناصر محددة تقوم بتبديلها ، data
وتُستخدم السمات لاستدعاء JavaScript الخاص بنا.
- يشارك Offcanvas بعضًا من نفس كود JavaScript مثل الوسائط. من الناحية المفاهيمية ، هما متشابهان تمامًا ، لكنهما مكونات إضافية منفصلة.
- وبالمثل ، فإن بعض متغيرات مصدر Sass لأنماط وأبعاد offcanvas موروثة من متغيرات الوسائط.
- عند إظهارها ، تتضمن offcanvas خلفية افتراضية يمكن النقر عليها لإخفاء offcanvas.
- على غرار النماذج ، يمكن عرض فتحة واحدة فقط في كل مرة.
انتباه! بالنظر إلى كيفية تعامل CSS مع الرسوم المتحركة ، لا يمكنك استخدام عنصر margin
أو translate
عليه .offcanvas
. بدلاً من ذلك ، استخدم الفئة كعنصر التفاف مستقل.
prefers-reduced-motion
الاستعلام عن الوسائط. راجع
قسم الحركة المخفضة في وثائق إمكانية الوصول الخاصة بنا .
أمثلة
مكونات الأغطية
يوجد أدناه مثال offcanvas يتم عرضه افتراضيًا (عبر .show
on .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 عبر JavaScript الذي يبدل .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>
للعنصر عندما تكون الفوهة وخلفيتها مرئية. استخدم 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-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>
عبر 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 مثل .title
456
data-bs-config
data-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.offcanvas or ).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...
})