Używając Thymeleaf jako silnika szablonów, czy można dynamicznie dodawać / usuwać klasę CSS do / z prostego div
z th:if
klauzulą?
Zwykle mógłbym użyć klauzuli warunkowej w następujący sposób:
<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a>
Będziemy tworzyć łącze do strony lorem ipsum , ale tylko wtedy, gdy klauzula warunku jest prawdziwa.
Szukam czegoś innego: chciałbym, żeby klocek był zawsze widoczny, ale ze zmiennymi klasami w zależności od sytuacji.
Odpowiedzi:
Jest też
th:classappend
.Jeśli
isAdmin
taktrue
, to spowoduje:źródło
th:class
zastępuje / przepisuje atrybut klasy.th:classappend
jest tym, czego chcesz.th:classappend="${theRightClass}"
th:classappend
atrybutów. Maksymalnie jeden jest dozwolony.Fatal error during parsing org.xml.sax.SAXParseException: Attribute "th:classappend" was already specified for element "img".
th:classremove
konieczności usuwania pojedynczej klasy bez wpływania na inne lub sztywnego kodowania całej listy klas w wiążącym pliku XML? A może jedyną drogą jest pozostawienie jakiejkolwiek dynamicznej klasy wyłączonej i warunkowe dołączenie?Tak, można dynamicznie zmieniać klasę CSS w zależności od sytuacji, ale nie za pomocą
th:if
. Odbywa się to za pomocą operatora elvis .źródło
W tym celu i jeśli nie mam zmiennej boolowskiej, używam:
źródło
Inną bardzo podobną odpowiedzią jest użycie „równa się” zamiast „zawiera”.
źródło
Jeśli chcesz tylko dołączyć klasę w przypadku błędu, możesz użyć
th:errorclass="my-error-class"
wspomnianego w dokumencie .źródło
Dodam tylko własną opinię, na wypadek gdyby komuś się przydała. To jest to, czego użyłem.
źródło
Jeszcze inne użycie th: class, tak samo jak @NewbLeech i @Charles, ale uproszczone do maksimum, jeśli nie ma przypadku „innego”:
Nie obejmuje atrybutu klasy, jeśli # fields.hasErrors ('password') ma wartość false.
źródło
To, o czym wspomniał @Nilsi, jest całkowicie poprawne. Jednak klasa adminclass i klasa użytkownika muszą być opakowane w pojedyncze cudzysłowy, ponieważ może to się nie powieść, ponieważ Thymeleaf szuka zmiennych adminClass lub userclass, które powinny być łańcuchami. To mówi,
powinno być: -
Lub tylko:
źródło
Jeśli chcesz odpowiednio dodać lub usunąć klasę, jeśli adres URL zawiera określone parametry lub nie. Oto, co możesz zrobić
Jeśli adres URL zawiera słowo „home”, zostanie dodana aktywna klasa i na odwrót.
źródło
Na wypadek, gdyby ktoś korzystał z Bootstrap, udało mi się dodać więcej niż jedną klasę:
źródło