协慌网

登录 贡献 社区

隐藏滚动条,但仍然可以滚动

我希望能够滚动整个页面,但不显示滚动条。

在谷歌浏览器中它是:

::-webkit-scrollbar { 
    display: none; 
}

但是 Mozilla Firefox 和 Internet Explorer 似乎并没有那样工作。

我也在 CSS 中尝试过这个:

overflow: hidden;

这确实隐藏了滚动条,但我不能滚动了。

有什么办法可以删除滚动条,同时还能滚动整个页面吗?请使用 CSS 或 HTML。

答案

只是一个工作正常的测试。

#parent{
    height: 100%;
    width: 100%;
    overflow: hidden;
}

#child{
    width: 100%;
    height: 100%;
    overflow-y: scroll;
    padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */
    box-sizing: content-box; /* So the width will be 100% + 17px */
}

工作小提琴

JavaScript 的:

由于滚动条宽度在不同浏览器中有所不同,因此最好使用 JavaScript 处理它。如果执行Element.offsetWidth - Element.clientWidth ,则会显示确切的滚动条宽度。

JavaScript 工作小提琴

要么

使用Position: absolute

#parent{
    height: 100%;
    width: 100%;
    overflow: hidden;
    position: relative;
}

#child{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: -17px; /* Increase/Decrease this value for cross-browser compatibility */
    overflow-y: scroll;
}

工作小提琴

JavaScript 工作小提琴

信息:

根据这个答案,我创建了一个简单的滚动插件 。我希望这会对某人有所帮助。

在 WebKit 中很容易,有可选的样式:

html {
    overflow: scroll;
    overflow-x: hidden;
}
::-webkit-scrollbar {
    width: 0px;  /* Remove scrollbar space */
    background: transparent;  /* Optional: just make scrollbar invisible */
}
/* Optional: show position indicator in red */
::-webkit-scrollbar-thumb {
    background: #FF0000;
}

这适用于简单的 CSS 属性:

.container {
    -ms-overflow-style: none;  // IE 10+
    scrollbar-width: none;  // Firefox
}
.container::-webkit-scrollbar { 
    display: none;  // Safari and Chrome
}

更新:为 Firefox 添加了新的scrollbar-width属性。

对于旧版本的 Firefox,请使用: overflow: -moz-scrollbars-none;