【问题标题】:Why doesn't the scrollbar-color property work directly on the body?为什么 scrollbar-color 属性不能直接在 body 上工作?
【发布时间】:2021-03-22 19:32:19
【问题描述】:

我正在尝试设置滚动条属性的样式,即https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scrollbars。无论如何,当这些属性直接应用在主体上时,如body {...},它们不起作用。例如:

body {
  scrollbar-color: rebeccapurple green;
  scrollbar-width: thin;
}
<div style="height: 10000px"></div>

但是,如果将其更改为通配符,则可以:

* {
  scrollbar-color: rebeccapurple green;
  scrollbar-width: thin;
}
<div style="height: 10000px"></div>

这里到底发生了什么?以防万一,我在 MacOS 上使用最新的 Firefox。这是一个错误吗?

【问题讨论】:

  • 因为滚动的不是body 元素;这是html 元素。
  • @HereticMonkey 你明白了。这是 Firefox 特有的吗?似乎身体在 Chrome 上滚动。
  • 嗯,根据链接的文章,那些滚动条属性只在 Firefox 中有效,所以也许?

标签: css firefox


【解决方案1】:

在这种情况下,滚动的是视口,而不是 body。而且,由于根元素(对于 HTML,html 元素)上滚动条属性的值应用于视口:

html {
  scrollbar-color: rebeccapurple green;
  scrollbar-width: thin;
}
<div style="height: 10000px"></div>

将 CSS 应用到正确的元素,它工作正常。

感谢Alohcicomment 仔细阅读draft specification for the properties

【讨论】:

  • 实际上是滚动的视口。根元素(即 HTML 中的 html 元素)上的设置被传播到视口。
  • @Alohci 这是 Firefox 特有的东西吗?因为在 Chrome 上,只需设置 body::-webkit-scrollbar {...} 的样式即可。
  • The spec for these properties 表示“UA 必须将根元素上设置的滚动条颜色/滚动条宽度值应用于视口。”和“注意:与溢出(和溢出-*)属性不同,在 HTML 主体元素上设置的滚动条颜色/滚动条宽度值不会传播到视口。” -webkit-* 实验属性可能与此不兼容。
猜你喜欢
  • 2023-01-02
  • 2015-06-13
  • 2021-12-06
  • 2010-11-05
  • 2020-03-18
  • 1970-01-01
  • 2021-10-04
  • 2021-05-08
  • 1970-01-01
相关资源
最近更新 更多