隐藏滚动条,但仍然能够滚动

Hide scroll bar, but while still being able to scroll

提问人:user_2215528 提问时间:5/21/2013 最后编辑:Peter Mortensenuser_2215528 更新时间:1/10/2023 访问量:2744168

问:

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

在 Google Chrome 中,它是:

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

但是Mozilla Firefox和Internet Explorer似乎不是这样工作的。

我也在CSS中尝试过:

overflow: hidden;

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

有没有办法在删除滚动条的同时仍然能够滚动整个页面?

请只使用CSS或HTML。

html css 谷歌浏览器 Internet-Explorer 火狐

评论

1赞 Franz 10/2/2020
webkit-scrollbar 在其他浏览器上不起作用吗?
0赞 Priya 4/28/2022
添加是更改数据结束部分的背景颜色。即使将属性添加到白色之后,它也不会改变任何内容::-webkit-scrollbarbackground-color

答:

106赞 4 revs, 3 users 62%Arpit Singh #1

用:

<div style='overflow:hidden; width:500px;'>
   <div style='overflow:scroll; width:508px'>
      My scroll-able area
   </div>
</div>

这是一个技巧,可以将滚动条与没有任何滚动条的重叠 div 重叠:

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

这仅适用于 WebKit 浏览器... 或者,您可以使用特定于浏览器的 CSS 内容(如果将来有)。每个浏览器都可以为其各自的栏设置不同的特定属性。

对于 Microsoft Edge 使用:或根据 MSDN-ms-overflow-style: -ms-autohiding-scrollbar;-ms-overflow-style: none;

Firefox 没有等价物。 虽然有一个 jQuery 插件可以实现这一点,但 http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html

评论

0赞 Arpit Singh 5/21/2013
ictacademie.info/oussamaelbachiri 这个网站@Oussama Dobby 使用 media='screen' 然后对 css 使用 '::-webkit-scrollbar' 属性
0赞 user_2215528 5/21/2013
什么是特定的css属性?
0赞 Arpit Singh 5/21/2013
hacky 布局或 jquery 是一种替代方案
0赞 user_2215528 5/21/2013
您的第一个解决方案给了我这个问题 s24.postimg.org/idul8zx9w/Naamloos.jpg 你说的 hacky 布局是什么意思@ArpitSingh
5赞 Ryan Williams 11/7/2014
以下允许我在 iOS7 和 iOS8 上使用 jQuery Mobile 1.4 在 Cordova 中启用本机滚动 // CSS // jQuery Mobile onMobileInit()::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; } $.mobile.touchOverflowEnabled = true;
1047赞 Mr_Green 5/21/2013 #2

只是一个运行良好的测试。

#parent{
    width: 100%;
    height: 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{
    width: 100%;
    height: 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 工作小提琴

信息:

基于这个答案,我创建了一个简单的滚动插件

评论

28赞 Roko C. Buljan 5/7/2014
在你上次的“工作小提琴”中,我看到了太多,所以我把它们都删除了:jsfiddle.net/5GCsJ/954!important
57赞 Itsik Avidan 10/22/2014
这种方法不会涵盖所有浏览器,并且非常特定于您在开发过程中使用的浏览器版本。
20赞 Robert Koritnik 6/7/2017
为什么要复杂化和计算滚动条宽度?只需设置相同的填充值即可。没有浏览器有 50px 滚动条宽度/高度,所以它应该简单地覆盖它们......box-sizing: border-box; width: calc(100% + 50px);
0赞 Brian Davis 11/12/2022
@RobertKoritnik 我对你的想法没有问题,但它的写作方式让我想在我的肺腑中尖叫“接受挑战!”,并用最蓬松的滚动条制作一个浏览器
0赞 Mr_Green 6/21/2023
@GlennMaynardit它没有错,也许已经过时了。
5赞 Hilla 4/26/2014 #3

这将在身体上:

<div id="maincontainer" >
    <div id="child">this is the 1st step</div>
    <div id="child">this is the 2nd step</div>
    <div id="child">this is the 3rd step</div>
</div>

这是CSS:

#maincontainer
{
    background: grey;
    width: 101%;
    height: 101%;
    overflow: auto;
    position: fixed;
}

#child
{
    background: white;
    height: 500px;
}
7赞 user43353 8/3/2014 #4

function reloadScrollBars() {
    document.documentElement.style.overflow = 'auto';  // Firefox, Chrome
    document.body.scroll = "yes"; // Internet Explorer only
}

function unloadScrollBars() {
    document.documentElement.style.overflow = 'hidden';  // firefox, chrome
    document.body.scroll = "no"; // Internet Explorer only
}

为要加载、卸载或重新加载滚动条的任何点调用这些函数。当我在 Chrome 中测试它时,它仍然可以在 Chrome 中滚动,但我不确定其他浏览器。

32赞 Innodel 10/22/2014 #5

只需使用以下三行,您的问题就会得到解决:

#liaddshapes::-webkit-scrollbar {
    width: 0 !important;
}

其中 liaddshapes 是 scroll 即将到来的 div 的名称。

评论

0赞 Innodel 4/3/2015
告诉我你在小提琴中的问题
1赞 santillanix 11/17/2016
简单实用,谢谢!我使用了 {display:none} 而不是 {width:0;} 并且还可以工作
34赞 Timo Kähkönen 11/21/2014 #6

这个答案不包括代码,所以这里是页面的解决方案:

根据页面,这种方法不需要提前知道滚动条的宽度就可以工作,并且该解决方案也适用于所有浏览器,可以在这里看到。

好消息是,您不必被迫使用填充或宽度差异来隐藏滚动条。

这也是变焦安全的。填充/宽度解决方案在缩放到最小时显示滚动条。

Firefox修复:http://jsbin.com/mugiqoveko/1/edit?output

.element,
.outer-container {
  width: 200px;
  height: 200px;
}
.outer-container {
  border: 5px solid purple;
  position: relative;
  overflow: hidden;
}
.inner-container {
  position: absolute;
  left: 0;
  overflow-x: hidden;
  overflow-y: scroll;
  padding-right: 150px;
}
.inner-container::-webkit-scrollbar {
  display: none;
}
<div class="outer-container">
  <div class="inner-container">
    <div class="element">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vehicula quam nibh, eu tristique tellus dignissim quis. Integer condimentum ultrices elit ut mattis. Praesent rhoncus tortor metus, nec pellentesque enim mattis nec. Nulla vitae turpis ut
      dui consectetur pellentesque quis vel est. Curabitur rutrum, mauris ut mollis lobortis, sem est congue lectus, ut sodales nunc leo a libero. Cras quis sapien in mi fringilla tempus condimentum quis velit. Aliquam id aliquam arcu. Morbi tristique
      aliquam rutrum. Duis tincidunt, orci suscipit cursus molestie, purus nisi pharetra dui, tempor dignissim felis turpis in mi. Vivamus ullamcorper arcu sit amet mauris egestas egestas. Vestibulum turpis neque, condimentum a tincidunt quis, molestie
      vel justo. Sed molestie nunc dapibus arcu feugiat, ut sollicitudin metus sagittis. Aliquam a volutpat sem. Quisque id magna ultrices, lobortis dui eget, pretium libero. Curabitur aliquam in ante eu ultricies.
    </div>
  </div>
</div>

评论

0赞 tdc 2/9/2016
这不适用于所有浏览器......仅限 webkit 浏览器。您正在使用特定于 webkit 的选择器::-webkit-scrollbar {}
0赞 Timo Kähkönen 2/9/2016
在回答这个问题之前,我在所有新浏览器中对其进行了测试。还有FF。FF发生了一些变化?
0赞 Timo Kähkönen 2/9/2016
我更新了答案。似乎添加可以解决它。在 FF、Chrome、Safari 和 Edge 中进行了测试。由于右填充大,也可以在低缩放级别下工作。padding-right: 150px;
2赞 Timo Kähkönen 8/30/2016
Edge、IE 11、IE10(可能更低)支持。在这些浏览器中,没有必要使用 padding-hack。html { -ms-overflow-style: none;}
0赞 jojo 9/28/2016
不得不使用 @Timo 的答案并获取滚动行为,但隐藏(就像 Chrome 一样)以使其在 Edge23 上工作。overflow-y: scroll
10赞 Mischa 12/3/2014 #7

HTML格式:

<div class="parent">
    <div class="child">
    </div>
</div>

CSS格式:

.parent{
    position: relative;
    width: 300px;
    height: 150px;
    border: 1px solid black;
    overflow: hidden;
}

.child {
    height: 150px;   
    width: 318px;
    overflow-y: scroll;
}

相应地应用 CSS。

在这里查看(在 Internet Explorer 和 Firefox 中测试)。

7赞 Owais 4/19/2015 #8

用:

CSS的

#subparent {
    overflow: hidden;
    width: 500px;
    border: 1px rgba(0, 0, 0, 1.00) solid;
}

#parent {
    width: 515px;
    height: 300px;
    overflow-y: auto;
    overflow-x: hidden;
    opacity: 10%;
}

#child {
    width: 511px;
    background-color: rgba(123, 8, 10, 0.42);
}

[HTML全

<body>
    <div id="subparent">
        <div id="parent">
            <div id="child">
                <!- Code here for scroll ->
            </div>
        </div>
     </div>
</body>

评论

0赞 dAngelov 4/27/2015
不知道为什么这被否决了,但我只是投了赞成票,因为它确实朝着正确的方向发展,其他解决方案在我的情况下并不奏效。overflow-x:隐藏;+ overflow-y:滚动;是什么诀窍,以及 >100% 的宽度(在我的情况下 110% 效果很好)。
1赞 mwm 1/30/2018
这与投票最多的解决方案是一回事:试图隐藏滚动条。这并不理想,因为它因浏览器而异
608赞 Anirban Bhui 6/6/2015 #9

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

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

评论

1赞 Kishor Pawar 11/30/2015
在应用程序中尝试过这个,效果很好。必须应用于元素。cordovaoverflow:scroll
80赞 Zohair 1/17/2017
不适用于 Firefox,很明显,因为这纯粹是 webkit。谢谢:)
6赞 rococo 4/30/2017
正如预期的那样,在 Electron 应用程序中运行良好,因为它们是 Chromium。+1 谢谢 :D
0赞 aleclarson 6/6/2017
从 iOS8 开始,这在与-webkit-overflow-scrolling: touch
6赞 romal tandel 2/28/2018
它适用于 Chrome。但不适用于 Mozilla Firefox。
4赞 herman 4/14/2016 #10

如果由于某种原因您想使用 ,则向内部添加填充,如当前接受的答案中所示,将不起作用。divbox-model: border-box

在这两种情况下,有效的方法是将内部的宽度增加到 100% 加上滚动条的宽度(假设在外部 div 上)。divoverflow: hidden

例如,在 CSS 中:

.container2 {
    width: calc(100% + 19px);
}

在 JavaScript 中,跨浏览器:

var child = document.getElementById('container2');
var addWidth = child.offsetWidth - child.clientWidth + "px";
child.style.width = 'calc(100% + ' + addWidth + ')';
867赞 Hristo Eftimov 8/17/2016 #11

这适用于我使用简单的CSS属性:

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

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

评论

23赞 chipit24 8/27/2016
对我来说,隐藏了Firebox中的滚动条,但也禁用了滚动。你能提供一个对你有用的演示吗?overflow: -moz-scrollbars-none
4赞 Hristo Eftimov 12/14/2016
不幸的是,该属性已删除了最新的Firefox版本:developer.mozilla.org/en-US/docs/Web/CSS/overflow-moz-scrollbars-none
4赞 aleclarson 6/6/2017
从 iOS8 开始,这在与-webkit-overflow-scrolling: touch
4赞 Martin Ždila 6/22/2017
对于过时的 Firefox,您可以使用 .请参阅 stackoverflow.com/questions/952861/...-moz-scrollbars-none@-moz-document url-prefix() { .container { overflow: hidden; } }
19赞 Hristo Eftimov 4/1/2019
我已经更新了我的答案,对 Firefox :) 的最新支持
5赞 Jean 12/7/2016 #12

这就是我对水平滚动的处理方式;只有 CSS,并且适用于 Bootstrap / col-* 等框架。它只需要两个额外的 s 和带有 or 设置的父级:divwidthmax-width

您可以选择文本使其滚动,如果您有触摸屏,则可以用手指滚动文本。

.overflow-x-scroll-no-scrollbar {
    overflow: hidden;
}
.overflow-x-scroll-no-scrollbar div {
    overflow-x: hidden;
    margin-bottom: -17px;
    overflow-y: hidden;
    width: 100%;
}
.overflow-x-scroll-no-scrollbar div * {
    overflow-x: auto;
    width: 100%;
    padding-bottom: 17px;
    white-space: nowrap;
    cursor: pointer
}

/* The following classes are only here to make the example looks nicer */
.row {
    width: 100%
}
.col-xs-4 {
    width: 33%;
    float: left
}
.col-xs-3 {
    width:25%;
    float:left
}
.bg-gray {
    background-color: #DDDDDD
}
.bg-orange {
    background-color:#FF9966
}
.bg-blue {
    background-color: #6699FF
}
.bg-orange-light{
    background-color: #FFAA88
}
.bg-blue-light{
    background-color: #88AAFF
}
<html><body>
  <div class="row">
    <div class="col-xs-4 bg-orange">Column 1</div>
    <div class="col-xs-3 bg-gray">Column 2</div>
    <div class="col-xs-4 bg-blue">Column 3</div>
  </div>
  <div class="row">
    <div class="col-xs-4 bg-orange-light">Content 1</div>
    <div class="col-xs-3 overflow-x-scroll-no-scrollbar">
      <div>
        <div>This content too long for the container, so it needs to be hidden but scrollable without scrollbars</div>
      </div>
    </div>
    <div class="col-xs-4 bg-blue-light">Content 3</div>
  </div>
</body></html>

懒惰者的简短版本:

.overflow-x-scroll-no-scrollbar {
    overflow: hidden;
}
.overflow-x-scroll-no-scrollbar div {
  overflow-x: hidden;
  margin-bottom: -17px;
  overflow-y: hidden;
  width: 100%;
}
.overflow-x-scroll-no-scrollbar div * {
  overflow-x: auto;
  width: 100%;
  padding-bottom: 17px;
  white-space: nowrap;
  cursor:pointer
}

/* The following classes are only here to make the example looks nicer */
.parent-style {
    width: 100px;
    background-color: #FF9966
}
<div class="parent-style overflow-x-scroll-no-scrollbar">
  <div>
    <div>This content too long for the container, so it needs to be hidden but scrollable without scrollbars</div>
  </div>
</div>

评论

0赞 haxpor 3/28/2017
谢谢,我试过了,效果很好。一件事是最好更改为,但具有相同的值。这不会占用底部元素的以下空间。它可以防止重叠。margin-bottompadding-bottom
0赞 Jean 3/29/2017
@haxpor 是负数,我认为它不能改为 ,不能处理负值margin-bottompadding-bottom
9赞 Doua Beri 11/12/2017 #13

在现代浏览器上,您可以使用 wheel 事件

// Content is the element you want to apply the wheel scroll effect to
content.addEventListener('wheel', function(e) {
    const step = 100; // How many pixels to scroll

    if (e.deltaY > 0) // Scroll down
        content.scrollTop += step;
    else // Scroll up
        content.scrollTop -= step;
});

评论

0赞 imans77 2/5/2019
这就是我一直在寻找的答案。谢谢。我使用了和这段代码,让(当然在 angular 5 中)是可滚动的,这些解决了我的问题。注意:我使用我的,它像正常滚动一样工作,所以我认为对于正常滚动但隐藏滚动条,这是最好的匹配。overflow: hiddenmat-card-contente.deltaYstep
1赞 jnnnnn 5/7/2019
此处链接的页面警告说这种方法不合适?
3赞 Adam Ranganathan 1/15/2018 #14

我碰巧在我的项目中尝试了上述解决方案,但由于某种原因,由于 div 定位,我无法隐藏滚动条。因此,我决定通过引入一个表面上覆盖滚动条的 div 来隐藏滚动条。以下示例是水平滚动条:

<div id="container">
  <div id="content">
     My content that could overflow horizontally
  </div>
  <div id="scroll-cover">
     &nbsp; 
  </div>
</div>

对应的CSS如下:

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

#content{
  width: 100%;
  height: 100%;
  overflow-x: scroll;
}
#scroll-cover{
  width: 100%;
  height: 20px;
  position: absolute;
  bottom: 0;
  background-color: #fff; /*change this to match color of page*/
}
584赞 Richrd 3/14/2018 #15

更新:

Firefox 现在支持使用 CSS 隐藏滚动条,因此现在涵盖了所有主要浏览器(Chrome、Firefox、Internet Explorer、Safari 等)。

只需将以下 CSS 应用于要从中删除滚动条的元素:

.container {
    overflow-y: scroll;
    scrollbar-width: none; /* Firefox */
    -ms-overflow-style: none;  /* Internet Explorer 10+ */
}
.container::-webkit-scrollbar { /* WebKit */
    width: 0;
    height: 0;
}

这是我目前所知道的最不黑客的跨浏览器解决方案。查看演示。


原文答案:

这是另一种尚未提及的方法。它非常简单,只涉及两个 div 和 CSS。不需要 JavaScript 或专有 CSS,它适用于所有浏览器。它也不需要显式设置容器的宽度,从而使其流畅。

此方法使用负边距将滚动条移出父级,然后使用相同数量的填充将内容推回其原始位置。该技术适用于垂直、水平和双向滚动。

演示:

垂直版本的示例代码:

HTML格式:

<div class="parent">
  <div class="child">
    Your content.
  </div>
</div>

CSS格式:

.parent {
  width: 400px;
  height: 200px;
  border: 1px solid #AAA;
  overflow: hidden;
}

.child {
  height: 100%;
  margin-right: -50px; /* Maximum width of scrollbar */
  padding-right: 50px; /* Maximum width of scrollbar */
  overflow-y: scroll;
}

评论

1赞 Iter Ator 8/25/2021
scrollbar-width: none在 Firefox 91 中不起作用
1赞 S.Serpooshan 3/28/2022
@IterAtor 但它适用于我的版本(Firefox 97)
0赞 Ian Jaspers 10/28/2022
我喜欢这个答案!我唯一的问题是它留下了一个微型 1px 宽的滚动条。
5赞 Lucile Fievet 6/22/2018 #16

我的问题:我不想在我的 HTML 内容中使用任何样式。我希望我的身体可以直接滚动,没有任何滚动条,只有垂直滚动,适用于任何屏幕尺寸的CSS网格

box-sizing 值影响填充或边距解决方案,它们与 box-sizing:content-box 一起使用。

我仍然需要“-moz-scrollbars-none”指令,并且像 gdoron 和 Mr_Green 一样,我不得不隐藏滚动条。我尝试过,只影响Firefox,但有响应的副作用,需要太多的工作。-moz-transform-moz-padding-start

此解决方案适用于具有“display: grid”样式的 HTML 正文内容,并且具有响应性。

/* Hide HTML and body scroll bar in CSS grid context */
html, body {
  position: static; /* Or relative or fixed ... */
  box-sizing: content-box; /* Important for hidding scrollbar */
  display: grid; /* For CSS grid */

  /* Full screen */
  width: 100vw;
  min-width: 100vw;
  max-width: 100vw;
  height: 100vh;
  min-height: 100vh;
  max-height: 100vh;
  margin: 0;
  padding: 0;
}

html {
  -ms-overflow-style: none;  /* Internet Explorer 10+ */
  overflow: -moz-scrollbars-none; /* Should hide the scroll bar */
}

/* No scroll bar for Safari and Chrome */
html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none; /* Might be enough */
  background: transparent;
  visibility: hidden;
  width: 0px;
}

/* Firefox only workaround */
@-moz-document url-prefix() {
  /* Make HTML with overflow hidden */
  html {
    overflow: hidden;
  }

  /* Make body max height auto */
  /* Set right scroll bar out the screen  */
  body {
    /* Enable scrolling content */
    max-height: auto;

    /* 100vw +15px: trick to set the scroll bar out the screen */
    width: calc(100vw + 15px);
    min-width: calc(100vw + 15px);
    max-width: calc(100vw + 15px);

    /* Set back the content inside the screen */
    padding-right: 15px;
  }
}

body {
  /* Allow vertical scroll */
  overflow-y: scroll;
}
11赞 Chris 12/25/2018 #17

截至 2018 年 12 月 11 日(Firefox 64 及更高版本),这个问题的答案确实非常简单,因为 Firefox 64+ 现在实现了 CSS 滚动条样式规范

只需使用以下 CSS:

scrollbar-width: none;

Firefox 64 发行说明链接在这里。

评论

3赞 user_2215528 1/3/2019
很高兴知道这一点!看来浏览器确实在进步,哈哈!
14赞 Meloman 3/13/2019 #18

以下内容在Microsoft,Chrome和Mozilla上为特定的div元素工作:

div.rightsidebar {
    overflow-y: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
div.rightsidebar::-webkit-scrollbar { 
    width: 0 !important;
}

评论

0赞 cimak 5/6/2019
请注意(仅限 FF)被标记为“实验性”scrollbar-width
0赞 Meloman 5/6/2019
是的,@cimak,但是在FF上,您可以隐藏它而不会出现任何问题,因此它实际上仅用于Chrome。
6赞 mangesh 4/15/2019 #19

这对我有用:

scroll-content {
    overflow-x: hidden;
    overflow-y: scroll;
}

scroll-content::-webkit-scrollbar {
    width: 0;
}
32赞 Murhaf Sousli 7/8/2019 #20

这对我跨浏览器有效。但是,这不会隐藏移动浏览器上的本机滚动条。

SCSS

.hide-native-scrollbar {
  scrollbar-width: none; /* Firefox 64 */
  -ms-overflow-style: none; /* Internet Explorer 11 */
  &::-webkit-scrollbar { /** WebKit */
    display: none;
  }
}

CSS

.hide-native-scrollbar {
  scrollbar-width: none; /* Firefox 64 */
  -ms-overflow-style: none; /* Internet Explorer 11 */
}
.hide-native-scrollbar::-webkit-scrollbar { /** WebKit */
  display: none;
}

评论

0赞 Peter Mortensen 11/10/2019
嵌套块 () 是什么意思?如何解释?而 ?也许在你的答案中详细说明?{}&
0赞 vipatron 11/15/2019
这是一个 SASS 的东西(显然,LESS 也是):css-tricks.com/the-sass-ampersand
0赞 Murhaf Sousli 11/20/2019
@PeterMortensen我现在刚刚看到你的评论,变成了CSS&::-webkit-scrollbar.hide-native-scrollbar::-webkit-scrollbar { }
0赞 adriendenat 11/29/2019
只需为 ::-webkit-scrollbar 而不是 iOS 执行。{ width: 0; height: 0;}display: none
0赞 gene b. 1/8/2020
在 FF71 中,这会阻止所有滚动。
4赞 Tienanhvn 8/14/2019 #21

您可以使用下面的代码隐藏滚动条,但仍然能够滚动:

.element::-webkit-scrollbar { 
    width: 0 !important 
}
10赞 Alexander 12/23/2019 #22

以下 Sass 样式应该使您的滚动条在大多数浏览器上透明(不支持 Firefox):

.hide-scrollbar {
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;

  &::-webkit-scrollbar {
    width: 1px;
  }

  &::-webkit-scrollbar-track {
    background: transparent;
  }

  &::-webkit-scrollbar-thumb {
    background-color: transparent;
  }
}
11赞 Alvin Moyo 4/24/2020 #23

要隐藏内容溢出的元素的滚动条,请使用。

.div{

  scrollbar-width: none; /* The most elegant way for Firefox */
}

评论

1赞 Adrien 5/7/2020
除了您提到的 FF 之外,支持几乎不存在,对于 OP 的要求来说太少了。检查 caniuse.com/#feat=mdn-css_properties_scrollbar-width
0赞 Alvin Moyo 5/19/2020
@Adrien 好吧,原始问题指出他们有针对其他浏览器的解决方案。(但是Mozilla Firefox和Internet Explorer似乎不是这样工作的)他说,这就是我给出Firefox解决方案的原因。
0赞 Sean Halls 5/26/2020
我发现这与 Webkit / Chrome 的等效项结合使用时效果很好:div::-webkit-scrollbar { display: none; }。
46赞 Wael Khalifa 6/25/2020 #24

使用它来隐藏滚动条,但保留功能:

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

隐藏 IE、Edge 和 Firefox 的滚动条

.example {
  -ms-overflow-style: none;  /* IE and Edge */
  scrollbar-width: none;  /* Firefox */
}

评论

4赞 Webalation 11/24/2021
这是IMO的最佳答案。这是我发现如何在保持上述每个浏览器的功能的同时隐藏滚动条的来源。w3schools.com/howto/howto_css_hide_scrollbars.asp
74赞 Majedur 9/18/2020 #25

此外,所有浏览器都可以在没有滚动条的情况下滚动。

CSS的

.keep-scrolling {
  background-color: #EEE;
  width: 200px;
  height: 100px;
  border: 1px dotted black;
  overflow-y: scroll; /* Add the ability to scroll the y axis */
}

/* Hide the scrollbar for Chrome, Safari and Opera */
.keep-scrolling::-webkit-scrollbar {
  display: none;
}

/* Hide the scrollbar for Internet Explorer, Edge and Firefox */
.keep-scrolling {
  -ms-overflow-style: none;  /* Internet Explorer and Edge */
  scrollbar-width: none;  /* Firefox */
}

SCSS公司

.keep-scrolling {
    background-color: #EEE;
    width: 200px;
    height: 100px;
    border: 1px dotted black;
    overflow-y: scroll; /* Add the ability to scroll the y axis */

    /* Hide the scrollbar for Internet Explorer, Edge and Firefox */
    -ms-overflow-style: none;  /* Internet Explorer and Edge */
    scrollbar-width: none;  /* Firefox */

    /* Hide the scrollbar for Chrome, Safari and Opera */
    &::-webkit-scrollbar {
       display: none;
    }
}

[HTML全

<div class="keep-scrolling">
</div>

评论

5赞 Perrier 12/16/2020
scss 版本中缺少 &:&::-webkit-scrollbar { display: none; }
13赞 thwleitaba thabk 12/11/2020 #26
.className::-webkit-scrollbar{
    display: none;
}

你写的一切都是正确的,除了“溢出”。 适用于 Chrome 和其他浏览器的 webkit

overflow-y: scroll;

overflow-y: auto;

对于 Firefox 和 Edge

scrollbar-width: none;

scrollbar-width: thin;
16赞 Sensei Zaid 12/24/2020 #27
scrollbar-width: none; 

对我有用。

评论

1赞 Samih A 7/6/2022
在我发布 caniuse.com/?search=scrollbar-width 时,对这个跨浏览器没有糊涂支持
29赞 Visal 7/23/2021 #28

只需编写以下代码:

::-webkit-scrollbar {
  width: 0px;
}

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

评论

0赞 Md Azharuddin 9/24/2023
为什么这个答案有这么多的赞成票?问题清楚地表明 webkit-scrollbar 在 firefox 中不起作用。
5赞 Muhammad Ibrahim 10/21/2021 #29
.your-overflow-scroll-class::-webkit-scrollbar {
  ...
  width: 0.5rem; //only hide the vertical scrollbar
  height: 0px; //only hide the horizontal scrollbar
}
19赞 Eliran Assaraf 4/29/2022 #30

这对我有用

div {
  -ms-overflow-style: none; /* Edge, Internet Explorer */
  scrollbar-width: none; /* Firefox */
  overflow-y: scroll;
}

// hides scrollbars while allowing to scroll
div::-webkit-scrollbar {
  display: none; /* Chrome, Safari, Opera */
}