При нажатии на span должны удаляться другие елементы хэдера

309
02 июня 2021, 12:50

Есть логотип и контакты, а также меню-кнопка. При нажатии на этот menu span должен исчезнуть логотип и контакты. При нажатии на close должны появиться обратно. Как это реализовать без hide и show? Ниже немного кода без стилей. Буду также рада наводкам.

       <div class="header">
            <a class="logo">
                <div><img class="bottom-icon" src="">logo<img class="top-icon" src=""></div>
            </a>
            <span class="menu">Menu</span>
            <div class="contacts">
                <div class="contacts-location">street, France</div>
                <a class="contacts-number" href="tel:+111111" style="color:#1C150B;">+1111111</a>
            </div>
        </div>
       <div class="section section-menu"></div>
         $('.header span').click(function() {
         $(this).toggleClass("active");
         $('.section-menu').toggleClass('section-menu-visible');
         if ( $(this).hasClass("active")) {
           $('.header').addClass('header-no-color');
           $(this).text("Close");
         } else {
           $(this).text("Menu");
           setTimeout(function(){
            $('.header').removeClass('header-no-color');
          },750);
         }
       });
Answer 1

Можно добавлять класс на header, и дальше скрывать стилями. Допишу в Вашем коде:

 $('.header span').click(function() { 
 	 $('.header ').toggleClass("active"); 
   $(this).toggleClass("active"); 
   $('.section-menu').toggleClass('section-menu-visible'); 
 
   if ( $(this).hasClass("active")) { 
     $('.header').addClass('header-no-color'); 
     $(this).text("Close"); 
   } else { 
     $(this).text("Menu"); 
 
     setTimeout(function(){ 
       $('.header').removeClass('header-no-color'); 
     },750); 
 
   } 
 
 });
.header.active .logo { 
 display: none 
} 
 
.header.active .contacts { 
 display: none 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="header"> 
  <a class="logo"> 
    <div><img class="bottom-icon" src="">logo<img class="top-icon" src=""></div> 
  </a> 
  <span class="menu">Menu</span> 
  <div class="contacts"> 
    <div class="contacts-location">street, France</div> 
    <a class="contacts-number" href="tel:+111111" style="color:#1C150B;">+1111111</a> 
  </div> 
</div> 
<div class="section section-menu"></div>

READ ALSO
Увеличить время задержки для блока

Увеличить время задержки для блока

Как возможно и вообще возможно ли увеличить время hover`a, те

94
Почему в новом объекте появляется свойство не из конструктора js

Почему в новом объекте появляется свойство не из конструктора js

Почему в новом объекте вдруг появилось свойство meat, я ведь не в конструкторе его писалКак тогда этот код выглядел бы не в es6?

97
Почему этот короткий код JavsScript работает

Почему этот короткий код JavsScript работает

Учу JS, наткнулся на такой пример и завис(((

88
Добавление блока индексируемного Vue js

Добавление блока индексируемного Vue js

Как сделать такое добавление блока при нажатии на кнопку добавить блок как здесь, чтобы присваивался id и можно было перемещать блоки

95