Страницы

Поиск по вопросам

понедельник, 30 марта 2020 г.

Не работает анимация крестика

#javascript #html #jquery #css #svg




.ham {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform 400ms;
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.hamRotate.active {
  transform: rotate(45deg);
}
.hamRotate180.active {
  transform: rotate(180deg);
}
.line {
  fill:none;
  transition: stroke-dasharray 400ms, stroke-dashoffset 400ms;
  stroke:#000;
  stroke-width:5.5;
  stroke-linecap:round;
}
.ham1 .top {
  stroke-dasharray: 40 139;
}
.ham1 .bottom {
  stroke-dasharray: 40 180;
}
.ham1.active .top {
  stroke-dashoffset: -98px;
}
.ham1.active .bottom {
  stroke-dashoffset: -138px;
}

					onclick="this.classList.toggle(' active')"
  
  
  





Но мне надо что бы при нажатии на другую кнопку срабатывала анимация для этого пишу

$('#filter-menu-button').click(function(){
  $('.hamRotate').toggleClass("active");
});
Но не работает 
    


Ответы

Ответ 1



jQuery может работать с SVG только с версии 3+. Вы можете изменить .toggleClass() на .attr() или использовать .classList.toggle(). Ниже пример кода с решением через .classList.toggle() function toggleButton() { document.querySelector('.hamRotate').classList.toggle('active'); } document.querySelector('.hamRotate').addEventListener('click', toggleButton, false); document.querySelector('#filter-menu-button').addEventListener('click', toggleButton, false); .ham { cursor: pointer; -webkit-tap-highlight-color: transparent; transition: transform 400ms; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; } .hamRotate.active { transform: rotate(45deg); } .hamRotate180.active { transform: rotate(180deg); } .line { fill: none; transition: stroke-dasharray 400ms, stroke-dashoffset 400ms; stroke: #000; stroke-width: 5.5; stroke-linecap: round; } .ham1 .top { stroke-dasharray: 40 139; } .ham1 .bottom { stroke-dasharray: 40 180; } .ham1.active .top { stroke-dashoffset: -98px; } .ham1.active .bottom { stroke-dashoffset: -138px; }

Комментариев нет:

Отправить комментарий