Я хочу отображать разный контент (таблицы, маски и т. Д. c.) В нескольких разных областях («столбцах») на веб-сайте. Как правило, слева находится список, в центре - детали записи, а справа - примечания, справка, детали. (Поскольку существует более 500 масок и списков (с таблицами данных. js), я не могу ничего определить статически). При необходимости видны только 1 или 2 зоны. (Также в зависимости от области просмотра) Ширина областей должна регулироваться пользователем (и, конечно, они должны основываться на общем доступном пространстве). Поэтому я планирую использовать разделение. js (https://split.js.org/) Теперь отдельные области должны адаптироваться к доступному пространству в области (а не к области просмотра). Это означает, что медиа-запрос должен фактически относиться к области (<div>
), а не к области просмотра. Но функция не существует таким образом.
Первая идея - определить форматы для соответствующей ширины в миксинах S CSS и использовать Bootstrap Mixin. Затем в медиа-запросах я бы использовал класс ширины для текущей ширины (затем класс устанавливается динамически через JS / Hook from split. js + Изменение размера окна событий) для миксинов. События изменения размера, конечно же, являются недостатком. Также мне нужно собрать много вещей вручную.
<div>
<div class="split" id="one"></div>
<div class="split" id="two"><</div>
</div>
------------
@mixin one_xs {@include make-col($size, $columns: $grid-columns) } /*style for small list */
@mixin one_sd {..}
@mixin one_md {..}
@mixin one_lg {..}
@mixin two_xs {..}
@mixin two_sd {..}
@mixin two_md {..}
@mixin two_lg {..}
@include media-breakpoint-up(xs) {
@include one_xs;
#two { display: none}
}
…
@include media-breakpoint-up(lg) {
#one .detect_xs {@include one_xs;}
#one .detect_sd {@include one_sd;}
#one .detect_lg {@include one_lg;}
#two .detect_xsmall {@include two_xs;}
…
}
<script>
Split(['#one', '#two']);
...
window.addEventListener('resize', function() {
…
if ( $('#one').width() ) > 1024) {
$('#one').AddClass(".detect_md");
…
}
Это сработает (хорошо?)? Есть ли другие подходы, как это (лучше) реализовать (не нужен полный код, просто идеи). (Split. js / bootstrap не обязательны)