删除块内的 "position:absolute" div 的水平滚动
Remove horizontal scroll in block with "position:absolute" divs inside
http://codepen.io/evilandfox/pen/EVJeqm
我正在制作移动网站宽度侧边栏,通过左右滑动显示。
有一个 div 容器,其中包括另外三个 div 块:菜单(左侧栏)、内容和右侧栏。侧边栏位于内容的左侧和右侧 "position:absolute"。因此,在滑动时添加 类 是通过更改容器的左侧位置来显示左侧或右侧边栏。
问题是容器有水平滚动条。 "overflow: hidden" 不起作用。你有什么想法吗?
所以,HTML
<div class="container">
<div class="left-sidebar">
I am menu
</div>
<div class="right-sidebar">
I am additional content
</div>
<div class="content">
I am content
</div>
</div>
CSS
.container {
position: relative;
}
.container > div {
height: 200px;
}
.container-show-left-sidebar {
left: 300px;
}
.container-show-right-sidebar {
right: 300px;
}
.content {
background-color: cyan;
}
.left-sidebar,
.right-sidebar {
width: 300px;
position: absolute;
top: 0;
}
.left-sidebar {
background-color: tomato;
left: -300px;
}
.right-sidebar {
background-color: yellow;
right: -300px;
}
您可以将 overflow: hidden 添加到 .container,但您将需要在单击它们时将左侧边栏移至左:0,将右侧边栏移至右:0。
目前,如果您打开侧边栏,内容区域只会移动 - 您还需要将侧边栏从容器外部引入。
我为您制作了一个 Codepen 分支,并做了一些改动:
http://codepen.io/anon/pen/PPgyPg
首先,我们不会向左或向右移动内容,而是向左侧和右侧应用填充,因为侧边栏位于容器的边缘,我们最终会得到 300 像素的白色 space两边。
其次,我们将使用一些事件委托而不是在按钮的 onclick 属性中使用 JS,并将 类 应用于侧边栏以将它们移入和移出:
// When your show content button is clicked
$('#show-content').on('click', function() {
// Remove both left and right classes to reset padding
$('#container').removeClass('container-show-right-sidebar container-show-left-sidebar');
// Remove active classes from both sidebars
$('.right-sidebar, .left-sidebar').removeClass('active');
});
// When your left sidebar button is clicked
$('#show-left-sidebar').on('click', function() {
// Remove the right sidebar class if it's applied and add the left sidebar classs
$('#container')
.addClass('container-show-left-sidebar')
.removeClass('container-show-right-sidebar');
// Remove active class from right sidebar
$('.right-sidebar').removeClass('active');
// Add active class to left sidebar
$('.left-sidebar').addClass('active');
});
// When your rightsidebar button is clicked
$('#show-right-sidebar').on('click', function() {
// Remove the leftsidebar class if it's applied and add the rightsidebar class
$('#container')
.removeClass('container-show-left-sidebar')
.addClass('container-show-right-sidebar');
// Add active class to right sidebar
$('.right-sidebar').addClass('active');
// Remove active class from left sidebar
$('.left-sidebar').removeClass('active');
});
我将 overflow:hidden
添加到 body
,它正在运行。笔:http://codepen.io/anon/pen/RWOeaE
http://codepen.io/evilandfox/pen/EVJeqm
我正在制作移动网站宽度侧边栏,通过左右滑动显示。
有一个 div 容器,其中包括另外三个 div 块:菜单(左侧栏)、内容和右侧栏。侧边栏位于内容的左侧和右侧 "position:absolute"。因此,在滑动时添加 类 是通过更改容器的左侧位置来显示左侧或右侧边栏。
问题是容器有水平滚动条。 "overflow: hidden" 不起作用。你有什么想法吗?
所以,HTML
<div class="container">
<div class="left-sidebar">
I am menu
</div>
<div class="right-sidebar">
I am additional content
</div>
<div class="content">
I am content
</div>
</div>
CSS
.container {
position: relative;
}
.container > div {
height: 200px;
}
.container-show-left-sidebar {
left: 300px;
}
.container-show-right-sidebar {
right: 300px;
}
.content {
background-color: cyan;
}
.left-sidebar,
.right-sidebar {
width: 300px;
position: absolute;
top: 0;
}
.left-sidebar {
background-color: tomato;
left: -300px;
}
.right-sidebar {
background-color: yellow;
right: -300px;
}
您可以将 overflow: hidden 添加到 .container,但您将需要在单击它们时将左侧边栏移至左:0,将右侧边栏移至右:0。
目前,如果您打开侧边栏,内容区域只会移动 - 您还需要将侧边栏从容器外部引入。
我为您制作了一个 Codepen 分支,并做了一些改动:
http://codepen.io/anon/pen/PPgyPg
首先,我们不会向左或向右移动内容,而是向左侧和右侧应用填充,因为侧边栏位于容器的边缘,我们最终会得到 300 像素的白色 space两边。
其次,我们将使用一些事件委托而不是在按钮的 onclick 属性中使用 JS,并将 类 应用于侧边栏以将它们移入和移出:
// When your show content button is clicked
$('#show-content').on('click', function() {
// Remove both left and right classes to reset padding
$('#container').removeClass('container-show-right-sidebar container-show-left-sidebar');
// Remove active classes from both sidebars
$('.right-sidebar, .left-sidebar').removeClass('active');
});
// When your left sidebar button is clicked
$('#show-left-sidebar').on('click', function() {
// Remove the right sidebar class if it's applied and add the left sidebar classs
$('#container')
.addClass('container-show-left-sidebar')
.removeClass('container-show-right-sidebar');
// Remove active class from right sidebar
$('.right-sidebar').removeClass('active');
// Add active class to left sidebar
$('.left-sidebar').addClass('active');
});
// When your rightsidebar button is clicked
$('#show-right-sidebar').on('click', function() {
// Remove the leftsidebar class if it's applied and add the rightsidebar class
$('#container')
.removeClass('container-show-left-sidebar')
.addClass('container-show-right-sidebar');
// Add active class to right sidebar
$('.right-sidebar').addClass('active');
// Remove active class from left sidebar
$('.left-sidebar').removeClass('active');
});
我将 overflow:hidden
添加到 body
,它正在运行。笔:http://codepen.io/anon/pen/RWOeaE