如何防止webkit-scrollbar推送div的内容?

AnA*_*ice 22 html css html5 webkit css3

我正在使用webkit-scrollbar并且遇到样式问题,因为webkit滚动条将div的内容向左推,导致内容溢出.

注意

  • 第一个框使用默认浏览器滚动条并且不溢出(好)
  • 第二个框使用webkit滚动条,最终打破布局.(坏/问题)

http://jsfiddle.net/ryeah/1/

任何想法我用webkit滚动条做错了导致div到/溢出.我们如何修理第二个盒子?谢谢

Webkit滚动条代码:

.box2::-webkit-scrollbar {
    height: 16px;
    overflow: visible;
    width: 16px;
}
.box2::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 0, .2);
    background-clip: padding-box;
    border: solid transparent;
    border-width: 1px 1px 1px 6px;
    min-height: 28px;
    padding: 100px 0 0;
    box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1),inset 0 -1px 0 rgba(0, 0, 0, .07);
}
.box2::-webkit-scrollbar-button {
    height: 0;
    width: 0;
}
.box2::-webkit-scrollbar-track {
    background-clip: padding-box;
    border: solid transparent;
    border-width: 0 0 0 4px;
}
.box2::-webkit-scrollbar-corner {
    background: transparent;
}
Run Code Online (Sandbox Code Playgroud)

小智 69

你有没有试过放入overflow-y:overlay父div?它适用于我的铬.这个页面说它也适用于safari.

  • 似乎这应该是这里选定的答案.完美的工作 (4认同)
  • 但是叠加层不是透明的,垂直滚动条会阻止其叠加的任何内容。还没有找到使它透明的方法。 (3认同)
  • 优雅的解决方案。就像 @EidanSpiegel 所说的那样,在 Firefox 中不起作用。 (2认同)
  • 溢出:覆盖已被弃用,并且不再在 Chrome 上运行。不幸的是,替代的“scollbar-gutter”并不能实现同样的效果。 (2认同)

cbd*_*per 7

这就是我让它在 Chrome 上运行而不破坏Firefox 的方法:

overflow: scroll;
overflow-x: hidden;
overflow-y: overlay;
Run Code Online (Sandbox Code Playgroud)

我的意思是,滚动条在 Firefox 上仍然占据width空间,但至少它仍然显示并工作。

通过这样做overflow-y: overlay;,我修复了 Chrome 并破坏了 Firefox 的滚动。


Vik*_*kko 4

嗯..我想不出一种方法可以让 webkit 滚动条处于叠加状态。停止断行的一种解决方案是隐藏滚动条

.box2::-webkit-scrollbar {
  height: 16px;
  overflow: visible;
  width: 16px;
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

另外,您可以将 UL 的宽度设置为与框相同,以便它利用溢出功能并显示在滚动条下

.box ul {
  width: 149px;
}
Run Code Online (Sandbox Code Playgroud)