Offcanvas 侧边栏 Bootstrap 3
Offcanvas Sidebar With Bootstrap 3
我的目标:
使用 Boostrap 3,创建一个独立滚动的侧边栏菜单。切换按钮需要在固定导航 header 中。 Semantic UI 具有我正在寻找的确切行为。我更愿意在不使用插件的情况下执行此操作。
我尝试过的事情:
- Jansy Bootstrap Offcanvas Reveal Sidebar
- 主要问题:在菜单切换时,页面总是滚动到顶部。我需要它不滚动
- Bootstrap Offcanvas Example
- 主要问题:在菜单切换时,菜单并不总是显示。我需要它自动成为最高值,以便它显示在固定导航下
无需任何插件即可轻松实现,您可以根据需要自定义它:
CSS:
body {
overflow-x: hidden;
}
.off-canvas {
width: 300px;
position: fixed;
left: 0;
top: 0;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
background-color: #333;
transform: translateX(-100%);
transition: .4s ease-in-out;
z-index: 1060;
}
.off-canvas-active .off-canvas {
transform: translateX(0);
}
.navbar-fixed-top {
transition: .4s ease-in-out;
width: 100%;
}
.page-wrapper {
padding-top: 50px;
transition: .4s ease-in-out;
}
.off-canvas-active .page-wrapper,
.off-canvas-active .navbar-fixed-top {
transform: translateX(300px);
}
.list-group {
padding: 20px;
}
.off-canvas-overlay {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .5);
z-index: 1050;
visibility: hidden;
opacity: 0;
transition: .4s ease-in-out;
}
.off-canvas-active .off-canvas-overlay {
opacity: 1;
visibility: visible;
}
JS:
// Toggle on button click
$('.off-canvas-toggle').on('click', function(event) {
event.preventDefault();
$('body').toggleClass('off-canvas-active');
});
// Close on mouseup and touchend
$(document).on('mouseup touchend', function(event) {
var offCanvas = $('.off-canvas')
if (!offCanvas.is(event.target) && offCanvas.has(event.target).length === 0) {
$('body').removeClass('off-canvas-active')
}
});
CODEPEN
我的目标:
使用 Boostrap 3,创建一个独立滚动的侧边栏菜单。切换按钮需要在固定导航 header 中。 Semantic UI 具有我正在寻找的确切行为。我更愿意在不使用插件的情况下执行此操作。
我尝试过的事情:
- Jansy Bootstrap Offcanvas Reveal Sidebar
- 主要问题:在菜单切换时,页面总是滚动到顶部。我需要它不滚动
- 主要问题:在菜单切换时,页面总是滚动到顶部。我需要它不滚动
- Bootstrap Offcanvas Example
- 主要问题:在菜单切换时,菜单并不总是显示。我需要它自动成为最高值,以便它显示在固定导航下
- 主要问题:在菜单切换时,菜单并不总是显示。我需要它自动成为最高值,以便它显示在固定导航下
无需任何插件即可轻松实现,您可以根据需要自定义它:
CSS:
body {
overflow-x: hidden;
}
.off-canvas {
width: 300px;
position: fixed;
left: 0;
top: 0;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
background-color: #333;
transform: translateX(-100%);
transition: .4s ease-in-out;
z-index: 1060;
}
.off-canvas-active .off-canvas {
transform: translateX(0);
}
.navbar-fixed-top {
transition: .4s ease-in-out;
width: 100%;
}
.page-wrapper {
padding-top: 50px;
transition: .4s ease-in-out;
}
.off-canvas-active .page-wrapper,
.off-canvas-active .navbar-fixed-top {
transform: translateX(300px);
}
.list-group {
padding: 20px;
}
.off-canvas-overlay {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .5);
z-index: 1050;
visibility: hidden;
opacity: 0;
transition: .4s ease-in-out;
}
.off-canvas-active .off-canvas-overlay {
opacity: 1;
visibility: visible;
}
JS:
// Toggle on button click
$('.off-canvas-toggle').on('click', function(event) {
event.preventDefault();
$('body').toggleClass('off-canvas-active');
});
// Close on mouseup and touchend
$(document).on('mouseup touchend', function(event) {
var offCanvas = $('.off-canvas')
if (!offCanvas.is(event.target) && offCanvas.has(event.target).length === 0) {
$('body').removeClass('off-canvas-active')
}
});