如何使用 JavaScript 检查浏览器是否支持 CSS 属性?


概述

当今世界,系统中有多种浏览器可用。因此,有时某些层叠样式表 (CSS) 属性无法在该浏览器上运行。为了检查特定浏览器支持哪些 CSS 属性,JavaScript 提供了内置方法 CSS.supports(),它可以检查特定浏览器是否支持该属性。supports() 方法受所有浏览器支持:Opera、Edge、Chrome 和 Firefox。

语法

CSS.supports() 方法接受键值对作为输入,格式为字符串。基本语法如下:

CSS.supports(“propertyName:value”);
  • supports() − 这是 CSS 对象的一种方法,用于检查 supports 参数中传递的属性是否受浏览器支持。

  • propertyName − 包含 CSS 属性的名称,例如 display、position、margin、padding、z-index、text-align 等。

  • value − 它采用特定属性的值,例如 flex、absolute、relative、20 px、left、right 等。

为了更深入地了解 CSS.Supports() 方法,我们将通过一些示例进行学习。

方法 1 − 在此示例中,我们将直接将 CSS 样式键值对作为参数传递给 CSS.supports() 方法,然后该方法将确定该浏览器是否支持给定的 CSS 属性。

算法

  • 步骤 1 − 使用 CSS 对象内的 supports() 方法,即 CSS.supports()。

  • 步骤 2 − 将任何层叠样式表 (CSS) 属性作为参数传递。

  • 步骤 3 − 使用 console.log() 在控制台中打印 CSS.supports() 方法。

  • 步骤 4 − 如果传递属性后返回 true,则该属性受支持,否则不受浏览器支持。

示例

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Check CSS property exist in browser using js</title>
</head>
   <body>
      <h1>Open console to see result by pressing (ctrl + shift + i) or F12 on keyboard</h1>
      
      <script>
         console.log(CSS.supports("float:top"));
         console.log(CSS.supports("float:right"));
         console.log(CSS.supports("float:bottom"));
         console.log(CSS.supports("float:left"));
      </script>
   </body>
</html>

输出

以上代码的输出如下图所示。“float:top” 和 “float:bottom” 属性无效,因此它们在控制台中将返回 false,而 “float:right” 和 “float:left” 属性有效且受浏览器支持,它们将返回 true。

方法 2 − 在此方法中,我们将构建一个用户界面,用户可以在给定字段中输入 CSS 属性,并检查这些 CSS 属性是否受其浏览器支持。

算法

  • 步骤 1 − 创建两个搜索框,一个用于键,另一个用于值,因为 CSS 属性采用键值对形式。分别为它们指定特定的 ID“propertyName”和“pval”。创建另一个输出字段和一个 HTML 按钮。

  • 步骤 2 − 在 JavaScript 中创建一个名为 checkCss() 的函数。将使用箭头函数。

  • 步骤 3 − 访问两个输入框并将它们存储在一个变量中,将这些框的值连接到一个变量中。

  • 步骤 4 − 将此连接的变量传递给 CSS.supports(),并在 if-else 条件中进行检查。

  • 步骤 5 − 如果返回 true,则支持该 CSS 属性;如果返回 false,则不支持该属性。

示例

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Check CSS property exist in browser using js</title>
   <style>
      body{
         min-height: 90vh;
         display: flex;
         place-content: center;
         flex-direction: column;
         text-align: center;
         background-color: #0a0a0a;
         color: white;
      }
      input{
         width:13rem;
         margin: 5px auto;
         padding: 0.3rem;
         outline: none;
      }
      button{
         width: 5rem;
         margin: 0 auto;
         padding: 0.2rem;
         cursor: pointer;
         background-color: transparent;
         box-shadow: 0 0 5px white;
         border-radius: 5px;
         color: white;
         border: none;
      }
   </style>
</head>
   <body>
      
      <h1>CSS Property Validator</h1>
      <div id="output" style="width:5rem;margin: 5px auto;padding: 0.2rem;"></div>
      <input type="text" id="propertyName" placeholder="Enter propertyName*">
      <input type="text" id="pval" placeholder="Enter value*">
      <button onclick="checkCss()">Check</button>
      
      <script>
         checkCss = () => {
            var p = document.getElementById("propertyName").value;
            var v = document.getElementById("pval").value;
            var pv = p + ":" + v;
            if(CSS.supports(pv)){
               document.getElementById("output").innerText=CSS.supports(pv);
               document.getElementById("output").style.background="green";
               document.getElementById("output").style.color="white";
            } else {
               document.getElementById("output").innerText=CSS.supports(pv);
               document.getElementById("output").style.background="tomato";
               document.getElementById("output").style.color="white";
            }   
         }
      </script>
   </body>
</html>

输出

以上代码的输出如下图所示,用户可以在给定的输入框中键入 CSS 属性,并检查这些属性是否受其浏览器支持。在下图中,“display:block” 属性受支持且对浏览器有效,因此它返回 true。

输出如下图所示,它返回 false,因此输入框中填充的属性无效,不受浏览器支持。

结论

supports() 方法的返回类型是布尔值,它根据当前浏览器是否支持 CSS 属性返回 true 或 false。示例 2 接口对开发人员特别有用,因为它无需反复检查控制台;只需在输入字段中输入 CSS 属性名称和值,系统就会告知您它是否在当前浏览器中受支持。

更新于:2023年3月7日

2K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告