@dk-web

Какой вариант оптимальнее для верстки двухколоночного шаблона?

В чем была основная задача?

Сделать для админки 2 равные адаптивные колонки, равные высоте экрана (при условии малого содержания), с прижатым футером (опционально).Способы с фоном я не рассматривал.
Получилось реализовать в 4 вариантах.

1) Flex-box - думаю, что некорректно при адаптивом дизайне менять flex на diplay:block - надо задействовать все прелести этого способа, но знаний пока не хватает и сходу не получилось сделать... в любом случае рабочий вариант
jsfiddle.net/dkweb/jjphg7aj

2) Табличная верстка - в мобильной верстке таблица (логично) не учитывает высоту блока (a.mobile), но это ерунда.. получается основное тело - это вложенная таблица, которая делится на две ячейки - sidebar и content. Отступ в content влияет на меню... не получается избавиться. И даже если у контента вывести в ноль - все рано зазор остается. Сделал контрастным... где копать? Вообще получается сильная взаимосвязь между ними - любое форматирование так или иначе влияет на обе колонки.
bdb39cf4c324417a88dabb5619bea604.png

jsfiddle.net/dkweb/woz5mjph/1

3) Вложенные колонки - ну тут не мытьем так катаньем, вроде получилось достигнуть нужного результата... всем доволен. Буду признателен, если потестируете...
Плюс - если высота контента больше высоты экрана, то скрипт выравнивания не применяется.
jsfiddle.net/dkweb/1urrut00

4) Ну и мой эпичный дизайн...тоже удалось достичь необходимого результата - только теперь возникает вопрос зачем?) из всех он получился самым сложным..
jsfiddle.net/dkweb/gubo2jmd/1

С одной стороны, что сложного высчитать самую высокую и присвоить ее высоту обеим колонкам за вычетом шапки?.
А то, что я не нашел ни единого способа отслеживать изменения размеров определенного блока! resize работает только применительно к window. Все способы оценить изменения других блоков в сети реализованы на таймере.
Поэтому функция выравнивания должна выполняться каждый раз, когда меняется высота контента (выезжающие формы, например). Но ладно, если есть возможность прописать callback. А вот CKeditor? грузится страница и только потом textarea меняет свою высоту... и все выезжает за границы contentа. Чего только не перепробовал...
Поэтому все-же пришлось ставить минимальный timeout.
Я просто уверен, что есть элементарное решение этого вопроса... но найти самостоятельно не смог.
Да, еще заморочка была с подгрузкой шрифтов через @ import.. Тоже самое.. сначала выравнивание, потом шрифт и все сползает.
Поэтому благодаря совету применил следующее:
document.onreadystatechange = function() {
                 if (document.readyState === 'complete') {
                   setTimeout(hh, 350);
                   }
              }; //выравнивание блоков после загрузке контента и шрифтов

Но возможно я не правильно "списал" код... в фидлере не срабатывает.

Как итог все они рабочие, но футер держится только в таблице и flex.
В общем вряд ли кто-то до сюда дочитает, но если вдруг, буду очень признателен за комментарии и предложения по всем вариантам.
Спасибо!
  • Вопрос задан
  • 456 просмотров
Пригласить эксперта
Ответы на вопрос 2
Посмотрите на админку wordpress например.

Идея в том, что колонку-меню можно сделать position:fixed, высотой 100% экрана, а правый блок с контентом сместить на её ширину от края.
Ответ написан
dk-web Я правильно понял, что Вам нужно? jsfiddle.net/a3uq0puy
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы