Отправляет email-рассылки с помощью сервиса Sendsay
Открытая группа
13190 участников
Администратор Katistark

Важные темы:

Модератор Horov
Модератор codemastera
Модератор Петрович
Модератор Yury Smirnov
Модератор Енисей
Модератор Dart_Veider

Активные участники:

Последние откомментированные темы:

20240424181411

←  Предыдущая тема Все темы Следующая тема →
пишет:

Меню горизонтальное многоуровневое адаптированное на CSS Flexbox с вертикальным раскрытием подменю

Как собрать меню сайта одинаково доступное на всех экранах от 1650 рх до 280 рх без сокрытия под «гамбургер» и всегда видимое в полный размер. Причём, не просто меню, а многоуровневое меню с раскрытием подменю в любом количестве.

Когда это востребовано? Например вы верстаете сайт строительной фирмы с большим количеством страниц и услуг на них.  Когда перед  вами  настольный монитор можно смотреть меню из 6-7 пунктов  и выпадающие подменю в любом количестве.

 

Причём, подменю могут выезжать сбоку, вниз. Но, при при переходе на узкие дисплеи планшетов, смартфонов меню трансформируется в «гамбургер» и чтобы увидеть меню, требуется развернуть «гамбургер» и всего 5-6 меню возможно увидеть.  Если же меню содержат надписи из 2-3-4 слов, места им нет.  Да, ещё и показать подстраницы.

 

Предлагаю  использовать технологию flex для достижения адаптированности  меню с одной стороны.  С другой, манипулируя позиционированием flex элементов z-index,  дать возможность показывать подменю с вертикальным выходом без изменения размеров.

 

Это позволяет посетителю сайта без лишних движений сразу переходить  к любой странице и её разделам.  Для владельцев смартфонов это особенно удобно.

 

Ниже привожу HTML код  меню и его стилевое оформление. Копируйте, пользуйтесь, кому это подходит.  Посмотреть  работу такого меню  приглашаю на моей странице по оказанию услуг ремонта холодильников Харькове здесь

 

 <body>

<div class="help">

  

<section>

<h1>Меню горизонтальное многоуровневое адаптированное на CSS Flexbox с вертикальным раскрытием подстраниц</h1>

<ul class="menu">

                <li class="menu__item_time"><a href="#p1" class="nav__link">Страница 1</a>

                    <ul class="submenu">

                                <li class="menu__fox"><a href="#p10" class="nav__link">Подстраница 1</a></li>

                                <li class="menu__fox"><a href="#p11" class="nav__link">Подстраница 2</a></li>

                                <li class="menu__fox"><a href="#p12" class="nav__link">Подстраница 3</a></li>

                    </ul>

                </li>       

                <li class="menu__item_time"><a href="#p2" class="nav__link">Страница 2</a>

                    <ul class="submenu">

                                <li class="menu__fox"><a href="#p13" class="nav__link">Подстраница 1</a></li>

                                <li class="menu__fox"><a href="#p14" class="nav__link">Подстраница 2</a></li>

                                <li class="menu__fox"><a href="#p15" class="nav__link">Подстраница 3</a></li>

                                <li class="menu__fox"><a href="#p16" class="nav__link">Подстраница 4</a></li>

                                <li class="menu__fox"><a href="#p17" class="nav__link">Подстраница 5</a></li>

                    </ul>

                 </li>  

                <li class="menu__item_time"><a href="#p3" class="nav__link">Страница 3:</a>

                    <ul class="submenu">

                                <li class="menu__fox"><a href="#p18" class="nav__link">Подстраница 1</a></li>

                                <li class="menu__fox"><a href="#p19" class="nav__link">Подстраница 2</a></li>

                                <li class="menu__fox"><a href="#p20" class="nav__link">Подстраница 3</a></li>

                                <li class="menu__fox"><a href="#p21" class="nav__link">Подстраница 4</a></li>

                                <li class="menu__fox"><a href="#p22" class="nav__link">Подстраница 5</a></li>

                    </ul>

                </li>

                <li class="menu__item_time"><a href="#p4" class="nav__link">Страница 4</a>

                    <ul class="submenu">

                                <li class="menu__fox"><a href="#p23" class="nav__link">Подстраница 1</a></li>

                                <li class="menu__fox"><a href="#p24" class="nav__link">Подстраница 2</a></li>

                    </ul>

                </li>

                <li class="menu__item"><a href="#p5" class="nav__link">Страница 5</a></li>

                <li class="menu__item"><a href="#p6" class="nav__link">Страница 6</a></li>

                <li class="menu__item_time"><a href="#p7" class="nav__link">Страница 7</a>

                    <ul class="submenu">

                                <li class="menu__fox"><a href="#p25" class="nav__link">Подстраница 1</a></li>

                                <li class="menu__fox"><a href="#p26" class="nav__link">Подстраница 2</a></li>

                                               <li class="menu__fox"><a href="#p27" class="nav__link">Подстраница 3</a></li>

                                <li class="menu__fox"><a href="#p28" class="nav__link">Подстраница 4</a></li>

                    </ul>

                </li>

</ul>

<p> Задача организации, в особенности же реализация намеченных плановых заданий

способствует подготовки и реализации новых предложений. Товарищи! постоянное

информационно-пропагандистское обеспечение нашей деятель</p>

<p>Повседневная практика показывает, что дальнейшее развитие различных форм деятельности

способствует подготовки и реализации системы обучения кадров, соответствует насущным

потребностям.  </p>

</section>            

</div>   

</body>

 

 

<style>

html {

                min-height:100%; /* всегда показываем вертикальную полосу прокрутки  */            

}

 .help{

width:100%;       

 }

section{background-color: #f1f1df;margin:10px auto;max-width:930px;}

h1{text-align:center; font-size:1.5em;}

.menu{                        

                max-width:940px;         /*максимальная ширина flex контейнера*/

                margin: 0px auto;        /*центрируем блок*/            

                padding: 0px;

                display: flex;           /*присваиваем свойство flex*/

                -webkit-box-pack: justify; /*присваиваем свойство flex*/

                -ms-flex-pack: justify;    /*присваиваем свойство flex*/

                flex-wrap: wrap;         /*определяем многорядность flex элементов*/             

                align-items: center;     /*центрируем flex элементы относительно поперечной оси*/

                justify-content: center; /*центрируем flex элементы относительно главной оси*/

                border:1px solid red;    /*рамка flex контейнера*/

}

.menu__item{

                display:block;

                text-align: center;              

                font-weight: 500;

                width: 250px;

                height: 44px;

                border:2px solid #808080;

                border-radius: 3px;

                margin: 7px;

                background: #ccc;            

}

.menu a:link{color:#000 !important;}

.menu a:visited {color: #000;text-decoration: none;}

.menu a:hover {color:#ff0000 !important; text-decoration:none;}

.menu a:active {color: #000;text-decoration: none;}

.menu__item:hover{background: #fff;}

.menu__item_time{

  display:block;

  text-align: center;

  font-weight: 500;

  width: 250px;

 height: 44px;

  border:2px solid #808080;

  border-radius: 3px;

  margin: 7px;

  background: #ccc; 

}

.menu__item_time:hover{

background: #fff;

}

.menu__fox:hover{

background: #fff;             

}

 .nav__link{

display: inline-block;

text-decoration: none;

margin:0 auto;

color:#000 !important;

 }

.submenu {

  position: absolute;

  opacity: 0;

  z-index:-9;             /*перемещение под нижний слой потока*/

  transform: scaleY(0);   /*масштабирует элемент по вертикали до "0".*/

  transform-origin :0 0;  /*координаты точки поворота*/

  transition: .5s ease-in-out;  /*длительность анимации по  ease-in-out*/

  padding:0px;

  margin:0px;

}

.menu__item_time:hover .submenu {

  opacity: 1;

  z-index:9;    /*перемещение над верхним слоем потока*/

  transform: scaleY(1); /*масштабирует элемент по вертикали до своего размера*/

}

.menu__fox{

  display:block;

  text-align: center;

  font-weight: 500;

  width: 250px;

  height: 44px;

  border:2px solid #808080;

  border-radius: 3px;

  margin: 7px -2px;

  background: #ccc;

}

</style>

 

Это интересно
+1

28.06.2019
Пожаловаться Просмотров: 182  
←  Предыдущая тема Все темы Следующая тема →


Комментарии временно отключены