css - 到达固定元素的末尾时防止滚动非固定元素

标签 css scroll

我有一个奇怪的问题,我不确定如何解决。我在左侧有一个固定的侧边栏,在右侧有一个内容。当您到达固定侧边栏的底部时,右侧的内容开始滚动。我想防止这种情况发生。我已经开始展示 fiddle 了。有什么建议么?

.menu {
position: fixed;
top: 0;
bottom: 10px;
width: 200px;
background: #eee;
margin: 10px;
overflow: scroll;
}
.content {
background: #ddd;
margin-left: 220px;
}

jsfiddle example

最佳答案

如果您不介意滚动条只在悬停时显示,您可以在悬停时禁用/启用它们。当元素的滚动条被隐藏时,该元素将不会滚动。

Javascript:

var menu = document.querySelector('.menu');
var content = document.querySelector('.content');
var body = document.querySelector('body');
menu.addEventListener('mouseenter', function (event) {
    menu.style['overflow'] = 'auto';
    menu.style['padding-right'] = '0px';
});
menu.addEventListener('mouseleave', function (event) {
    menu.style['overflow'] = 'hidden';
    menu.style['padding-right'] = '17px';
});

content.addEventListener('mouseenter', function (event) {
    body.style['overflow'] = 'auto';
    body.style['padding-right'] = '0px';
});
content.addEventListener('mouseleave', function (event) {
    body.style['overflow'] = 'hidden';
    body.style['padding-right'] = '17px';
});

同时将box-sizing: borderbox添加到menu的样式中,并将默认的隐藏样式应用于menubody :

.menu, body {
    overflow: hidden;
    padding-right: 17px;
}

JSFiddle

关于css - 到达固定元素的末尾时防止滚动非固定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448975/

相关文章:

javascript - 是否有处理浏览器大小调整的最佳实践?

javascript - ie8 上的 Jquery 脚本错误

c# - WPF 以编程方式为平板电脑启用文本框滚动/平移

javascript - Scrollbottom js 在 Firefox、Chrome、Safari 中不起作用

Javascript addEventListener 在 Firefox 和 IE 中工作,但在 Chrome 中不起作用?

ios - 基于平移手势翻译的滚动scrollview

javascript - 如何使用 webpack 渲染 CSS

css - "+"(加号)CSS 选择器是什么意思?

html - 从表中删除列

javascript - 在 IE11 上使用wheelDelta