Добавление файла S CSS и JS в html, работает неправильно - PullRequest
0 голосов
/ 24 апреля 2020

Я пытался добавить это меню в стиле "бургер" на веб-сайт и застрял, потому что анимация бургера не воспроизводится при нажатии.

Меню здесь: https://codepen.io/designcouch/pen/hyFAD

Я поместил 'скомпилированный' код S CSS в файл css и связал его, как и любой другой файл css.

Может кто-нибудь объяснить, что я делаю не так? Заранее спасибо.

$('#menu-toggle').click(function(){
  $(this).toggleClass('open');
})
* {
  transition: 0.25s ease-in-out;
  box-sizing: border-box;
}

body {
  background: #d9e4ea;
}

span {
  display: block;
  background: #566973;
  border-radius: 2px;
}

#menu-toggle {
  width: 100px;
  height: 100px;
  margin: 50px auto;
  position: relative;
  position: relative;
  cursor: pointer;
  background: rgba(255, 255, 255, 0.4);
  border-radius: 5px;
}
#menu-toggle:hover {
  background: rgba(255, 255, 255, 0.8);
}
#menu-toggle #hamburger {
  position: absolute;
  height: 100%;
  width: 100%;
}
#menu-toggle #hamburger span {
  width: 60px;
  height: 4px;
  position: relative;
  top: 24px;
  left: 20px;
  margin: 10px 0;
}
#menu-toggle #hamburger span:nth-child(1) {
  transition-delay: 0.5s;
}
#menu-toggle #hamburger span:nth-child(2) {
  transition-delay: 0.625s;
}
#menu-toggle #hamburger span:nth-child(3) {
  transition-delay: 0.75s;
}
#menu-toggle #cross {
  position: absolute;
  height: 100%;
  width: 100%;
  transform: rotate(45deg);
}
#menu-toggle #cross span:nth-child(1) {
  height: 0%;
  width: 4px;
  position: absolute;
  top: 10%;
  left: 48px;
  transition-delay: 0s;
}
#menu-toggle #cross span:nth-child(2) {
  width: 0%;
  height: 4px;
  position: absolute;
  left: 10%;
  top: 48px;
  transition-delay: 0.25s;
}

#menu-toggle.open #hamburger span {
  width: 0%;
}
#menu-toggle.open #hamburger span:nth-child(1) {
  transition-delay: 0s;
}
#menu-toggle.open #hamburger span:nth-child(2) {
  transition-delay: 0.125s;
}
#menu-toggle.open #hamburger span:nth-child(3) {
  transition-delay: 0.25s;
}
#menu-toggle.open #cross span:nth-child(1) {
  height: 80%;
  transition-delay: 0.625s;
}
#menu-toggle.open #cross span:nth-child(2) {
  width: 80%;
  transition-delay: 0.375s;
}
<html>
<head>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="menu-toggle">
  <div id="hamburger">
    <span></span>
    <span></span>
    <span></span>
  </div>
  <div id="cross">
    <span></span>
    <span></span>
  </div>
</div>
<script src="button.js"></script>
</body>
</html>

1 Ответ

0 голосов
/ 24 апреля 2020

Вы все здесь делаете правильно. Вероятно, используемый вами объект $ требует вызова библиотеки.

$('#menu-toggle').click(function(){
   $(this).toggleClass('open');
})

Синтаксис, который вы используете, фактически основан на библиотеке с именем jQuery, которая построена на JavaScript и предоставляет такие утилиты для помогите нам написать меньший и лучший код.

Для этого просто найдите jQuery CDN в inte rnet. Откройте первую ссылку и уменьшите значение go до jQuery 3.x, появится всплывающее окно, скопируйте сценарий и поместите его непосредственно перед закрытием тега body.

<html>
<head></head>
<body>

<!-- jQuery CDN -->
<script src="https://code.jquery.com/jquery-3.5.0.min.js" />
</body>
</html>

Далее, если вы не готов использовать jQuery. Вот как бы вы написали на нативном JavaScript.

document.getElementById("menu-toggle").addEventListener("click", function(){
  if(this.classList[0] === 'open'){
     this.classList.remove('open');
  }
  else {
     this.classList.add('open');
  }
});
...