Показать сообщение отдельно
  #3 (permalink)  
Старый 05.09.2015, 21:36
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

<style>
    .sub-menu {
        display: none;
    }
</style>
<ul class="accordeon">
    <li><a class="btn-menu" href="#">Верхний пункт</a>
        <ul class="sub-menu">
            <li><a class="sub-menu__item" href="#">Первое меню 1</a></li>
            <li><a class="sub-menu__item" href="#">Первое меню 2</a></li>
            <li><a class="sub-menu__item" href="#">Первое меню 3</a></li>
            <li><a class="sub-menu__item" href="#">Первое меню 4</a></li>
        </ul>
    </li>

    <li><a class="btn-menu" href="#">Средний пункт</a>
        <ul class="sub-menu">
            <li><a class="sub-menu__item" href="#">Второе меню 1</a></li>
            <li><a class="sub-menu__item" href="#">Второе меню 2</a></li>
            <li><a class="sub-menu__item" href="#">Второе меню 3</a></li>
            <li><a class="sub-menu__item" href="#">Второе меню 4</a></li>
        </ul>
    </li>

    <li><a class="btn-menu" href="#">Нижний пункт</a>
        <ul class="sub-menu">
            <li><a class="sub-menu__item" href="#">Третье меню 1</a></li>
            <li><a class="sub-menu__item" href="#">Третье меню 2</a></li>
            <li><a class="sub-menu__item" href="#">Третье меню 3</a></li>
            <li><a class="sub-menu__item" href="#">Третье меню 4</a></li>
        </ul>
    </li>
</ul>

<script>
    var ul = document.querySelector('.accordeon'),
        subMenu = document.querySelectorAll('.sub-menu'), curr;

    ul.addEventListener('click', function(e) {
        if( !e.target.classList.contains('btn-menu') ) return;

        curr = e.target.parentNode.querySelector('.sub-menu');

        curr.style.display = curr.offsetHeight ? 'none' : 'block';

        [].forEach.call(subMenu, function(item) {
            if(item == curr) return;
            item.style.display = 'none';
        });

        e.preventDefault();
    });
</script>

Последний раз редактировалось Decode, 06.09.2015 в 00:37.
Ответить с цитированием