Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.12.2018, 12:42
Интересующийся
Отправить личное сообщение для FotGOD Посмотреть профиль Найти все сообщения от FotGOD
 
Регистрация: 18.11.2018
Сообщений: 12

Мобильное меню
всем привет, класс приписывается для меню в коде( отлавливаю в логе), но меню не развертывается. в чем может быть проблема?
<nav class="menu">
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Courses</a></li>
                    <li><a href="#">Photos</a></li>
                    <li><a href="#">About us</a></li>
                </ul>
            </nav>
    
    
            <a href="#" class="menu-button">
                <span></span>
                <span></span>
                <span></span>
                <span></span>
            </a>
        </header>
    
        <div class="mobile-menu-container">
            <nav>
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Courses</a></li>
                    <li><a href="#">Photos</a></li>
                    <li><a href="#">About us</a></li>
                </ul>
            </nav>
        </div>


const MenuButtom = document.querySelector('.menu-button');
const MobileMenu = document.querySelector('.mobile-menu-container'); 


document.querySelector('.menu-button').onclick = function(e){

MobileMenu.classList.toggle('active');
console.log(MobileMenu);

}


.navbar a {
        text-decoration: none;
        color: rgba(0, 0, 0, .60);
        transition: color 200ms ease-in;
 }

.navbar li:hover > a {
    color: rgba(0, 0, 0, .85);
}

.logo img {
    display: block;
    max-height: 3.5rem;
}

.menu {
    display: none;
}

.menu-button {
    display: inline-block;
}






.content {
    width: 50%;
    margin: 0 auto;
    padding: 2rem 0;
}





/** ---------------------------------------------------------------------------
 * Menu button.
 * ------------------------------------------------------------------------- */

.menu-button {
	display: inline-block;
	transition: .3s ease-in-out;
	width: 35px;
	height: 24px;
	position: relative;
	-webkit-transition: .3s ease-in-out;
	-moz-transition: .3s ease-in-out;
	-ms-transition: .3s ease-in-out;
	-o-transition: .3s ease-in-out;
}

.menu-button span {
    position: absolute;
    height: 4px;
    border-radius: 10px;
    width: 100%;
    background-color: #3D4146;
    top: 0;
    transition: transform .2s ease-in-out, opacity .2s ease-in-out;
}

.menu-button span:nth-child(1) {
    top: 0;
}

.menu-button span:nth-child(2),
.menu-button span:nth-child(3) {
    top: 10px;
}

.menu-button span:nth-child(4) {
    top: 20px;
}

.menu-button.active span:nth-child(1),
.menu-button.active span:nth-child(4) {
    opacity: 0;
}

.menu-button.active span:nth-child(2) {
    transform: rotate(45deg);
}

.menu-button.active span:nth-child(3) {
    transform: rotate(-45deg);
}


/* Mobile menu. */
.mobile-menu-container {
    display: none;
    background-color: #3D4146;
    text-align: center;
}

.mobile-menu-container ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

.mobile-menu-container a {
    color: #fff;
    display: block;
    padding: .75rem 0;
    text-decoration: none;
    border-bottom: 1px solid rgba(255, 255, 255, .2);
}

.mobile-menu-container a:hover {
    background-color: rgb(46, 49, 53);
}





@media (min-width: 900px) {
    .mobile-menu-container {
        display: none !important;
    }
    .menu-button {
        display: none;
    }

    .menu {
        display: block;
    }

    .menu ul {
        list-style: none;
        padding: 0;
        margin: 0;
    }

    .menu li {
        position: relative;
    }

    .menu > ul > li {
        display: inline-block;
    }

    .menu > ul > li > a {
        display: inline-block;
        padding: 1rem 1.5rem;
        font-weight: bold;
    }

    /* 2nd level. */
    .menu li ul {
        opacity: 0;
        visibility: hidden;
        position: absolute;
        top: 100%;
        left: 0;
        width: 15rem;
        padding: 1.5rem 0;
        background: #F3F5F6;
        transition: all 200ms ease;
        z-index: 10000;
        border-radius: 5px;
    }

    .menu li:hover > ul {
        opacity: 1;
        visibility: visible;
    }

    .menu li ul a {
        display: block;
        padding: 0.5rem 1.5rem;
    }

    /* 3rd level. */
    .menu li ul li ul {
        top: -1.5rem;
        left: 100%;
        z-index: 9000;
    }

    /* Drop-down arrows. */
    .menu > ul > li.has-submenu:after,
    .menu li ul li.has-submenu:after {
        content: "";
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        width: 0;
        height: 0;
    }

    /* 1st level arrows. */
    .menu > ul > li.has-submenu:after {
        right: 5px;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-top: 5px solid rgba(0, 0, 0, .25);
    }

    /* 2nd level arrows. */
    .menu li ul li.has-submenu:after {
        right: 1.5rem;
        border-top: 5px solid transparent;
        border-bottom: 5px solid transparent;
        border-left: 5px solid rgba(0, 0, 0, .25);
    }


}
Ответить с цитированием
  #2 (permalink)  
Старый 08.12.2018, 13:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

FotGOD,
где css для
Сообщение от FotGOD
MobileMenu.classList.toggle('active');
?
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2018, 13:13
Интересующийся
Отправить личное сообщение для FotGOD Посмотреть профиль Найти все сообщения от FotGOD
 
Регистрация: 18.11.2018
Сообщений: 12

.menu-button.active span:nth-child(1),
.menu-button.active span:nth-child(4) {
    opacity: 0;
}

.menu-button.active span:nth-child(2) {
    transform: rotate(45deg);
}

.menu-button.active span:nth-child(3) {
    transform: rotate(-45deg);
}


Вот. По библиотеке jquery оно работает. Но я хочу на чистом Js это сделать. не подключать же ее ради такого маленького дела.
$(document).on('click', '.menu-button', function(){
    const $this =  $(this);
    $this.toggleClass('active');
    mobileMenu.slideToggle();
});
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2018, 13:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

FotGOD,
....
.mobile-menu-container.active{
    display: block;
}
Ответить с цитированием
  #5 (permalink)  
Старый 08.12.2018, 13:24
Интересующийся
Отправить личное сообщение для FotGOD Посмотреть профиль Найти все сообщения от FotGOD
 
Регистрация: 18.11.2018
Сообщений: 12

Сообщение от рони Посмотреть сообщение
FotGOD,
....
.mobile-menu-container.active{
    display: block;
}
Я Вас не понял, что с этим делать. Просто вставить - не помогло.
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2018, 13:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

FotGOD,
что не так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">.navbar a {
        text-decoration: none;
        color: rgba(0, 0, 0, .60);
        transition: color 200ms ease-in;
 }

.navbar li:hover > a {
    color: rgba(0, 0, 0, .85);
}

.logo img {
    display: block;
    max-height: 3.5rem;
}

.menu {
    display: none;
}

.menu-button {
    display: inline-block;
}






.content {
    width: 50%;
    margin: 0 auto;
    padding: 2rem 0;
}





/** ---------------------------------------------------------------------------
 * Menu button.
 * ------------------------------------------------------------------------- */

.menu-button {
    display: inline-block;
    transition: .3s ease-in-out;
    width: 35px;
    height: 24px;
    position: relative;
    -webkit-transition: .3s ease-in-out;
    -moz-transition: .3s ease-in-out;
    -ms-transition: .3s ease-in-out;
    -o-transition: .3s ease-in-out;
}

.menu-button span {
    position: absolute;
    height: 4px;
    border-radius: 10px;
    width: 100%;
    background-color: #3D4146;
    top: 0;
    transition: transform .2s ease-in-out, opacity .2s ease-in-out;
}

.menu-button span:nth-child(1) {
    top: 0;
}

.menu-button span:nth-child(2),
.menu-button span:nth-child(3) {
    top: 10px;
}

.menu-button span:nth-child(4) {
    top: 20px;
}

.menu-button.active span:nth-child(1),
.menu-button.active span:nth-child(4) {
    opacity: 0;
}

.menu-button.active span:nth-child(2) {
    transform: rotate(45deg);
}

.menu-button.active span:nth-child(3) {
    transform: rotate(-45deg);
}


/* Mobile menu. */
.mobile-menu-container {
    display: none;
    background-color: #3D4146;
    text-align: center;
}

.mobile-menu-container ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

.mobile-menu-container a {
    color: #fff;
    display: block;
    padding: .75rem 0;
    text-decoration: none;
    border-bottom: 1px solid rgba(255, 255, 255, .2);
}

.mobile-menu-container a:hover {
    background-color: rgb(46, 49, 53);
}

.mobile-menu-container.active{
    display: block;
}



@media (min-width: 900px) {
    .mobile-menu-container {
        display: none !important;
    }
    .menu-button {
        display: none;
    }

    .menu {
        display: block;
    }

    .menu ul {
        list-style: none;
        padding: 0;
        margin: 0;
    }

    .menu li {
        position: relative;
    }

    .menu > ul > li {
        display: inline-block;
    }

    .menu > ul > li > a {
        display: inline-block;
        padding: 1rem 1.5rem;
        font-weight: bold;
    }

    /* 2nd level. */
    .menu li ul {
        opacity: 0;
        visibility: hidden;
        position: absolute;
        top: 100%;
        left: 0;
        width: 15rem;
        padding: 1.5rem 0;
        background: #F3F5F6;
        transition: all 200ms ease;
        z-index: 10000;
        border-radius: 5px;
    }

    .menu li:hover > ul {
        opacity: 1;
        visibility: visible;
    }

    .menu li ul a {
        display: block;
        padding: 0.5rem 1.5rem;
    }

    /* 3rd level. */
    .menu li ul li ul {
        top: -1.5rem;
        left: 100%;
        z-index: 9000;
    }

    /* Drop-down arrows. */
    .menu > ul > li.has-submenu:after,
    .menu li ul li.has-submenu:after {
        content: "";
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        width: 0;
        height: 0;
    }

    /* 1st level arrows. */
    .menu > ul > li.has-submenu:after {
        right: 5px;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-top: 5px solid rgba(0, 0, 0, .25);
    }

    /* 2nd level arrows. */
    .menu li ul li.has-submenu:after {
        right: 1.5rem;
        border-top: 5px solid transparent;
        border-bottom: 5px solid transparent;
        border-left: 5px solid rgba(0, 0, 0, .25);
    }


}

  </style>

</head>

<body>
<nav class="menu">
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Courses</a></li>
                    <li><a href="#">Photos</a></li>
                    <li><a href="#">About us</a></li>
                </ul>
            </nav>


            <a href="#" class="menu-button">
                <span></span>
                <span></span>
                <span></span>
                <span></span>
            </a>
        </header>

        <div class="mobile-menu-container">
            <nav>
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Courses</a></li>
                    <li><a href="#">Photos</a></li>
                    <li><a href="#">About us</a></li>
                </ul>
            </nav>
        </div>
<script>
const MenuButtom = document.querySelector('.menu-button');
const MobileMenu = document.querySelector('.mobile-menu-container');


document.querySelector('.menu-button').onclick = function(e){

MobileMenu.classList.toggle('active');
console.log(MobileMenu);

}

</script>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2018, 13:39
Интересующийся
Отправить личное сообщение для FotGOD Посмотреть профиль Найти все сообщения от FotGOD
 
Регистрация: 18.11.2018
Сообщений: 12

Не туда его всунул, благодарю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mouseover jquery SolomonRei Элементы интерфейса 0 27.11.2018 17:41
Замена стилей класса Павел Турченко Элементы интерфейса 9 30.10.2015 15:24
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Выделение активных пунктов многоуровневого меню на jQuery Letto Элементы интерфейса 2 04.12.2013 15:30
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36