• Оптимизация js кода, нормально ли?

    @wakenbyWork
    Переписал на ES6, думаю если вам интересна оптимизация, то и современный стиль вызовет интерес :)

    window.addEventListener('load', () => {
      const toggle = document.querySelector('#js-toggle')
      const body = document.querySelector('#js-body')
      const nav = document.querySelector('#js-nav')
      const menuBg = document.querySelector('#js-menu-bg')
      const toggleNav = document.querySelector('#js-toggle-nav')
      
      const openCloseMenu = () => {
        toggle.classList.toggle('toggle--active')
        body.classList.toggle('body--overflow')
        nav.classList.toggle('header__nav--active')
        menuBg.classList.toggle('menu-bg--active')
      }
    
      for (const clickEl of [toggle, toggleNav, menuBg]) {
        clickEl.addEventListener('click', openCloseMenu)
      }
    })



    Нормальный ли прием с arrayElemOnClick ?


    Вполне, у вас элементы по которым можно кликнуть, еще имеют смену класса при клике.
    Без данного условия, можно создать специальный класс или data-attr, чтобы одним querySelectorAll найти все интерактивные элементы, и через цикл так-же добавить click.
    Ответ написан
    Комментировать
  • Как убрать смещение страницы влево при появлении полосы прокрутки?

    Pongo
    @Pongo
    При помощи calc(100vw - 100%) можно вычислить ширину скроллбара (а если он не отображается, то будет 0). Идея: при помощи отрицательного margin-right увеличить ширину <html> на эту ширину. При этом появляется горизонтальная полоса прокрутки — ее скрываем.

    html {
      overflow-x: hidden;
      margin-right: calc(-1 * (100vw - 100%));
    }

    Пример. Нажатие кнопки "change min-height" скрывает\отображает скроллбар.
    Ответ написан
    12 комментариев