Offcanvas
Бо чанд дарс ва плагини JavaScript-и мо дар лоиҳаи худ панелҳои пинҳонӣ барои паймоиш, аробаҳои харид ва ғайра созед.
Он чӣ гуна кор мекунад
Offcanvas як ҷузъи панели паҳлӯӣ мебошад, ки онро тавассути JavaScript иваз кардан мумкин аст, то аз канори чап, рост, боло ё поёни равзанаи намоиш пайдо шавад. Тугмаҳо ё лангарҳо ҳамчун триггерҳо истифода мешаванд, ки ба унсурҳои мушаххасе, ки шумо иваз мекунед, замима карда мешаванд ва data
атрибутҳо барои даъват кардани JavaScript-и мо истифода мешаванд.
- Offcanvas баъзе аз ҳамон рамзи JavaScript-ро ҳамчун модальҳо мубодила мекунад. Консепсия, онҳо хеле монанданд, аммо онҳо плагинҳои алоҳида мебошанд.
- Ба ҳамин монанд, баъзе тағирёбандаҳои сарчашмаи Sass барои услубҳо ва андозаҳои offcanvas аз тағирёбандаҳои модаль мерос гирифта мешаванд.
- Вақте ки нишон дода мешавад, offcanvas заминаеро дар бар мегирад, ки онро барои пинҳон кардани канвас клик кардан мумкин аст.
- Монанди модальҳо, дар як вақт танҳо як тасвири канвасро нишон додан мумкин аст.
Сарҳо боло! Бо назардошти он ки чӣ тавр CSS аниматсияҳоро идора мекунад, шумо наметавонед margin
ё translate
дар .offcanvas
элемент истифода баред. Ба ҷои ин, синфро ҳамчун унсури печонидани мустақил истифода баред.
prefers-reduced-motion
дархости медиа вобаста аст. Ба
қисмати камшудаи ҳаракати ҳуҷҷатҳои дастрасии мо нигаред .
Мисолхо
Компонентҳои Offcanvas
Дар зер намунаи offcanvas оварда шудааст, ки бо нобаёнӣ нишон дода шудааст (тавассути .show
on .offcanvas
). Offcanvas дорои дастгирии сарлавҳа бо тугмаи пӯшида ва синфи ихтиёрии бадан барои баъзе ибтидоӣ padding
мебошад. Мо тавсия медиҳем, ки шумо ҳангоми имконпазир сарлавҳаҳои offcanvas-ро бо амалҳои радкунӣ дохил кунед ё амали ошкоро рад кунед.
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"
зарур аст.
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>
ҳаракат аз атрибут истифода баред .
Offcanvas бо гардиши бадан
Кӯшиш кунед, ки қисми боқимондаи саҳифаро ҳаракат кунед, то ин интихобро дар амал бубинед.
<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>
Равғани сиёҳ
Дар v5.2.0 илова карда шудаастНамуди зоҳирии канвасҳоро бо утилитҳо тағир диҳед, то онҳоро бо контекстҳои гуногун ба монанди навбарҳои торик беҳтар созед. Дар ин ҷо мо .text-bg-dark
ба .offcanvas
ва .btn-close-white
ба .btn-close
барои ороиши дуруст бо канваси торик илова мекунем. Агар шумо дар дохили афтандаҳо дошта бошед, ба илова .dropdown-menu-dark
кардани .dropdown-menu
.
Offcanvas
Дар ин ҷо мундариҷаи 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>
Ҷавобгар
Дар v5.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-end
канвасро дар тарафи рости намоишгоҳ ҷойгир мекунад.offcanvas-top
тасвири канвасро дар болои тиреза ҷойгир мекунад.offcanvas-bottom
канвасро дар поёни равзанаи намоиш ҷойгир мекунад
Намунаҳои боло, рост ва поёнро дар зер санҷед.
Болои канвас
<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
Тағйирёбандаҳо
Дар v5.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"
, ки функсияи JavaScript-ро фаъол мекунад. Боварӣ ҳосил кунед, ки <button>
унсурро бо он барои рафтори дуруст дар тамоми дастгоҳҳо истифода баред.
Тавассути атрибутҳои додаҳо
Гузариш
Илова data-bs-toggle="offcanvas"
ва data-bs-target
ё href
ба элемент барои ба таври худкор таъин кардани назорати як унсури offcanvas. Аттрибут data-bs-target
интихобкунандаи CSS-ро барои татбиқи offcanvas қабул мекунад. Боварӣ ҳосил кунед, ки синфро offcanvas
ба унсури offcanvas илова кунед. Агар шумо хоҳед, ки он пешфарз кушода шавад, синфи иловагиро илова кунед show
.
Рад кардан
Аз кор озод кардан мумкин аст бо атрибут дар data
тугмаи дохили канвас , ки дар зер нишон дода шудааст, ба даст оварда шавад:
<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"
атрибутҳо мебошад, title
арзиши ниҳоӣ хоҳад буд 456
ва атрибутҳои додаҳои алоҳида арзишҳои дар data-bs-config
. Илова бар ин, атрибутҳои мавҷудаи маълумот қодиранд арзишҳои JSON ба монанди data-bs-delay='{"show":0,"hide":150}'
.
Ном | Навъи | Пешфарз | Тавсифи |
---|---|---|---|
backdrop |
булӣ ё сатрstatic |
true |
Ҳангоми кушода будани канвас заминаро дар бадан татбиқ кунед. Интихобан, static барои пасзаминае муайян кунед, ки ҳангоми клик кардани канваси берунӣ пӯшида намешавад. |
keyboard |
булӣ | true |
Вақте ки тугмаи фирор пахш мешавад, канвасро мепӯшонад. |
scroll |
булӣ | false |
Ҳангоми кушода будани канвас ба ҳаракати бадан иҷозат диҳед. |
Усулҳо
Усулҳо ва гузаришҳои асинхронӣ
Ҳама усулҳои API асинхронӣ мебошанд ва гузаришро оғоз мекунанд. Онҳо баробари оғоз шудани гузариш ба зангзананда бармегарданд, аммо пеш аз анҷоми он . Илова бар ин, даъвати методӣ ба ҷузъи гузариш нодида гирифта мешавад.
Барои маълумоти бештар ба ҳуҷҷатҳои JavaScript-и мо нигаред .
Мундариҷаи шуморо ҳамчун унсури берун аз канвас фаъол мекунад. Вариантҳои ихтиёриро қабул мекунад object
.
Шумо метавонед бо конструктор мисоли offcanvas эҷод кунед, масалан:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Усул | Тавсифи |
---|---|
getInstance |
Усули статикӣ , ки ба шумо имкон медиҳад, ки мисоли offcanvas-ро, ки бо унсури DOM алоқаманд аст, гиред. |
getOrCreateInstance |
Усули статикӣ , ки ба шумо имкон медиҳад, ки мисоли offcanvas-ро, ки бо унсури DOM алоқаманд аст, гиред ё дар сурати оғоз нашудани он нав эҷод кунед. |
hide |
Элементи канвасро пинҳон мекунад. Пеш аз он ки унсури offcanvas воқеан пинҳон карда шавад (яъне пеш аз hidden.bs.offcanvas рух додани ҳодиса) ба зангзананда бармегардад. |
show |
Унсури канвасро нишон медиҳад. Пеш аз он ки унсури offcanvas воқеан намоиш дода шавад (яъне пеш аз shown.bs.offcanvas рух додани ҳодиса) ба зангзан бармегардад. |
toggle |
Элементи offcanvas-ро ба нишон ё пинҳон иваз мекунад. Пеш аз он ки унсури offcanvas воқеан нишон дода ё пинҳон карда шавад (яъне пеш аз рух додани ҳодиса shown.bs.offcanvas ё ҳодиса) ба зангзан бармегардад.hidden.bs.offcanvas |
Ҳодисаҳо
Синфи offcanvas Bootstrap чанд ҳодисаро барои пайвастшавӣ ба функсияи offcanvas фош мекунад.
Навъи ҳодиса | Тавсифи |
---|---|
hide.bs.offcanvas |
Ин ҳодиса фавран вақте ки hide усул даъват шудааст, барканор карда мешавад. |
hidden.bs.offcanvas |
Ин ҳодиса вақте оғоз мешавад, ки унсури offcanvas аз корбар пинҳон карда шудааст (то ба анҷом расидани гузаришҳои CSS интизор мешавад). |
hidePrevented.bs.offcanvas |
Ин ҳодиса ҳангоми намоиш додани канвас, пасзаминаи он static ва клик берун аз канвас иҷро карда мешавад. Ҳодиса инчунин ҳангоми пахш кардани тугмаи фирор ва keyboard интихоб ба false . |
show.bs.offcanvas |
Ин ҳодиса фавран ҳангоми show даъват кардани усули инстансия оғоз меёбад. |
shown.bs.offcanvas |
Ин ҳодиса вақте оғоз мешавад, ки унсури offcanvas ба корбар намоён карда шудааст (то ба анҷом расидани гузаришҳои CSS интизор мешавад). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})