CSS @supports (::伪元素)

问题描述 投票:0回答:4

我想将一个区域更改为最大溢出:仅在支持

::-webkit-scrollbar-thumb
时才滚动。

在纯 CSS 中这可能吗?看起来

@supports
只检查规则,没有选择器。

css css-selectors pseudo-element
4个回答
10
投票

您现在可以使用

@supports selector()
来定位伪元素。这是适合您的用例的相关示例:

@supports selector(::-webkit-scrollbar-thumb) {

    .scroll-container {
        overflow: scroll
    }

}

请参阅 this JSFiddle,它演示了浏览器对

::-webkit-scrollbar-thumb
的支持

  1. 铬86
  2. 边缘87
  3. 歌剧72

但不是

  1. 火狐 82
  2. Safari 12

截至 2024 年 2 月,@supports selector

浏览器支持率
约为 94%。


4
投票

你是对的。

@supports
仅处理属性值组合。在纯 CSS 中实现此目的的唯一方法是使用针对支持
::-webkit-scrollbar-thumb
的浏览器的 CSS hack。 (没有足够的浏览器支持
@supports
,因此无法在检查对
::-webkit-scrollbar-thumb
的支持方面发挥作用。)


0
投票

补充上一个答案,你可以只写伪选择器,如果浏览器不支持该 prop,它将跳过 css 声明。

例如:

li::marker{color:blue}

旧版浏览器看不到。


0
投票

这是我用来识别Webkit浏览器的。这是我能找到的最具体的伪选择器,其他引擎似乎还没有:

CSS.supports(`selector(input[type='time']::-webkit-calendar-picker-indicator)`)
© www.soinside.com 2019 - 2024. All rights reserved.