zorro76
@zorro76

Трабл с подпунктами меню адаптивного, как его обойти?

При просмотре в браузере меньше 991px срабатывает мобильное меню тут, оно открывается при клике, только основные пункты меню, а вот подпункты меню не доступны (первый пункт имеет 8 подпунктов):
9df075fc78f04ae08eeea3b38f206c8e.png

мучаюсь полдня наверное, нарыл что если удалить или закоментить вот эти строчки:

/*.mobile-menu li ul {
display: none;
}*/


.mobile-menu ul {
position: absolute;
z-index: 100;
/*display: none;*/
}


то функционировать подменю начинает работать,

92a1639b3f80439c88531b757c431388.png

но сразу же вылазит иная проблема: мобильное меню теперь не скрывается при клике по иконке.
Люди посоветуйте что тут не так, и как этот трабл исправить. Спасибо.
код jQuery:
$(document).ready(function() {
    $(".sidebar__menu-item > a").click(function() {
        var ul = $(this).next(),
            clone = ul.clone().css({
                "height": "auto"
            }).appendTo(".mobile-menu"),
            height = ul.css("height") === "0px" ? ul[0].scrollHeight + "px" : "0px";
        clone.remove();
        ul.animate({
            "height": height
        });
        return false;
    });
    $('.mobile-menu > ul > li > a').click(function() {
        $('.sidebar__menu-item a').removeClass('active');
        $(this).addClass('active');
    });
        $('.sidebar__menu-item ul li a').click(function() {
            $('.sidebar__menu-item ul li a').removeClass('active');
            $(this).addClass('active');
        });
});


html код
<div class="mobile-menu">
               <label for="show-menu" class="show-menu">
                    <span>Каталог</span>
                    <div class="lines"></div>
                </label>
                <input type="checkbox" id="show-menu">
                <ul class="sidebar__menu-list" id="sidebar__menu-list">
                    <li class="sidebar__menu-item">
                        <a href="catalog.html" class="sidebar__menu-link">Литература по дошкольному образованию</a>
                        <ul class="drop">
                            <li><a href="#">Английский язык для дошкольников</a></li>
                            <li><a href="#">Комплексного развитие ребенка</a></li>
                            <li><a href="#">Математика для дошкольников</a></li>
                            <li><a href="#">Окружающий мир для дошкольников</a></li>
                            <li><a href="#">Письмо для дошкольников</a></li>
                            <li><a href="#">Развитие мышления у дошкольника</a></li>
                            <li><a href="#">Развитие речи дошкольников</a></li>
                            <li><a href="#">Русский язык для дошкольников</a></li>
                        </ul>
                    </li>
                    <li class="sidebar__menu-item">
                        <a href="#" class="sidebar__menu-link">Учебники для начальной школы</a>
                    </li>
                    <li class="sidebar__menu-item">
                        <a href="#" class="sidebar__menu-link">Основная школа (5-11) класс</a>
                    </li>
                    <li class="sidebar__menu-item">
                        <a href="#" class="sidebar__menu-link">Иностранные языки</a>
                    </li>
                    <li class="sidebar__menu-item">
                        <a href="#" class="sidebar__menu-link">Дополнительная литература</a>
                    </li>
                    <li class="sidebar__menu-item">
                        <a href="#" class="sidebar__menu-link">ЕГЭ и ГИА</a>
                    </li>
                </ul>
            </div>


стили CSS
.mobile-menu {
  display: block;
  width: 100%;
  background: $stack-color;
  line-height: 1.6em;
  font-weight: 400;
  position: relative;
  margin: -5px auto;
}

.mobile-menu ul {
  list-style-type: none;
  margin: 0 auto;
  padding-left: 0;
  text-align: center;
  width: 100%;
  position: absolute;
  background: $stack-color;
}

.mobile-menu > ul > li {
  position: relative;
}


.mobile-menu li {
  display: inline-block;
  /*float: left;
  margin-right: 1px;*/
}


.mobile-menu li a {
  display: block;
  min-width: 140px;
  text-align: center;
  font-size: 13px;
  color: #fff;
  text-transform: uppercase;
  background: lighten($stack-color, 5%);
  text-decoration: none;
  padding: 5px 0;
  -webkit-transition: all 0.4s ease 0s;
  -moz-transition: all 0.4s ease 0s;
  -ms-transition: all 0.4s ease 0s;
  -o-transition: all 0.4s ease 0s;
  transition: all 0.4s ease 0s;
}

.mobile-menu .sidebar__menu-item > ul {
  height: 0;
  overflow: hidden;
  background-color: lighten($stack-color, 10%);
}


.mobile-menu li:hover a {
  color: #fff;
  background-color: $stack-color;
}


.mobile-menu li:hover ul a {
  background-color: lighten($stack-color, 10%);
  color: #fff;
}


.mobile-menu li:hover .mobile-menu ul a:hover {
  color: #4db3ff;
}


.mobile-menu li ul {
  display: none;
}


.mobile-menu li ul li {
  display: block;
  float: none;
}


.mobile-menu li ul li a {
  width: auto;
  min-width: 100px;
  padding: 0 20px;
}


.mobile-menu .show-menu {
  text-decoration: none;
  color: #2f8db3;
  background: transparent;
  text-align: center;
  padding: 10px 15px;
  display: none;
  cursor: pointer;
  text-transform: uppercase;
  margin-bottom: 0;
  position: absolute;
  top: -215px;
  right: 0;
}

.mobile-menu .show-menu span {
  padding-left: 0;
  padding-right: 10px;
}


.mobile-menu input[type=checkbox] {
  display: none;
}


.mobile-menu input[type=checkbox]:checked ~ #sidebar__menu-list{
  display: block;
}


@media screen and (max-width: 991px) {

  .mobile-menu .lines {
    border-bottom: 15px double #2f8db3;
    border-top: 5px solid #2f8db3;
    content: "";
    height: 5px;
    width: 30px;
    padding-right: 15px;
    padding-top: 5px;
    float: none;
    display: inline-block;
    vertical-align: middle;
  }

  .mobile-menu ul {
    position: absolute;
    z-index: 100;
    display: none;
  }


  .mobile-menu li {
    margin-bottom: 0;
  }
  .mobile-menu ul li,
  .mobile-menu li a {
    width: 100%;
  }
  .mobile-menu .show-menu {
    display: block;
  }
}
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
Из-за свойства display: none в селекторах ".mobile-menu li ul " и ".mobile-menu ul" не меняется высота элемента. *Дополню
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Eugeny1987
Работаю с HostCMS
Воспользуйтесь плагином slicknav
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы