Я думаю, что это больше вопрос CSS, чем вопрос Thymeleaf. Но вот один подход, который может вам помочь.
Этот подход основан на деталях в этом вопросе .
В следующем шаблоне Thymeleaf предполагается, что вы хотите отобразить пять идентично- квадраты размером в ряд, с изображением (или видео) в каждом квадрате:
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>Grid Demo</title>
<style>
<!-- included just for reference
div.three {
float: left;
position: relative;
width: 29%;
padding-bottom: 29%;
margin: 1.7%;
border: 1px solid grey;
}
div.four {
float: left;
position: relative;
width: 22%;
padding-bottom: 22%;
margin: 1%;
border: 1px solid grey;
}
-->
<!-- five squares in a horizontal row -->
div.five {
float: left;
position: relative;
width: 17%;
padding-bottom: 17%;
margin: 1.1%;
border: 1px solid grey;
}
div.content {
position: absolute;
height: 80%;
width: 90%;
padding: 10% 5%;
}
div.table {
display: table;
height: 100%;
width: 100%;
}
div.table-cell {
display: table-cell;
vertical-align: middle;
}
.content .rs {
width: auto;
height: auto;
max-height: 90%;
max-width: 100%;
}
</style>
</head>
<body>
<div th:each="inst, iStat : ${instances}" class="five">
<div class="content">
<div class="table">
<div class="table-cell">
<img class="rs" th:attr="src=${inst}"/>
</div>
</div>
</div>
</div>
</body>
В моем случае конечный результат выглядит по ширине экрана моего браузера следующим образом:
![Five squares](https://i.stack.imgur.com/PZXbH.png)
Примечания:
1) Если вы хотите динамически отображать 3, 4 или 5 полей, вы можете параметризовать class="five"
атрибут в шаблоне Thymeleaf. размер объекта ${instances}
скажет вам, какой класс вам нужен:
${#lists.size(instances)}
2) Если вы хотите добавить элементы управления видео в квадрат, это потребовало бы передачи объекта Thymeleaf, который содержит не только имя файла мультимедиа, но и логическое (или аналогичное), чтобы указать, является ли мультимедиа воспроизводимым. Добавьте такой контент в свой собственный <div>
, следуя соответствующему тегу <img>
:
<div th:if="${isVideo}">...</div>
Надеюсь, это даст вам некоторые идеи.