将滚动条隐藏在HTML页面上


747

可以使用CSS隐藏滚动条吗?你会怎么做?


4
@ UweKeim,IE11没有花招
daVe

Answers:


425

overflow: hidden;像这样在body标签上设置:

<style type="text/css">
    body {
        overflow: hidden;
    }
</style>

上面的代码同时隐藏了水平和垂直滚动条。

如果只想隐藏垂直滚动条,请使用overflow-y

<style type="text/css">
    body {
        overflow-y: hidden;
    }
</style>

如果只想隐藏水平滚动条,请使用overflow-x

<style type="text/css">
    body {
        overflow-x: hidden;
    }
</style>

注意:它还将禁用滚动功能。如果您只想隐藏滚动条而不是滚动功能,请参考以下答案。


4
溢出属性没有“无”选项。可用选项包括:可见,隐藏,滚动,自动,继承。
瑟吉·索科连科

1273
实际上,这并不是完全正确的答案:overflow:hidden不会“隐藏”滚动条。它还将停止页面上的滚动功能。那不是我们所要的。
2013年

17
在Chrome浏览器中,将主体溢出设置为hidden滚动时,可以使用鼠标滚轮。在Firefox中,滚动不适用于鼠标滚轮,这花了我一段时间才能弄清楚。
Doug Molineux 2013年

13
我没有断言overflow: hidden禁用滚动的意义。如果有人想隐藏滚动条,那么大概他们认为该控件是不必要的,因为首先没有内容可滚动。或者也许他们只是不想完全滚动
BoltClock

39
对我而言,断言是完全有效的,因为问题是隐藏滚动条,而不是禁用滚动
sboisse 2014年

975

WebKit支持可以用标准CSS规则隐藏的滚动条伪元素:

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

如果要隐藏所有滚动条,请使用

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

我不确定要还原-确实可以,但是可能有正确的方法:

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

您当然可以始终使用width: 0,然后可以使用轻松地对其进行恢复width: auto,但是我不喜欢滥用width可见性调整。

Firefox 64现在默认情况下支持实验性scrollbar-width属性(63需要设置配置标志)。在Firefox 64中隐藏滚动条:

#element {
    scrollbar-width: none;
}

要查看您当前的浏览器是否支持伪元素或scrollbar-width,请尝试以下代码段:


(请注意,这并不是对这个问题的正确答案,因为它也隐藏了水平条,但是那是我在Google指着我在这里时要寻找的东西,因此我认为我还是会发布它。)


11
这正是我一直想要的,因为我真的想隐藏滚动条,但元素仍可滚动(例如,向上/向下键)
Mathias 2013年

7
这应该是最好的答案,因为其他解决方案不允许您滚动
nuway

7
除了webkit之外,这是否支持其他浏览器?因为它在mozilla中不起作用。
Rupam Datta

12
Mozilla跟踪器上有功能请求。您可以通过在那儿投票来加快实施速度:)
彼得

3
这是正确的答案!由于其他人不见了。问题不仅在于隐藏滚动条,还在于溢出如何影响其他样式。我在我们的应用程序中遇到了这个完全相同的问题。我们不希望在应用程序的99%上自动溢出,但是有一个帮助部分,您希望用户可以向下滚动。由于身体有溢出:隐藏,唯一可以解决此问题的方法是在根目录上使用ng类,或者感谢这些家伙,仅使用了一些CSS。
里昂·加班

524

是的,有点..

当您问“是否可以以某种方式删除浏览器的滚动条,而不是简单地隐藏或伪装”时,每个人都会说“不可能”,因为不可能从所有浏览器中删除滚动条。兼容和交叉兼容的方式,然后就是可用性的全部论点。

但是,如果您不允许网页溢出,则可以防止浏览器产生和显示滚动条。

这仅意味着我们必须主动替代浏览器通常会为我们执行的相同行为,并告诉浏览器感谢但不感谢伙伴。与其尝试删除滚动条(众所周知,这是不可能的),我们可以避免滚动(完全可行)并在我们制作并具有更多控制权的元素内滚动。

创建一个隐藏了溢出的div。检测用户何时尝试滚动,但无法检测,因为我们已禁用浏览器的溢出(隐藏)滚动功能,而是在发生这种情况时使用JavaScript向上移动内容。从而创建我们自己的滚动而无需浏览器默认滚动或使用类似iScroll的插件。

---

为了彻底 所有供应商特定的操纵滚动条的方式:

Internet Explorer 5.5以上

*这些属性从来都不是CSS规范的一部分,也从未获得过批准或没有供应商前缀,但它们可在Internet Explorer和Konqueror中使用。这些也可以在每个应用程序的用户样式表中本地设置。在Internet Explorer中,可以在Konqueror的“样式表”选项卡下的“可访问性”选项卡下找到它。

body, html { /* These are defaults and can be replaced by hexadecimal color values */
    scrollbar-base-color: aqua;
    scrollbar-face-color: ThreeDFace;
    scrollbar-highlight-color: ThreeDHighlight;
    scrollbar-3dlight-color: ThreeDLightShadow;
    scrollbar-shadow-color: ThreeDDarkShadow;
    scrollbar-darkshadow-color: ThreeDDarkShadow;
    scrollbar-track-color: Scrollbar;
    scrollbar-arrow-color: ButtonText;
}

从Internet Explorer 8开始,这些属性已由Microsoft作为供应商前缀,但仍从未得到W3C的批准。

-ms-scrollbar-base-color
-ms-scrollbar-face-color
-ms-scrollbar-highlight-color
-ms-scrollbar-3dlight-color
-ms-scrollbar-shadow-color
-ms-scrollbar-darkshadow-color
-ms-scrollbar-base-color
-ms-scrollbar-track-color

有关Internet Explorer的更多详细信息

Internet Explorer scroll提供了用于设置是否禁用或启用滚动条的功能;它也可以用来获取滚动条的位置值。

在Microsoft Internet Explorer 6和更高版本中,当您使用!DOCTYPE声明指定符合标准的模式时,此属性将应用于HTML元素。如果没有指定标准兼容模式,与早期版本的Internet Explorer,此属性适用于该BODY元素,不是HTML元素。

还值得注意的是,在使用.NET System.Windows.Controls.Primitives时,Presentation框架中的ScrollBar类负责呈现滚动条。

http://msdn.microsoft.com/zh-CN/library/ie/ms534393(v=vs.85).aspx


WebKit

与滚动条自定义相关的WebKit扩展是:

::-webkit-scrollbar {}             /* 1 */
::-webkit-scrollbar-button {}      /* 2 */
::-webkit-scrollbar-track {}       /* 3 */
::-webkit-scrollbar-track-piece {} /* 4 */
::-webkit-scrollbar-thumb {}       /* 5 */
::-webkit-scrollbar-corner {}      /* 6 */
::-webkit-resizer {}               /* 7 */

在此处输入图片说明

这些都可以与其他伪选择器结合使用:

  • :horizontal –水平伪类适用于具有水平方向的任何滚动条。
  • :vertical –垂直伪类适用于任何具有垂直方向的滚动条。
  • :decrement–减量伪类适用于按钮和轨道块。它指示按钮或轨迹块在使用时是否会降低视图的位置(例如,在垂直滚动条上向上,在水平滚动条上左侧)。
  • :increment–增量伪类适用于按钮和跟踪片段。它指示按钮或跟踪块在使用时是否会增加视图的位置(例如,在垂直滚动条上向下,在水平滚动条上右侧)。
  • :start– start伪类适用于按钮和跟踪片段。它指示对象是否放置在拇指之前。
  • :end–结束伪类适用于按钮和跟踪片段。它指示对象是否放置在拇指后面。
  • :double-button–双按钮伪类适用于按钮和轨道块。它用于检测按钮是否是在滚动条的同一端在一起的一对按钮的一部分。对于履带板,它指示履带板是否邻接一对按钮。
  • :single-button–单按钮伪类适用于按钮和轨道块。它用于检测按钮是否位于滚动条末尾。对于履带板,它指示履带板是否邻接单例按钮。
  • :no-button –适用于曲目片断,并指示曲目片断是否延伸到滚动条的边缘,即,该曲目的末端没有按钮。
  • :corner-present –适用于所有滚动条,并指示是否存在滚动条角。
  • :window-inactive–适用于所有滚动条,并指示包含滚动条的窗口当前是否处于活动状态。(在最近的夜间,此伪类现在也适用于:: selection。我们计划将其扩展为可处理任何内容,并将其提议为新的标准伪类。)

这些组合的例子

::-webkit-scrollbar-track-piece:start { /* Select the top half (or left half) or scrollbar track individually */ }
::-webkit-scrollbar-thumb:window-inactive { /* Select the thumb when the browser window isn't in focus */ }
::-webkit-scrollbar-button:horizontal:decrement:hover { /* Select the down or left scroll button when it's being hovered by the mouse */ }

有关Chrome的更多详细信息

addWindowScrollHandler 公共静态HandlerRegistration addWindowScrollHandler(Window.ScrollHandler处理程序)

  添加Window.ScrollEvent处理程序参数:handler-处理程序返回:返回处理程序注册[ ](http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/Window.html# addWindowScrollHandler(com.google.gwt.user.client.Window.ScrollHandler)


Mozilla

Mozilla确实具有一些用于操纵滚动条的扩展,但建议不要使用它们。

  • -moz-scrollbars-none 他们建议使用overflow:hidden代替它。
  • -moz-scrollbars-horizontal 类似于overflow-x
  • -moz-scrollbars-vertical 类似于溢出y
  • -moz-hidden-unscrollable仅在用户个人资料设置内在内部起作用。禁用滚动XML根元素,并禁用使用箭头键和鼠标滚轮滚动网页。

  • Mozilla开发人员文档“溢出”

有关Mozilla的更多详细信息

就我所知,这并不是真正有用的,但是值得注意的是,控制Firefox中是否显示滚动条的属性是(参考链接):

  • 属性:        滚动条
  • 类型:               nsIDOMBarProp
  • 说明:   控制窗口中是否显示滚动条的对象。此属性在JavaScript中是“可替换的”。只读

最后但并非最不重要的一点是,填充就像魔术一样。

如前面在其他一些答案中所提到的,这是一个不言自明的图示。

在此处输入图片说明


历史课

滚动条

只是因为我很好奇,所以我想了解滚动条的起源,这些是我发现的最佳参考。

在HTML5规范草案中,seamless定义了该属性,以防止滚动条出现在iFrame中,以便它们可以与页面上的周围内容混合。尽管此元素未出现在最新版本中。

scrollbarBarProp对象是该对象的子window对象,代表包含滚动机制或某些类似界面概念的用户界面元素。如果滚动条可见,window.scrollbars.visible将返回true

interface Window {
  // The current browsing context
  readonly attribute WindowProxy window;
  readonly attribute WindowProxy self;
           attribute DOMString name;
  [PutForwards=href] readonly attribute Location location;
  readonly attribute History history;
  readonly attribute UndoManager undoManager;
  Selection getSelection();
  [Replaceable] readonly attribute BarProp locationbar;
  [Replaceable] readonly attribute BarProp menubar;
  [Replaceable] readonly attribute BarProp personalbar;
  [Replaceable] readonly attribute BarProp scrollbars;
  [Replaceable] readonly attribute BarProp statusbar;
  [Replaceable] readonly attribute BarProp toolbar;
  void close();
  void focus();
  void blur();
  // Truncated

History API还包括用于页面导航上的滚动恢复的功能,以在页面加载时保持滚动位置。

window.history.scrollRestoration可用于检查滚动恢复的状态或更改其状态(附加="auto"/"manual"。自动是默认值。将其更改为手动意味着您作为开发人员将拥有用户遍历应用程序历史记录时可能需要进行的所有滚动更改的所有权如果需要,您可以在使用history.pushState()推送历史记录条目时跟踪滚动位置。

---

进一步阅读:

例子


27
该答案将适用于明显更多的浏览器(即IE),而不是当前认可的答案。
Matt Jensen 2014年

很棒的补充。今天实际上实现了相同的解决方案!可能值得一提的是另一个元素应该溢出:隐藏;
Matt Jensen 2014年

2
这是正确的,功能齐全的答案。我解释说,如果您只是想阻止用户滚动,则可以使用溢出规则。您还可以实现自己的内置滚动功能。如果这还不够,您可以针对不同的浏览器使用不同的规则直接设置滚动条属性。
newshorts's

1
虽然这是一个经过深思熟虑的答案,而且非常详尽,并且链接了许多资源,但是当您禁用滚动并使用javascript处理所有滚动时,辅助技术用户会遇到很多问题。如果每次滚动用户时也未将焦点设置为某个元素,则AT用户将完全丢失。而且,您的用户现在已经失去了对其所看到内容的所有微调控制。用户体验非常差的UX来接管滚动。
ShiningLight

MacOS High Sierra上的Firefox Quantum 63.0.1即使使用“ overflow:-moz-scrollbars-none”规则也不会隐藏滚动条。有人知道解决方案吗?所有其他浏览器似乎都可以使用建议的解决方案。
西蒙娜·阿德里亚尼

106

您可以使用一个包装程序来实现此目的,该程序div的溢出隐藏起来,内部div设置为auto

要删除内部div的滚动条,可以div通过向内部应用负边距将其从外部的视口中拉出div。然后将相等的填充应用于内部div,以使内容保持可见。

JSFiddle

的HTML

<div class="hide-scroll">
    <div class="viewport">
        ...
    </div>
</div>

的CSS

.hide-scroll {
    overflow: hidden;
}

.viewport {
    overflow: auto;

    /* Make sure the inner div is not larger than the container
     * so that we have room to scroll.
     */
    max-height: 100%;

    /* Pick an arbitrary margin/padding that should be bigger
     * than the max width of all the scroll bars across
     * the devices you are targeting.
     * padding = -margin
     */
    margin-right: -100px;
    padding-right: 100px;
}

8
这应该是imo可接受的答案。只有我不得不添加的东西是height: inherited.viewportCSS。
Helzgate 2015年

4
这个答案的唯一问题是被移动的滚动条留下的“死”空间,因为我们实际上并不知道滚动条的宽度,以便从填充中减去它。
Frondor '16

3
另外,您无需对填充和边距使用固定值。100%更通用,可以胜任。
Frondor '16

在IE11,Operah和Chrome中工作过,尚未测试Firefox。这是一个很好的答案,+ 1。
几乎是初学者

为什么-100px100px??
oldboy

61

这对我有用简单的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;


2
不幸的是,这在macOS Sierra上的FireFox 48.0.2中不起作用。如果这样做,overflow: -moz-scrollbars-none;则可以成功删除滚动条,但同时也删除了滚动功能。您最好将设置overflow: hidden.container
马丁·

1
哦,从developer.mozilla.org/en-US/docs/Web/CSS/overflow,我们读到了以下内容-moz-scrollbars-none:“这是一个过时的API,不再保证能正常工作。”
马丁·钱伯林

1
我已使用对Firefox的最新支持更新了答案:)
Hristo Eftimov,

56

这是我的解决方案,理论上涵盖了所有现代浏览器:

html {
    scrollbar-width: none; /* For Firefox */
    -ms-overflow-style: none; /* For Internet Explorer and Edge */
}

html::-webkit-scrollbar {
    width: 0px; /* For Chrome, Safari, and Opera */
}

html 可以替换为要隐藏其滚动条的任何元素。

注意:我已经浏览了其他19个答案,以查看我发布的代码是否已被涵盖,似乎没有一个答案可以概括出2019年的情况,尽管其中有很多细节都很好。抱歉,如果有人说了这个,我错过了。


3
在这里最被低估的答案
AGrush

唯一可以解决我的噩梦的解决方案:D谢谢!
boomdrak

21

如果您仍然感兴趣,我想我为您找到了一种解决方法。这是我的第一周,但对我有用。

<div class="contentScroller">
    <div class="content">
    </div>
</div>

.contentScroller {overflow-y: auto; visibility: hidden;}
.content {visibility: visible;}

适用于我在chrome和firefox中使用,尚未测试IE或任何其他浏览器。 jsfiddle.net/8xtfk729
本·戴维斯

1
在chrome(至少v54)上,由于某种原因,这将禁用通过滚轮的滚动。通过箭头键滚动,主页/结束/ pg向下/ pg向上滚动,轻拂,然后单击鼠标3单击n拖动仍然有效。
House3272 '12

这个答案是合法的,它实际上有效,并且似乎可以跨浏览器使用。
山姆

这将整个div隐藏在我的身旁
Jonny

16

如果您正在寻找隐藏移动设备滚动条的解决方案,请遵循Peter的回答

这是一个jsfiddle,它使用以下解决方案隐藏水平滚动条。

.scroll-wrapper{
    overflow-x: scroll;
}
.scroll-wrapper::-webkit-scrollbar { 
    display: none; 
}

它已在装有Android 4.0.4的三星平板电脑(冰淇淋三明治,在本机浏览器和Chrome中都进行了测试)和在装有iOS 6的iPad(在Safari和Chrome中都进行了测试)中进行了测试。


他的答案在iOS 12.3中的Chrome和Safari上不起作用
oldboy



11

除了彼得的答案:

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

对于Internet Explorer 10,这将相同:

 #element {
      -ms-overflow-style: none;
 }

10

跨浏览器的方法来隐藏滚动条。

在Edge,Chrome,Firefox和Safari上进行了测试

隐藏滚动条,同时仍然可以使用鼠标滚轮滚动!

码笔

/* Make parent invisible */
#parent {
    visibility: hidden;
    overflow: scroll;
}

/* Safari and Chrome specific style. Don't need to make parent invisible, because we can style WebKit scrollbars */
#parent:not(*:root) {
  visibility: visible;
}

/* Make Safari and Chrome scrollbar invisible */
#parent::-webkit-scrollbar {
  visibility: hidden;
}

/* Make the child visible */
#child {
    visibility: visible;
}

1
有关如何工作的解释将不胜感激–玩耍父母/孩子的能见度来隐藏滚动条太可怕了
JackyJohnson

1
@believesInSanta我添加了注释和Codepen以更好地解释。我不同意您的评估,即发挥可见性是隐藏滚动条的可怕方式。我知道这是一种hack,但是要达到这种效果的正确方法是,如果所有浏览器都支持一种单独设置样式的方式,例如chrome和safari allow。
Blake Plumb

2
我只是爱上了您的解决方案。它可以完美运行(用于设计用于现代浏览器的应用程序)。非常感谢!
Maxime Lafarie '17

7

如果要滚动工作,请在隐藏滚动条之前考虑对其样式进行设置。OS X和移动OS的现代版本具有滚动条,这些滚动条虽然不便于用鼠标抓取,但却非常美观和中立。

隐藏滚动条,这是John Kurlak的技术效果很好,除了让没有触摸板的Firefox用户无法滚动(除非他们有带滚轮的鼠标,否则他们可能会这样做),但是即使那样,他们通常也只能垂直滚动。

约翰的技术使用三个要素:

  • 遮盖滚动条的外部元素。
  • 具有滚动条的中间元素。
  • 内容元素既可以设置中间元素的大小,又可以使其具有滚动条。

必须可以将外部元素和内容元素的大小设置为相同,从而避免使用百分比,但是我想不出其他任何方法都无法正确调整。

我最担心的是所有版本的浏览器是否都设置了滚动条以使可见的溢出内容可见。我已经在当前的浏览器中进行了测试,但未在较旧的浏览器中进行过测试。

请原谅我的SASS ; P

%size {
    // set width and height
}

.outer {
    // mask scrollbars of child
    overflow: hidden;
    // set mask size
    @extend %size;
    // has absolutely positioned child
    position: relative;
}

.middle {
    // always have scrollbars.
    // don't use auto, it leaves vertical scrollbar showing
    overflow: scroll;
    // without absolute, the vertical scrollbar shows
    position: absolute;
}
// prevent text selection from revealing scrollbar, which it only does on
// some webkit based browsers.
.middle::-webkit-scrollbar {
    display: none;
}

.content {
    // push scrollbars behind mask
    @extend %size;
}

测试中

OS X是10.6.8。Windows是Windows 7。

  • Firefox 32.0滚动条已隐藏。即使单击以聚焦后,箭头键也不会滚动,但是鼠标滚轮和触控板上的两个手指可以滚动。OS X和Windows。
  • Chrome 37.0滚动条已隐藏。单击焦点后,箭头键起作用。鼠标滚轮和触控板工作。OS X和Windows。
  • Internet Explorer 11滚动条已隐藏。单击焦点后,箭头键起作用。鼠标滚轮有效。视窗。
  • Safari 5.1.10滚动条已隐藏。单击焦点后,箭头键起作用。鼠标滚轮和触控板工作。OSX。
  • Android 4.4.4和4.1.2。滚动条已隐藏。触摸滚动有效。在4.4.4(无论是哪种版本)上的Chrome 37.0,Firefox 32.0和HTMLViewer中进行了尝试。在HTMLViewer中,页面是被屏蔽内容的大小,也可以滚动!滚动与页面缩放可以交互地进行交互。

1
不相关的注释(就问题而言)。在这种情况下,您应该使用@extend与@include。因此@mixin{},您可以%size{}在CSS选择器中调用来代替@extend %size;。当您引入变量以返回结果时,通常使用Mixins。占位符(aka @extend)用于简单的重复代码,例如-不需要“功能”。
Mike Barwick 2014年

1
我编辑使用@extend。对于不了解SCSS的人来说,结果可能不太容易理解,但足够好。
塞思·克莱因

6

我只是以为我会指出其他人要阅读的这个问题,即overflow: hiddenbody元素不会为我隐藏滚动条。

我必须使用html元素。


3
我已经不记得确切的时间了,因为那是几个月前的事,但是我相信在Chrome上可以正常工作,而在Firefox上则不能(反之亦然)。但是,使用HTML标记对两者都有效。
布拉德·阿兹维多

从内存上看,这可能是古怪的模式差异。
thomasrutter

5

我编写了一个WebKit版本,其中包含一些选项,例如自动隐藏小版本滚动-y仅-x

._scrollable{
    @size: 15px;
    @little_version_ratio: 2;
    @scrollbar-bg-color: rgba(0,0,0,0.15);
    @scrollbar-handler-color: rgba(0,0,0,0.15);
    @scrollbar-handler-color-hover: rgba(0,0,0,0.3);
    @scrollbar-coner-color: rgba(0,0,0,0);

    overflow-y: scroll;
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    height: 100%;

    &::-webkit-scrollbar {
        background: none;
        width: @size;
        height: @size;
    }

    &::-webkit-scrollbar-track {
        background-color:@scrollbar-bg-color;
        border-radius: @size;
    }

    &::-webkit-scrollbar-thumb {
        border-radius: @size;
        background-color:@scrollbar-handler-color;
        &:hover{
            background-color:@scrollbar-handler-color-hover;
        }
    }

    &::-webkit-scrollbar-corner {
      background-color: @scrollbar-coner-color;
    }

    &.little{
        &::-webkit-scrollbar {
            background: none;
            width: @size / @little_version_ratio;
            height: @size / @little_version_ratio;
        }
        &::-webkit-scrollbar-track {
            border-radius: @size / @little_version_ratio;
        }
        &::-webkit-scrollbar-thumb {
            border-radius: @size / @little_version_ratio;
        }
    }

    &.autoHideScrollbar{
        overflow-x: hidden;
        overflow-y: hidden;
        &:hover{
            overflow-y: scroll;
            overflow-x: scroll;
            -webkit-overflow-scrolling: touch;
            &.only-y{
                overflow-y: scroll !important;
                overflow-x: hidden !important;
            }

            &.only-x{
                overflow-x: scroll !important;
                overflow-y: hidden !important;
            }
        }
    }

    &.only-y:not(.autoHideScrollbar){
        overflow-y: scroll !important;
        overflow-x: hidden !important;
    }

    &.only-x:not(.autoHideScrollbar){
        overflow-x: scroll !important;
        overflow-y: hidden !important;
    }
}

http://codepen.io/hicTech/pen/KmKrjb


5

将此CSS代码复制到客户代码以隐藏滚动条:

<style>

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

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

</style>

4

我的HTML是这样的:

<div class="container">
  <div class="content">
  </div>
</div>

将其添加到div要隐藏滚动条的位置:

.content {
  position: absolute;
  right: -100px;
  overflow-y: auto;
  overflow-x: hidden;
  height: 75%; /* This can be any value of your choice */
}

并将其添加到容器中

.container {
  overflow-x: hidden;
  max-height: 100%;
  max-width: 100%;
}


3

即使在以下情况下,我的答案也会滚动 overflow:hidden;使用jQuery,:

例如,使用鼠标滚轮水平滚动:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type='text/javascript' src='/js/jquery.mousewheel.min.js'></script>
<script type="text/javascript">
    $(function() {

       $("YourSelector").mousewheel(function(event, delta) {

          this.scrollLeft -= (delta * 30);
          event.preventDefault();
       });
    });
</script>

2
滚动劫持有效,但几乎总是糟糕的用户体验。
布兰登·安扎迪

1
尽管这是可能的,但举一个很好的例子,当您禁用滚动并使用javascript处理滚动时,辅助技术用户会遇到很多问题。如果每次滚动用户时也未将焦点设置为某个元素,则AT用户将完全丢失。而且,每个用户现在都失去了对其所看到内容的所有微调控制。用户体验非常差的UX来接管滚动。除鼠标滚轮外,您还必须处理上/下键,屏幕阅读器旋转器,鼠标单击和触摸板控件。对于开发者而言这变得笨拙,而对于用户而言则非常糟糕。
ShiningLight '18

2

我相信您可以使用overflowCSS属性来操作它,但是它们对浏览器的支持有限。一位消息人士称,它是Internet Explorer 5(及更高版本),Firefox 1.5(及更高版本)和Safari 3(及更高版本),也许足以满足您的目的。

滚动,滚动,滚动有很好的讨论。


1
好的链接。很高兴知道如何在多个浏览器上显示结果。不幸的是,最终结果的屏幕快照的图形已损坏
Chetabahana

0

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

body {
  overflow-y: scroll;
  margin-right: -20px;
}
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.