Простое тянущееся меню на Flexbox

Простое тянущееся меню на Flexbox

От автора: мне понравилось выезжающее меню на сайте The New Tropic. Но меня заинтересовала не сама выезжающая часть, а то, как элементы внутри меню занимают пространство. Они растягивались, занимая все пространство, и никогда не сжимались слишком сильно. Такое довольно легко реализовать на flexbox! Давайте немного разберемся.

На видео ниже показано, что я имею в виду:

Мне очень понравилось вложенное меню. Когда меню второго уровня открыто, применяются те же самые правила. Если окно растянулось, элементы меню сжимаются, оставляя место под меню второго уровня. Элементы меню не сжимаются слишком сильно. Если места нет, меню просто будет прокручиваться.

HTML код стандартного двухуровневого меню

Легко написать на Emmet:

Добавляем в колонку flexbox

Давайте проверим, что высота списка совпадает с высотой окна браузера. Это легко сделать с помощью вьюпорт единиц изменения. Далее необходимо убедиться, что элементы списка растягиваются и заполняют пространство:

Почти все сделали! Растягивание работает только, когда есть место, как мы и хотели:

Быстрые переключатели

Для открытия подменю у нас есть тег button (возможно, нужно вставлять эти кнопки через JS, так как без него они ничего не делают). Вот так они могли бы работать. Подменю по умолчанию скрыты:

Открыть подменю можно с помощью класса:

Высота анимируется до неизвестного числа, что довольно запутанно. Надеемся, вскоре мы напишем статью, объясняющую этот момент (есть разные варианты).

Переключение классов сделать очень просто:

Подменю начинают вести себя правильно:

Вам нужно перейти в само демо, чтобы поиграться с растягиванием по вертикали.

Автор: Chris Coyier

Источник: //css-tricks.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: