Я создаю HTML-страницу, которая представляет «информационную страницу документа» для данного документа в приложении. Это основано на boostrap-4.
Мне нужно представить эти четыре блока информации:
Data = Document name, size, author, etc.
Image = A thumbnail of the first page of the document.
Tags = Keywords referring to the document.
Links = Several helper links like 'see other documents of the same author' or so.
В «широкоэкранном режиме» (например, LG
и XL
) макет следующий:
- Основным содержанием являются данные
- Изображение идет слева от данных
- Теги справа от данных
- Наконец, ссылки идут ниже данных, но «внутри» общей высоты изображения и тегов
Как это:
+----------------+----------------+----------------+
| | | |
| | | |
| | Data | |
| | | |
| Image +----------------+ Tags |
| | | |
| | Links | |
| | | |
| | | |
+----------------+----------------+----------------+
Что я мог бы реализовать следующим образом:
+----------------+----------------+----------------+
| | +------------+ | |
| | | | | |
| | | Data | | |
| | | | | |
| Image | +------------+ | Tags |
| | | | | |
| | | Links | | |
| | | | | |
| | +------------+ | |
+----------------+----------------+----------------+
то есть: структура, подобная этой:
<div class="row">
<div class="col">Image</div>
<div class="col">
<div class="row">
<div class="col">Data</div>
</div>
<div class="row">
<div class="col">Links</div>
</div>
</div>
<div class="col">Tags</div>
</div>
В узком режиме (MD
, SM
и XS
) макет:
- Одна строка для изображения и данных.
- Ниже теги.
- Наконец ссылки.
Как это:
+----------------+----------------+
| | |
| Image | Data |
| | |
+----------------+----------------+
| |
| Tags |
| |
+---------------------------------+
| |
| Links |
| |
+---------------------------------+
Это ясно показывает 3 строки, которые могут быть реализованы как:
<div class="row">
<div class="col">Image</div>
<div class="col">Data</div>
</div>
<div class="row">
<div class="col">Tags</div>
</div>
<div class="row">
<div class="col">Links</div>
</div>
Что я уже знаю
Я уже знаю, если я продублирую какой-нибудь html на странице, я мог бы поиграть с видимостью, чтобы скрыть что-то здесь и сделать так, чтобы оно появилось там. Но я чувствую себя отвратительно, когда содержание повторяется.
Я уже знаю, что, если мне нужно, я могу использовать javascript для отсоединения и повторного присоединения html отсюда туда ... Но я чувствую себя уродливым, когда контент должен копироваться, перемещаться и управляться javascript.
Я уверен, что это можно решить, просто переставляя ордера и используя отзывчивые точки останова для принудительной установки ширины. Например, последний макет (узкий) может быть выполнен в виде одной строки с Image
и Data
, равными col-6
и Tags
и Links
, равными col-12
, и иметь все четыре блока в одном строка, которая управляет этим -12
переносом на следующую строку ...
Но я не могу найти решение, которое бы соответствовало обоим макетам в одном html.
Вопрос
Как я могу структурировать строки и столбцы таким образом, чтобы это был один и тот же HTML для обоих макетов, и я играю только с row- *, col- * или с любыми другими элементами сетки? https://getbootstrap.com/docs/4.3/layout/grid/