当前位置: 首页 > 面试题库 >

仅使用CSS检查“ @supports”支持的最实用方法是什么?

冯野
2023-03-14
问题内容

在昨天Eric Bidelman在Google I / O演讲中谈到了主题之后@supports,我认为我将开始在Chrome
Canary中使用它。但是,它提出了一个显而易见的问题:

检查浏览器是否@supports仅支持CSS 的最佳方法是什么?

我目前正在通过简单地检查是否display: block受支持来玩。显然,此方法有效,但是我不确定这是否是最实用的方法:

body { background:#fff; font-family:Arial; }
body:after { content:'Ek! Your browser does not support @supports'; }

@supports (display:block) {
    body { background:#5ae; }
    body:after { color:#fff; content:'Your browser supports @supports, yay!'; }
}

这些尝试 无效 (至少在Chrome Canary中):

@supports (@supports) { ... }
@supports () { ... }
@supports { ... }

问题答案:

@supports目前仅测试属性/值组合,仅此而已。您的其他选项无效,因为它们都不有效(包括最后一个选项,其中仅带有at-
关键字,后跟大括号!)。属性/值对的要求由的语法决定@supports,您可以在spec中找到它。

只需测试一个已知的属性/值对,即可确保无论@supports实现与否,该属性/值对都能在所有用户代理中正常工作。这种(某种)消除了您会遇到实现@supports但不实现属性/值组合的用户代理的可能性,@supports而只关注其支持。

您给出的示例display: block就足够了。您使用级联的检查,如果浏览器
实现@supports由内覆盖声明@supports为浏览器规则 支持它也是可以接受的(是唯一明显的方法也无妨)。



 类似资料:
  • 我正在使用openssl检查是否存在tlsv1。3是否支持域列表。我已经编写了脚本,但脚本没有停止,它会等待我按CTRL D键,然后给我一个结果。这是scirpt 我还将echo与openssl结合使用,如下所示 注意:当我在终端上为单个站点运行命令时,我得到的结果没有键入CRTL D,但当我在脚本中使用loop和if语句时,它会等待我按下CTRL D。这真的很奇怪。 我还尝试了echo“q”|

  • 我有一个变量(testvariable),根据变量的isNull,我需要做一个方法调用,如下所示 在可选的

  • 问题内容: JavaScript是否可能知道客户端浏览器是否支持CSS属性?我说的是CSS3的旋转属性。我只想在浏览器支持的情况下执行某些功能。 问题答案: 我相信您可以这样:

  • 问题内容: 所以,我要做的是在特定网页上运行一个函数(与我的正则表达式匹配)。 现在,我每秒检查一次,并且它可以正常工作,但是我敢肯定,有更好的方法(因为它使网站充斥着大量请求)。 我当时想以某种方式做到这一点,但不确定如何做到。 问题答案: 我当时想用WebDriverWait做到这一点 究竟。首先,查看内置的“预期条件”是否可以解决以下问题: 用法示例: 如果不是,则可以始终创建自定义的“预期

  • 问题内容: 有没有办法检查当前是否在电话上注册了URL方案…使用javascript? 问题答案: 不是无缝的。但是,有一种类似于检查弹出窗口是否被阻止的方法。 当您尝试不支持的URL方案时,Safari会警告用户它不知道该怎么做,并停留在同一页面上。 因此,如果您给应用程序调用分配了一些激活时间(例如300毫秒),然后执行其他操作以响应该方案的不存在。 它不是最漂亮,但可以工作:

  • 问题内容: 处理浏览器不支持HTML5 标签的情况的标准方法是嵌入一些后备内容,例如: 但是页面的其余部分保持不变,这可能是不合适的或令人误解的。我想要一种检测画布不受支持的方法,以便可以相应地显示页面的其余部分。你会推荐什么? 问题答案: 这是Modernizr以及基本上所有其他执行画布工作的库中使用的技术: 由于您的问题是在 不 支持的情况下用于检测,因此我建议像这样使用它: