如何在Firefox中隐藏滚动条?


81

我刚刚发现了如何在Google Chrome浏览器中隐藏滚动条,我是用以下代码完成的:

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

唯一的问题是,这在Firefox上不起作用。尝试了许多方法,但仍然无法正常工作。


2
这样做不是一个好主意。使用隐藏在html,body上的css溢出,并使用高度和宽度为100%的wrapper div。
Abhitalks 2014年

这可能有点太明显了,但是您是否为Firefox尝试了-moz-?我同意abhitalks的观点,但这似乎不是一个好方法。
Myles 2014年


Answers:


114

您可以使用scrollbar-width规则。您可以scrollbar-width: none;在Firefox中隐藏滚动条,但仍然可以自由滚动。

body {
   scrollbar-width: none;
}

您有错别字,但这应该是公认的解决方案。
shirajg

7
该功能可在最新的浏览器上使用,但请注意,这仍然是实验功能。另外,请记住,此属性应与产生滚动条的元素一起使用。例如,如果您使用的是Angular Material md-content,则主体不会产生滚动条,而md-content元素会产生滚动条。因此,body { scrollbar-width: none; }将不起作用,但md-content { scrollbar-width:none; }会起作用。
萨吉布·阿查里亚

谢谢兄弟,您节省了我很多时间!
约翰

23

要在Chrome,Firefox和IE上隐藏滚动条,可以使用以下命令:

.hide-scrollbar
{
    overflow: auto;
    -ms-overflow-style: none; /* IE 11 */
    scrollbar-width: none; /* Firefox 64 */
}

20

我可以隐藏滚动条,但仍然可以使用此解决方案使用鼠标滚轮滚动:

html {overflow: -moz-scrollbars-none;}

下载插件https://github.com/brandonaaron/jquery-mousewheel并包含以下功能:

jQuery('html,body').bind('mousewheel', function(event) {
    event.preventDefault();
    var scrollTop = this.scrollTop;
    this.scrollTop = (scrollTop + ((event.deltaY * event.deltaFactor) * -1));
    //console.log(event.deltaY, event.deltaFactor, event.originalEvent.deltaMode, event.originalEvent.wheelDelta);
  });

13
这似乎等效于“溢出:隐藏”。并且不允许滚动:-(
bob

适用于我-水平滚动条现已隐藏在Firefox中。谢谢!
Liran H

4
火狐63中,这仅适用,如果你设置layout.css.overflow.moz-scrollbars.enabledtrue在Firefox的功能设置,使得它不适合用于生产。developer.mozilla.org/zh-CN/docs/Web/CSS/overflow#已
Josh

但这对我来说并没有解决问题,但是将scrollbar-width放进去了:none; 里面的HTML做到了。
slodeveloper,

8

这是我在保留Firefox,Chrome和Edge中的滚动条时需要禁用滚动条的方式:

          @-moz-document url-prefix() { /* Disable scrollbar Firefox */
            html{
              scrollbar-width: none;
            }
          }
          body {
            margin: 0; /* remove default margin */
            scrollbar-width: none; /* Also needed to disable scrollbar Firefox */
            -ms-overflow-style: none;  /* Disable scrollbar IE 10+ */
            overflow-y: scroll;
          }
          body::-webkit-scrollbar {
            width: 0px;
            background: transparent; /* Disable scrollbar Chrome/Safari/Webkit */
          }

5

对于webkit,请使用以下命令:

::-webkit-scrollbar {
    width: 0px;  /* remove scrollbar space */
    background: transparent;  /* optional: just make scrollbar invisible */
}

对于Mozilla Firefox,请使用以下代码:

@-moz-document url-prefix() {
    html,body{overflow: hidden !important;}
}

如果滚动不起作用,则添加

element {overflow-y: scroll;}

到特定元素


4

这是一个通用的解决方案:

<div class="outer">
 <div class="inner">
    Some content...
 </div>
</div>

<style>
 .outer {
 overflow: hidden;
}
 .inner {
 margin-right: -16px;
 overflow-y: scroll;
 overflow-x: hidden;
}
</style>

滚动条被父div隐藏。

这需要您在父div中使用overflow:hidden。


3
可行,但不可靠,因为16px只是滚动条的假定宽度。
igorpavlov,2015年

46
复制时,应向真正的作者@chowey表示感谢。stackoverflow.com/questions/15394065/...
Rexhin霍查

当内部div内容长于屏幕宽度时,它就无法在FF 56上工作
Jedi先生

3
此修补程序解决了FF的问题,但在其他浏览器中有较差的副作用(剪切文本)
Kosmonaft

我可以很容易地看到自己在需要滚动我的应用程序的所有div中使用它
Philippe,

3

对于较新的Firefox版本,旧的解决方案不再起作用,但是我确实在v66.0.3中成功使用了scrollbar-color您可以设置的属性,该属性transparent transparent将使桌面上Firefox的滚动条至少不可见(仍然在视口和移动设备上不起作用,但滚动条上的细线位于右侧的内容上方)。

overflow-y: auto; //or hidden if you don't want horizontal scrolling
overflow-y: auto;
scrollbar-color: transparent transparent;

您如何在FF70 +中做到这一点?scrollbar-width: none;不再工作了。我需要隐藏滚动条,而不是使其透明。
基因b。


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

它在Firefox中不起作用,因为Firefox放弃了对具有功能的隐藏滚动条的支持(您可以overflow: -moz-scrollbars-none;在旧版本中使用)。


0

尝试使用此:

overflow-y: -moz-hidden-unscrollable;


2
隐藏,scrollbar但停止滚动动作。overflow-y: -moz-hidden-unscrollable;和之间有什么区别overflow: hidden。实际上什么也没有,所以这不是正确的答案。但我给你投票。谢谢。
AmerllicA

2
不同之处在于,第一个仅在Firefox中隐藏
peeter

我投票赞成你,但是为什么我这么奇怪-2呢?您的答案是正确的
AmerllicA'May

问题是如何隐藏滚动条,但在内容溢出时仍需要让用户滚动(如果需要),而不是完全禁用滚动。原因是FF滚动条难看,即使内容没有溢出,有时也会出现。所有其他浏览器都为此提供了简单而优雅的CSS解决方案-我想说的甚至是IE!
菲利普

0

在某些特定情况下(该元素在屏幕的右侧,或者其父级溢出被隐藏),这可以是一种解决方案:

@-moz-document url-prefix() {
  .element {
    margin-right: -15px;
  }
}

0

我尝试了所有方法,最有效的解决方案是始终显示垂直滚动条,然后添加一些负边距将其隐藏。

这适用于IE11,FF60.9和Chrome 80

body {
  -ms-overflow-style: none; /** IE11 */
  overflow-y: scroll;
  overflow-x: hidden;
  margin-right: -20px;
}

0

以防万一,如果有人正在寻找黑客,以某种方式使滚动条在firefox(79.0)中不可见。

这是一个可成功用于Chrome,IE,Safari并使Firefox中的滚动条透明的解决方案。上面的这些都没有为firefox(79.0)真正隐藏滚动条。

如果有人在不改变颜色的情况下找到一种方法,请帮忙。请在下面评论。

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

.scrollhost ::-moz-scrollbar {
  display: none;
 
}
 
.scrollhost {
  overflow: auto;
  -ms-overflow-style: none;
  scrollbar-color: transparent transparent; /*just hides the scrollbar for firefox */
}

0

create-react-app通过将其放入我的代码中,我在ReactJS中为我工作了App.css

@-moz-document url-prefix() {
  html,
  body {
    scrollbar-width: none;
  }
}

此外,body元素具有overflow: auto

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.