Thymeleaf:如何使用条件来动态添加/删除CSS类

时间:2014-08-05 07:58:27

标签: html css thymeleaf

使用Thymeleaf作为模板引擎,是否可以使用div子句向/从具有th:if子句的简单<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a> 动态添加/删除CSS类?

通常,我可以使用条件子句如下:

{{1}}
  

我们将创建一个指向 lorem ipsum 页面的链接,但仅限于条件子句为真。

我正在寻找不同的东西:我希望这个块始终可见,但根据情况可以改变类。

10 个答案:

答案 0 :(得分:192)

还有th:classappend

<a href="" class="baseclass" th:classappend="${isAdmin} ? adminclass : userclass"></a>

如果isAdmintrue,则会产生:

<a href="" class="baseclass adminclass"></a>

答案 1 :(得分:31)

是的,可以根据情况动态更改CSS类,但不能使用th:if。这是通过elvis operator完成的。

<a href="lorem-ipsum.html" th:class="${isAdmin}? adminclass : userclass">Lorem Ipsum</a> 

答案 2 :(得分:5)

为此目的,如果我没有布尔变量,我使用以下内容:

<li th:class="${#strings.contains(content.language,'CZ')} ? active : ''">

答案 3 :(得分:5)

另一个非常相似的答案是使用“等于”而不是“包含”。

"GET /code/romeo.txt HTTP/1.0\r\nHost: http://www.py4inf.com\r\n\r\n"

答案 4 :(得分:3)

如果您只是想在发生错误时附加一个类,可以使用the doc中提到的th:errorclass="my-error-class"

<input type="text" th:field="*{datePlanted}" class="small" th:errorclass="fieldError" />
  

应用于表单字段标记(input,select,textarea ...),它将从同一标记中的任何现有名称或th:字段属性读取要检查的字段的名称,然后追加指定的CSS类如果此类字段有任何相关错误,则为标记

答案 5 :(得分:2)

另一种用法:类,与@NewbLeech和@Charles相同,但如果没有“其他”情况,则简化为最大值:

<input th:class="${#fields.hasErrors('password')} ? formFieldHasError" />

如果#fields.hasErrors('password')为false,则不包括class属性。

答案 6 :(得分:1)

只是添加我自己的意见,以防它可能对某人有用。 这就是我用过的。

<div th:class="${request.read ? 'mdl-color-text--grey-800 w500' : ''}"> </div>

答案 7 :(得分:1)

@Nilsi提到的完全正确。但是,adminclass和user class需要用单引号引起来,因为Thymeleaf寻找adminClass或userclass变量应该是字符串,这可能会失败。就是这样,

应为:-

 <a href="" class="baseclass" th:classappend="${isAdmin} ? 'adminclass' : 
 'userclass'"> 
 </a>

或者只是:

<a href="" th:class="${isAdmin} ? 'newclass' : 
  'baseclass'"> 
 </a>

答案 8 :(得分:0)

如果您要在URL中是否包含某些参数的情况下相应地添加或删除类。这是您可以做的

<a th:href="@{/admin/home}"  th:class="${#httpServletRequest.requestURI.contains('home')} ? 'nav-link active' : 'nav-link'"  >

如果该网址包含“ home”,则将添加活动类,反之亦然。

答案 9 :(得分:0)

即使有人使用Bootstrap,我也可以添加多个类:

<a href="" class="baseclass" th:classappend="${isAdmin} ?: 'text-danger font-italic' "></a>