CSS 什么是优雅降级

CSS 什么是优雅降级

什么是优雅降级

如果你是一位有经验的网页开发人员,你可能已经听说过”优雅降级”这个词。在我们学习网页开发中的优雅降级之前,让我们来分解一下这个词。”优雅”的意思是优雅或美丽,”降级”是指破坏或下降。因此,”优雅降级”这个词的整体意思是在功能破坏的同时使其变得优雅。

开发人员在网页开发中使用”优雅降级”这个术语。它提供了各种技术,以便任何网站或应用程序在功能较差的浏览器中可以正确运行。

例如,现代浏览器支持高级的CSS和JavaScript特性,但不支持旧版本的浏览器。在这种情况下,开发人员需要确保用户可以在旧版本的浏览器中正常访问网站。

优雅降级的不同技术

在上述部分,我们学习了什么是优雅降级以及开发人员为什么要确保它。现在,我们将学习不同的技术和示例来实现优雅降级。

渐进增强

在这种技术中,开发人员需要将代码分解为不同的包,并逐个加载每个包。因此,首先成功加载网页的HTML,然后加载每个浏览器都支持的普通CSS

最后,加载高级CSS特性,如果浏览器支持该特性,则将应用于HTML元素。否则,网页的HTML内容仍然可以访问。所以,即使现代浏览器不支持某些特性,它仍然可以正确渲染HTML内容。

功能检测

在这种方法中,我们检查浏览器是否支持特定的JavaScript特性。如果是的话,网站允许用户使用该特性来为HTML内容设置样式。否则,我们可以显示一些错误消息或对HTML内容应用不同的样式。

让我们通过下面的示例来了解它。

示例

在下面的示例中,我们创建了一个div元素,并给它一个’id’为’element’。同时,我们在CSS中定义了一个名为’container’的类,并将一些CSS属性包含在其中。

在JavaScript中,当浏览器加载时,我们通过id访问div元素,并检查该元素是否包含’classList’属性。如果是的话,我们将’class’名添加到数组中。否则,我们将简单地将’class’名连接到’class’名字符串中。

因此,我们在这里检测了div元素是否支持classList,并根据这一结果使用了不同的技术将class名添加到div元素中。

<html>
<head>
   <style>
      .container {
         width: 300px;
         height: 300px;
         background-color: red;
         border: 3px solid green;
         border-radius: 12px;
      }
      #output {
         font-size: 20px;
         font-weight: bold;
         color: blue;
      }
   </style>
</head>
<body>
   <h3>Using the <i> feature detection technique </i> for the graceful degradation in the web development</h3>
   <div id = "element"> </div>
   <div id = "output"> </div>
   <script>
      var myDiv = document.getElementById('element');
      let output = document.getElementById('output');
      if ('classList' in myDiv) {
         myDiv.classList.add('container');
         output.innerHTML = 'classList is supported';
      } else {
         myDiv.className += ' container';
         output.innerHTML = 'classList is not supported';
      }
   </script>
</body>
</html>

添加备用选项

另一种优雅降级的技术是添加备用选项。在这种技术中,如果浏览器不支持任何CSS,我们使用另一种CSS来完美地显示HTML内容在网页浏览器中。

通过下面的示例,让我们了解如何向网页添加备用选项。

示例(为CSS渐变添加备用选项)

在下面的示例中,我们创建了一个card div元素,并使用line-gradient() CSS函数设置背景渐变。同时,我们编写了一个备用CSS,如果浏览器不支持linear-gradient() CSS函数。

在输出中,用户可以观察到它显示渐变或背景颜色。

<html>
<head>
   <style>
      .card {
         width: 400px;
         height: auto;
         font-size: 2rem;
         background-color: orange;
         background-image: linear-gradient(to right, #14f71f, #d46a06);
         color: white;
         text-align: center;
      }
      /* Fallback styles */
      @media screen and (-ms-high-contrast: active),
      (-ms-high-contrast: none) {
         .card {
            background-image: none;
            background-color: orange;
         }
      }
   </style>
</head>
<body>
   <h3>Using the <i> fallback options for the gradient </i> for the graceful degradation in the web development</h3>
   <div class = "card"> This is a card element </div>
</body>
</html>

示例(为CSS动画添加回退选项)

在下面的示例中,我们添加了CSS动画的回退选项。这里,我们创建了三个div元素,并在所有元素中添加了“bounce”动画。’bounce’动画将div元素从其位置上方移动到初始位置。

在JavaScript中,我们创建了一个新的div元素,并检查其样式是否包含’animation’属性。如果是,动画将自动应用。否则,我们需要使用JavaScript给每个div元素添加一个’no_animation’类,其中设置为’animation:none’。

<html>
<head>
   <style>
      .square{
         background-color: blue;
         color: white;
         width: 100px;
         font-size: 1.5rem;
         padding: 20px;
         margin-bottom: 20px;
         position: relative;
         animation: bounce 2s ease-in-out infinite;
         animation-direction: alternate;
         animation-delay: 0.1s;
         animation-fill-mode: both;
         animation-play-state: running;
      }
      @keyframes bounce {
         0% {transform: translateY(0);}
         100% {transform: translateY(-30px);}
      }
      /* Fallback styles */
      .no-animation .square{
         top: 0;
         animation: none;
      }
   </style>
</head>
<body>
   <h3>Using the <i> fallback options for the animation </i> for the graceful degradation in the web development</h3>
   <div class = "square"> div1 </div>
   <div class = "square"> div2 </div>
   <div class = "square"> div3 </div>
   <script>
      window.onload = function () {
         var squares = document.querySelectorAll('.square');
         if (!('animation' in document.createElement('div').style)) {
            for (var i = 0; i < squares.length; i++) {
               squares[i].classList.add('no-animation');
            }
         }
      };
   </script>
</body>
</html>

在本教程中,用户学习了各种优雅降级技术。即使浏览器不支持某些功能,所有技术都可以使网页的HTML内容具有吸引力。

优雅降级的最佳技术是设置备用选项。开发人员应仅使用标准HTML和CSS属性,以确保在旧版浏览器中实现优雅降级。

然而,优雅降级的维护成本较高,因为开发人员需要为多个功能添加备用选项。但是,它可以为从任何网页浏览器访问的访问者提供流畅的网络体验。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

CSS 精选笔记