CSS中 特性查询(@supports)详解及使用

article/2025/10/16 8:36:32

1. 简介

CSS中的 @supports 用于检测浏览器是否支持 CSS 的某个属性。其实就是条件判断,如果支持某个属性可以写一套样式,如果不支持某个属性,可以提供另外一套样式作为替补。可以放在代码的顶层,也可以嵌套在任何其他条件组规则中。

语法

@supports 规则由一组样式声明和一条支持条件构成。支持条件由一条或多条使用 逻辑与(and)、逻辑或(or)、逻辑非(not)结合的名称 - 值对(name-value pair)组成。可以使用圆括号调整操作符的优先级。

声明语法
最基本的支持条件就是 CSS 声明,也就是一个 CSS 属性后跟一个值,中间用冒号分开。

@supports(prop:value) {/* more styles */
}

如:检查是否支持 dispaly: flex

@supports (display: flex) {div {display: flex;}
}

函数语法
第二种基本支持条件是支持函数,几乎所有浏览器都支持这种语法,但函数本身仍在标准化进程中。
测试浏览器是否支持经过测试的选择器语法。如果浏览器支持子组合器,则以下示例返回 true。

@supports selector(A > B) {}

2. 操作符

not 操作符

将 not 操作符放在任何表达式之前就能否定一条表达式。

/* 如果浏览器不支持display:flex属性的话,那么div的样式就是 float: right */
@supports not (display: flex) { div {    float: right;  }
}

和其他操作符一样,not 操作符可以应用在任意复杂度的表达式上。

@supports not (not (transform-origin: 2px)) {}
@supports (display: grid) and (not (display: inline-grid)) {}

注意: 如果 not 操作符位于表达式的最外层,则没有必要使用圆括号将它括起来。但如果要将该表达式与其他表达式连接起来使用,比如 and 和 or,则需要外面的圆括号。

and 操作符

and 操作符用来将两个原始的表达式做逻辑与后生成一个新的表达式,如果两个原始表达式的值都为真,则生成的表达式也为真。

/* 如果浏览器支持 display:flex 和 box-shadow 的属性,就执行里面自己的样式 */
@supports (display: flex) and ( box-shadow: 2px 2px 2px black ) { }

可以将多个合取词并置而不需要更多的括号。以下两者都是等效的:

@supports (display: table-cell) and (display: list-item) and (display:run-in) {}
@supports (display: table-cell) and ((display: list-item) and (display:run-in)) {}

or 操作符

or 操作符用来将两个原始的表达式做逻辑或后生成一个新的表达式,如果两个原始表达式的值有一个或者都为真,则生成的表达式也为真。

/* 如果浏览器支持其中一个,就可执行里面自己的样式 */
@supports (display: -webkit-flex) or (display: -moz-flex) or(display: flex) {/*自己的样式 */
}

可以将多个析取词并置而不需要更多的括号。以下两者都是等效的:

@supports (transform-style: preserve) or (-moz-transform-style: preserve) or(-o-transform-style: preserve) or (-webkit-transform-style: preserve) {}@supports (transform-style: preserve-3d) or ((-moz-transform-style: preserve-3d) or((-o-transform-style: preserve-3d) or (-webkit-transform-style: preserve-3d))) {}

注意: 在使用 and 和 or 操作符时,如果是为了定义多个表达式的执行顺序,则必须使用圆括号。如果不这样做的话,该条件就是无效的,会导致整个规则失效。

@Supports 使用
@supports 的用途是将一组较旧的样式设置为备份,然后取消这些样式并在支持给定属性的情况下进行增强。
@supports 的一个优秀用例是布局。一些边缘浏览器现在提供对 flexbox 的支持,而其他浏览器则落后。

.wrap{float: right;
}@supports (display: -webkit-flex) or (display: -moz-flex) or (display: flex) {.wrap{display: -webkit-flex;display: -moz-flex;display: flex;float: none;}
}

3. CSS.supports()

CSS @supports 对应的 JavaScript 是 window.CSS.supports。
CSS.supports() 静态方法返回一个Boolean 值,用来校验浏览器是否支持一个给定的 CSS 特性。

语法

boolValue = CSS.supports(propertyName, value);
boolValue = CSS.supports(supportCondition);
参数
第一种用来检验浏览器对于一对“属性 - 属性值”的支持:propertyName  要检查的 CSS 属性名称value  要检查的 CSS 属性值
第二种语法需要一个匹配@supports条件的参数:supportCondition  检查条件

eg

const supportsFlex = CSS.supports('display', 'flex');
const flexAndAppearance = CSS.supports('(display: flex) and (-webkit-appearance: caret)')

在使用 supports 的 JavaScript 方法之前,首先检测功能是很重要的。Opera 使用了一个不同的方法名,因此会抛出一些东西:

const supportsCSS = !!((window.CSS && window.CSS.supports) || window.supportsCSS || false)

4. 浏览器兼容性

在这里插入图片描述


http://chatgpt.dhexx.cn/article/x0WDLDxD.shtml

相关文章

记一次破解blob加密视频网站的过程

现在很多主流的视频网站几乎都是用到了blob的加密(其实也不算是加密),效果是隐藏了视频源的地址,其背后的本质还是通过一段执行一段js拿到视频的切片文件,然后进行拼接播放。就像下面这样的 其实对于普通情况来说&…

视频加密技术的实与破解

知识付费盛行的当下,视频加密技术也算是有了又一个好的应用场景,本场 Chat 您将学到如下内容: 初步了解视频加密技术的前世今生视频大厂采用的视频技术云厂商采用的视频技术多维度的安全对比如今付费视频网站都采用哪些加密方式实打实的下载…

金盾金狮点盾云鹏保宝等加密视频录屏翻录提取教程

采用独家方法特殊方式打开录屏工具,理论上通杀所有的检测进程的加密视频播放器的检测,不被检测。 使用方法很简单: 点击 打开录屏工具,就可以以特殊方式加载录屏工具。 然后就可以开始录屏了。 下载:jsxc.neocities.…

加密视频的解密思路,金盾提取

互联网发展到今天,我们已经可以从网上获取各种各样的资料了。大大的方便了我们的学习和生活。特别是视频,各种培训课程,基本只有VIP才能享受,而且还不能分享给其他人,因为视频加密了。 那么视频可以解密出来吗&#xf…

2023VR视频加密解决方案

如今VR技术在各个领域中的使用,使得我们在日常生活中也可以看到它的身影,常见的就是应用到培训、影院和游戏当中,我们都知道VR视频比传统的平面视频能给用户带来更好的体验,而且现在在教育、娱乐等领域VR类视频也越来越多。相比于…

打造更安全的视频加密,云点播版权保护实践

在中国,以在线教育、职业培训、OTT 服务商等为代表的网络视频行业,其付费规模逐步增长。然而,针对网络视频的盗版侵权行为层出不穷,对版权方利益造成了严重的损失。因此,这一类用户急切地希望其高质量的视频内容能受到…

鸿蒙密视视频加密软件,鸿蒙密视视频加密软件

鸿蒙密视针对视频夸平台的离线观看、防拷贝、防刻录、防一号多人使用等问题,推出专门针对企业视频防护完整解决方案,鸿蒙密视视频加密软件,实现对视频数据安全的保护。 功能特点 1.支持所有视频音频格式 鸿蒙密视软件支持所有视频格式&#x…

vep加密视频转换为mp4提取破解录屏教程

现在很多朋友在找这个vep提取器,这个提取器只能提取很老的快速加密的vep视频,甚至最新的快速加密都不能提取,而商家用快速加密的人很少,绝大多数是重编码加密,这就是大多数人反应这个工具没任何用处的原因。 所以vep加…

加密视频

本文主要描述加密视频涉及到的技术、基础概念,以及加密视频播放的工作原理。 加密视频 加密视频是经过加密的,播放的时候需要经过用户认证,然后在线获取解密密钥,才能解密并进行播放。 加密视频基础概念 DRM 数字版权管理&am…

vep加密视频破解转换翻录为mp4教程

可能有很多人都没有听说过这个视频格式,这是大黄蜂云课堂播放器所独有的格式,只有通过该播放器才能够打开这个加密的视频,安全系数很高,但也极大的限制了一个视频的传播和播放。如果我们在网络上下载了vep格式的视频,可…

金狮加密视频播放器破解翻录限制转换为mp4工具使用教程

最近在研究金狮加密视频,并且下载了一套视频,发现使用金狮播放器播放视频的同时录屏工具是不能打开的,所以研发了一款工具,使用后可直接破解了播放器检测录屏工具的限制。这样就能随意使用录屏工具录屏了。 使用方法很简单&#…

加密视频如何破解 如何解除机器码绑定的视频

加密视频破-解说明 如何破-解加密的视频教程 1.为什么要破-解加密视频? 目前市面有很多视频是加密的需要输入密码才能观看, 而且是一台电脑一个机器码绑定的 每台电脑都需要一个独立的密码。一旦电脑有故障修复主板 CPU后该密码就作废了,或是联系不上提供密码的人,给大家学…

金盾加密视频破解翻录限制工具使用教程

最近在研究金盾的加密视频。想用录屏软件录制为mp4格式的视频。方便在别的机器观看。 发现一旦打开金盾的播放器。然后再打开录屏工具就会被检测。然后录屏工具会强制关闭。 所以我研发了一款工具,可以直接破解播放器检测录屏工具。然后就可以快乐的翻录了。 下载…

惊呆了,我们的加密视频教学竟然可以轻易翻录和破解!!!

我是一位普通的培训讲师。我发现我们老师正被视频教学盗版侵害着。比如a有几个卖视频教学的老师朋友,购买了很贵的加密系统加密视频教学,很快就有很多人在某宝公开10块售卖高清没水印盗版教学;b做网上视频直播教学的几个老师,某宝…

加密视频解密过程

视频共享、交互是互联网时代的具体表现,在线学习视频是现在人的生活方式,我们需要下载很多视频进行学习,但是很多优质的视频资源都进行了加密保护,当你发现下载的视频提示你需要输入播放密码的时候,点击视频不能播放&a…

北航计算机组成原理课程设计-2020秋 PreProject-Logisim-斐波那契数列问题(简单迭代法+矩阵乘法的快速幂)

北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-斐波那契数列问题(简单迭代法矩阵乘法的快速幂) 从本节开始,课程组给出的教程中增添了很多视频讲解。为了避免侵权,本系列博客将不会搬运课程组的视频讲解,而对于文字讲解…

北航计算机组成原理课程设计-2020秋 PreProject-Logisim-入门指南与Logisim门电路

北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-入门指南与Logisim门电路 本系列所有博客,知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除。 从本节开始&#…

计算机组成原理课程设计——简单CISC模型机设计

根据《计算机组成原理课程设计》的设计要求设计能够执行一定机器指令完成指定任务的CISC模型机。 1、课程设计的题目和内容 1.1 课程设计的题目 本次课程设计中本人选题为:输入包含10个整数(有符号数)的数组M,将其分成正整数数组…

计算机组成原理74299,计算机组成原理课程设计(模型机)

计算机组成原理课程设计 模型机详细介绍 1. 模型机的结构 模型机主要由运算器、控制器、存储器、数据总线、输入输出和时序产生器组成,模型机的结构图如图1所示。 图1 模型机结构图 (1) 运算器。运算器又由运算逻辑单元、数据暂存器、通用寄存器组成。在图 1模型机的…