Could you please explain how offcanvas sidebar toggling works?
I can't make the actual sidebar disappear for sm. I can make the button visible (visible-sm), but toggling doesn't work - the sidebar is always visible.
Toggling works for xs size, that's fine, but I want to make it work for sm the same way, or any other size for that matter.
Partial answer: Changing max-width
in offcanvas.css makes toggling work for bigger sizes as well, sm in this case:
@media screen and (max-width: 991px) {
/* 991px instead of 767px makes toggling work for sm as well */
.row-offcanvas {
/* ... */
}
/* and so on */
}
But there's still a problem - when canvas width is between 780 and 991px, the sidebar is visible even if it's toggled off. Any idea how to fix this?
Thanks a lot
Could you please explain how offcanvas sidebar toggling works?
I can't make the actual sidebar disappear for sm. I can make the button visible (visible-sm), but toggling doesn't work - the sidebar is always visible.
Toggling works for xs size, that's fine, but I want to make it work for sm the same way, or any other size for that matter.
Partial answer: Changing max-width
in offcanvas.css makes toggling work for bigger sizes as well, sm in this case:
@media screen and (max-width: 991px) {
/* 991px instead of 767px makes toggling work for sm as well */
.row-offcanvas {
/* ... */
}
/* and so on */
}
But there's still a problem - when canvas width is between 780 and 991px, the sidebar is visible even if it's toggled off. Any idea how to fix this?
Thanks a lot
Share Improve this question edited Apr 11, 2014 at 9:15 ducu asked Apr 10, 2014 at 19:40 ducuducu 1,2192 gold badges13 silver badges14 bronze badges 2- Where is the relevant code...? what are we supposed to do with the image..? O.o – T J Commented Apr 10, 2014 at 19:43
- Here's the code getbootstrap./examples/offcanvas – ducu Commented Apr 10, 2014 at 21:00
1 Answer
Reset to default 12How does the Bootstrap off canvas example works?
The Bootstrap offcanvas example uses the grid system. For xs screens, the content spans 12 columns (full screen width) and sidebar spans 6 columns (1/2 screen width).
Normally the sidebar would be pushed under the content. However in offcanvas.css there is a rule that uses absolute positioning to place it on the right top, outside the screen.
When you press 'Toggle nav', it moves the .row
half the screen width (50%) to the left, revealing the sidebar.
Why is the sidebar shown for screen widths between 768px and 992px?
Your problem is caused by the .container
placed around the .row
. A container has a fixed width for viewports above 768px. You can solve this by using width: auto
for small screens.
@media (max-width: 991px) {
.container-smooth-sm {
width: auto;
max-width: none;
}
}
A more advanced off canvas plugin
For my projects, this approach proved to limited. Therefor I've created the offcanvas plugin and navmenu ponent. The plugin can also be used to show the navbar as offcanvas menu for small screens.
Here are some examples using the Jasny Bootstrap offcanvas plugin
- Slide in effect
- Push effect
- Reveal effect
- Offcanvas navbar