📜  如果在Haml中条件为真,如何附加类?

📅  最后修改于: 2022-05-13 01:56:55.916000             🧑  作者: Mango

如果在Haml中条件为真,如何附加类?

我们将研究根据某些条件的评估将类附加到元素的两种方法。本质上,它们背后的逻辑是相同的。

  • 使用三元运算符
  • 使用“除非”条件检查

初始代码:首先,让我们编写一些基本的HAML代码。它将在head部分包含一个样式元素。 style元素将包含为类定义的所有样式。最初,在正文部分有一个锚元素,它有一个“添加背景”类。在style元素中为此类定义的样式将为锚元素的文本提供浅灰色背景。

  • 程序:
    %head 
        %title Appending class based on condition evaluation
       
        -# defining styles for the classes
        %style
            /.add-background{ background-color: lightgrey; }
       
    %body
        -# an anchor element with class "add-background"
        %a{ :class => "add-background" } Geeks for Geeks
    
  • 输出:

方法 1:假设我们要附加一个名为“make-red”的类。在style元素中为此类定义的样式使得文本的颜色变为红色。如果某些条件评估为真,则此类只会附加到已经存在的“添加背景”。
让我们使用一个布尔变量“flag”。只有当“flag”的值为真时,才会附加“make-red”类,否则不附加。

  • 程序:
    %head 
        %title Appending class based on condition evaluation
      
        -# defining styles for the classes
        %style
            /.add-background{ background-color: lightgrey; }
            /.make-red{ color: red; }
      
    %body
        -# declaring local boolean type variable 
        - flag = true
          
        -# using ternary operator to append class to the anchor element
        -# if "flag" is true, "make-red" class is appended
        -# else nothing is appended
        %a{ :class => "add-background" + ((flag == true) ? " make-red" : "") } 
        GeeksforGeeks
    
  • 输出:

方法2:使用“除非”条件检查。这种类型的检查确保只要某些条件成立,就会执行某个操作。因此,如下所示,在这种情况下,如果“flag”为假,但不会评估为真,则将附加“make-red”类。也就是说,如果“flag”为假,则不会附加该类,否则将附加该类。

  • 程序:
    %head 
        %title Appending class based on condition evaluation
      
        -# defining styles for the classes
        %style
            /.add-background{ background-color: lightgrey; }
            /.make-red{ color: red; }
      
    %body
        -# declaring local boolean type variable 
        - flag = true
          
        -# using the "unless" conditional check to append class to the anchor element
        -# if the "flag" is true, "make-red" class is appended
        -# else nothing is appended
        %a{ :class => "add-background" + (" make-red" unless (flag == false)) } 
        Geeks for Geeks
    
  • 输出: