CSS 使用if/else条件

CSS 使用if/else条件

CSS对于样式化网页内容非常有用。我们可以以不同方式访问HTML元素,并使用各种CSS属性来样式化内容。

有时,开发人员需要基于多个条件来样式化特定的HTML元素。例如,我们允许用户在Web应用程序上提交表单。如果表单成功提交,我们将以绿色显示成功消息。否则,我们将以红色显示错误消息。在这种情况下,我们需要改变消息元素的样式。

因此,我们可以使用if-else语句来实现,但不幸的是,CSS不支持if/else语句。因此,我们可以为此提供替代解决方案,并在下面进行了解释。

使用不同的类名

第一个解决方案是使用不同的类名来样式化组件。我们可以在不同的类名中添加不同的样式,并使用JavaScript根据特定条件向元素添加和删除类。

语法

用户可以使用下面的语法作为在CSS中使用多个类作为if/else语句的替代方法的方案。

element.classList.remove("success");
element.classList.add("error");

在上述的语法中,‘element’是需要改变样式的HTML元素。在那之后,我们使用classList属性来访问数组中元素的所有类。remove()方法用于移除类,add()方法用于添加类。

示例1

在下面的示例中,我们创建了一个包含数字输入框的表单。同时,它还包含了错误和成功按钮。我们在CSS中定义了‘error’和‘success’类,并添加了不同的样式。

在JavaScript中,当用户点击错误按钮时,我们会显示错误信息并将错误类添加到输出元素上。当用户点击成功按钮时,我们会显示成功信息并将成功类添加到输出元素上。

在输出中,用户可以填写表单并点击按钮,根据你按下的按钮来显示输出文本的样式。

<html>
<head>
   <style>
      .error {border: 2px solid red; width: fit-content;}
      .success {border: 2px solid green; width: fit-content;}
   </style>
</head>
<body>
   <h3> Using the <i> Multiple classes </i> as an alternative approach of if/else statement in CSS </h3>
   <!-- creating the form -->
   <form id = "test_form">
      <label for = "test_input"> Enter the number: </label>
      <input type = "number" id = "test_input" name = "test_input" placeholder = "Enter the number" required>
      <br> <br>
      <input type = "button" id = "error" value = "error">
      <br> <br>
      <input type = "button" id = "success" value = "success">
   </form>   <br>
   <div id="output"> </div>
   <script>
      let output = document.getElementById("output");
      let error = document.getElementById("error");
      let success = document.getElementById("success");
      error.addEventListener("click", function () {
         output.innerHTML = "There is an error in the form submission.";
         output.classList.remove("success");
         output.classList.add("error");
      });
      success.addEventListener("click", function () {
         output.innerHTML = "The form is submitted successfully.";
         output.classList.remove("error");
         output.classList.add("success");
      });
   </script>
</body>
</html>

示例2

在下面的示例中,我们创建了多个包含不同值的单选按钮。在JavaScript中,我们为每个单选按钮添加了点击事件。每当用户点击任何单选按钮时,它将访问单选按钮的值,并根据该值更改输出div元素的颜色。

<html>
<head>
   <style>
      #output {font-size: 20px; color: yellow; }
   </style>
</head>
<body>
   <h3> Using the <i> Multiple classes </i> as an alternative approach of if/else statement in CSS </h3>
   <!-- Creating multiple radio inputs of color  -->
   <input type = "radio" name = "color" id = "red" value = "red"> <label for = "red"> Red </label>
   <input type = "radio" name = "color" id = "green" value = "green"> <label for = "green"> Green </label>
   <input type = "radio" name = "color" id = "blue" value = "blue"> <label for = "blue"> Blue </label>
   <input type = "radio" name = "color" id = "yellow" value = "yellow" checked> <label for = "yellow"> Yellow </label>
   <input type = "radio" name = "color" id = "orange" value = "orange"> <label for = "orange"> Orange </label>
   <br> <br>
   <div id = "output"> Yellow color is selected by default. </div>
   <script>
      let output = document.getElementById("output");
      // adding a click event listener to all radio inputs
      document.querySelectorAll("input[type=radio]").forEach(function (input) {
         input.addEventListener("click", function () {
            output.innerHTML = "You have selected " + this.value + " color.";
            output.style.color = this.value;
         });
      });
   </script>
</body>
</html>

使用SASS等预处理器

在CSS中使用if/else语句的另一种方法是使用SASS等预处理器。它允许我们像在CSS上面构建一样编写CSS的条件语句。

语法

用户可以按照以下语法在SASS中使用if/else语句。

.element {
   @if bool == true {
      color:color;
   } @else {
      color: blue;
   }
}

在上述语法中,我们根据bool变量的值设置元素的颜色值。

示例1

下面的示例定义了包含“red”值的“color”变量。在“element”类中,我们使用if/else语句根据“color”变量的值为CSS颜色属性赋值。

在输出中,我们可以观察到颜色属性根据“color”变量的值包含“red”。

$color: red;
.element {
   @if $color == red {
      color: $color;
   } @else {
      color: blue;
   }
}

输出

.element {
  color: red;
}

示例2

在下面的示例中,我们定义了”width”变量。之后,根据”width”变量的值为”font-size”属性赋值。

在输出中,我们可以检查”font-size”属性只包含一个值,该值基于if/else语句的条件。

$width: 200px;
.element {
   @if $width > 300px {
      font-size: 24px;
   } @else if $width > 200px {
      font-size: 18px;
   } @else {
      font-size: 14px;
   }
}

输出

.element {
   font-size: 14px;
}

用户学会了在CSS中使用if /else条件的替代解决方案。在第一种方法中,我们根据特定条件使用JavaScript更改元素的类。在第二种方法中,我们使用SASS预处理器来使用if /else语句。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

CSS 精选笔记