Применить правило css, если меню открыто

Я хочу изменить цвет значка гамбургера, если меню открыто.

Я не уверен на 100%, как это сделать? Я предполагаю, что вы должны проверить, есть ли «активный» класс, а затем, если он возвращает true, выполнить код css.

Вот ссылка на сайт: http://plc.fluxeddigitalclients.co.uk/

<body>

<div class = "page-transition">
  <div class = "layer"></div>
  <!-- end layer --> 
</div>
<!-- end page-transition -->
<nav class = "site-navigation">
  <div class = "layer"></div>
  <!-- end layer -->
  <div class = "inner">
    <ul data-splitting>
      <li><a href = "/">Maison</a> <small>Retour au début</small></li>
      <li><a href = "/">Le Tournoi</a> <small>A propos de l'événement</small></li>
      <li><a href = "studio.html">Les Joueurs</a> <small>All About Us</small> </li>
      <li><a href = "showcases.html">Le Site</a> <small>Our all projects</small> </li>
      <li><a href = "blog.html">Media</a> <small>Recent posts</small> </li>
      <li><a href = "contact.html">Galerie</a> <small>Say hello</small> </li>
      <li><a href = "contact.html">Pro AM</a> <small>Say hello</small> </li>
      <li><a href = "contact.html">Partenaires</a> <small>Say hello</small> </li>
       <li><a href = "/contact">Pro AM</a> <small>Contact</small> </li>
    </ul>
  </div>
  <!-- end inner --> 
</nav>
<!-- end site-navigation -->
<div class = "social-media">
  <div class = "layer"> </div>
  <!-- end layer -->
  <div class = "inner">
    <h5>Social Share </h5>
    <ul>
      <li><a href = "index.html#"><i class = "fab fa-facebook-f"></i></a></li>
      <li><a href = "index.html#"><i class = "fab fa-twitter"></i></a></li>
      <li><a href = "index.html#"><i class = "fab fa-linkedin-in"></i></a></li>
      <li><a href = "index.html#"><i class = "fab fa-google-plus-g"></i></a></li>
      <li><a href = "index.html#"><i class = "fab fa-youtube"></i></a></li>
    </ul>
  </div>
</div>
<!-- end social-media -->
<div class = "all-cases">
  <div class = "layer"> </div>
  <!-- end layer -->
  <div class = "inner">
    <ul>
      <li><a href = "index.html#">Darkness</a></li>
      <li><a href = "index.html#">Goddes</a></li>
      <li><a href = "index.html#">Employee</a></li>
      <li><a href = "index.html#">Berry</a></li>
      <li><a href = "index.html#">Roosters</a></li>
      <li><a href = "index.html#">Primero</a></li>
    </ul>
  </div>
  <!-- end inner --> 
</div>
<!-- end all-cases -->
<main>
  <aside class = "left-side">
    <div class = "logo"> <a href = "index.html"><img src = "/themes/paris-legends-championship/assets/images/branding/paris-legends-icon.png" alt = "Image"></a> </div>
    <!-- end logo -->
    <div class = "hamburger" id = "hamburger">
      <div class = "hamburger__line hamburger__line--01">
        <div class = "hamburger__line-in hamburger__line-in--01"></div>
      </div>
      <div class = "hamburger__line hamburger__line--02">
        <div class = "hamburger__line-in hamburger__line-in--02"></div>
      </div>
      <div class = "hamburger__line hamburger__line--03">
        <div class = "hamburger__line-in hamburger__line-in--03"></div>
      </div>
      <div class = "hamburger__line hamburger__line--cross01">
        <div class = "hamburger__line-in hamburger__line-in--cross01"></div>
      </div>
      <div class = "hamburger__line hamburger__line--cross02">
        <div class = "hamburger__line-in hamburger__line-in--cross02"></div>
      </div>
    </div>
    <!-- end hamburger -->
    <div class = "follow-us"> FOLLOW US </div>
    <!-- end follow-us -->
    <div class = "equalizer">
        <a href = "" class = "jf__link" target = "_blank">
            <img src = "/themes/paris-legends-championship/assets/images/jf.png" class = "img-fluid jf__link--img" alt = "">
        </a>
    </div>
    <!-- end equalizer --> 
  </aside>
  <!-- end left-side -->
  <div class = "all-cases-link"> <span>Leaderboard</span> <b><i class = "fa fa-table" aria-hidden = "true"></i></b> </div>
  <!-- end all-cases-link -->

вот текущий css

.hamburger__line-in::after, .hamburger__line-in::before {
    width: 60px;
    height: 2px;
    content: '';
    display: block;
    position: absolute;
    top: 0;
    background-color: #fff;
}

и я хочу изменить его на

.hamburger__line-in::after, .hamburger__line-in::before {
    width: 60px;
    height: 2px;
    content: '';
    display: block;
    position: absolute;
    top: 0;
    background-color: #C1A473;
}

Я был бы признателен любому решению.

пожалуйста, добавьте также css

Naga Sai A 26.07.2019 23:06

Куда уходит событие клика? Не можете ли вы зарегистрировать/прослушать событие щелчка и использовать этот event.target, который передается в обратном вызове, для изменения/добавления класса в элемент DOM? также вы используете jquery - похоже, есть и другие вещи, которые меняют имя класса при нажатии. Интересно, можете ли вы отредактировать этот код, сделав это - в противном случае вот коротышка для вас $('#hamburger').click(function(e) { $(e.target).toggleClass('open'); })

Coty Embry 26.07.2019 23:07

Как говорит Нага, CSS — это ключ. Изменение состояния наведения на «гамбургер» позволит вам изменить его, как вы описываете здесь.

Parapluie 26.07.2019 23:08

просто добавьте .active { color: #yourcolor; } после первоначальных стилей бургера, как только элемент получит активный класс, он получит новые стили.

Souleste 26.07.2019 23:09

Я не очень хорошо знаком с JS, если честно. Я добавил CSS к исходному вопросу

Alex Posterns 26.07.2019 23:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
938
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы действительно не «выполняете» CSS. Вы просто устанавливаете правила, которые применяют стили в зависимости от того, какие селекторы присутствуют. Прямо сейчас похоже, что ваш класс .active применяется к контейнеру, отличному от того, в котором находится гамбургер. Если вы вместо этого примените его к родителю как текущего места, где он применяется, так и гамбургера, то вы можете написать правило, которое изменяет обе вещи при применении .active. Или, в качестве альтернативы, вы можете применить .active к нескольким местам, то есть в дополнение к тому, где он применяется в настоящее время, также применить его к родителю гамбургера.

Ответ принят как подходящий

Технически вы можете использовать jQuery или просто JS для изменения свойств CSS, или, поскольку уже есть класс, который переключается на основе открытия/закрытия, вы можете просто стилизовать дочерние элементы на основе этого класса с помощью чистого CSS (вы можете захотеть обрабатывать состояния тоже вроде ховер):

.hamburger.is-opened-navi .hamburger__line.hamburger__line--cross01 *::after,
.hamburger.is-opened-navi .hamburger__line.hamburger__line--cross02 *::after {
    background-color: #122e1A;
}

Тестирование, кажется, лучше работает с ::before и ::after:

.hamburger.is-opened-navi .hamburger__line.hamburger__line--cross01 *::before,
.hamburger.is-opened-navi .hamburger__line.hamburger__line--cross02 *::before,
.hamburger.is-opened-navi .hamburger__line.hamburger__line--cross01 *::after,
.hamburger.is-opened-navi .hamburger__line.hamburger__line--cross02 *::after {
    background-color: #122e1A;
}

Редактировать: приятный темно-зеленый подходит для сайта лучше, чем сплошной красный.

Для ссылки «следуй за нами», которую я сначала даже не увидел (с Ad Block Plus), это лучший кандидат для jQuery, поскольку у нее нет предков, чей класс изменяется при открытии меню. Для этого вы можете определить класс CSS, когда он активен:

.follow-us.active {
    color: #C1A473;
}

И добавьте прослушиватель быстрого щелчка, который изменяет свой активный класс (поместите его в конец тела, в <script></script> непосредственно перед тегом </body>):

$('.hamburger').click(function() {
  $('.follow-us').toggleClass('active');  
});

Спасибо за эту отметку! Вы легенда! Как я могу сделать это для другого элемента боковой навигации, т.е. «Следуйте за нами»?

Alex Posterns 26.07.2019 23:28

Ой Шакс. Отредактировано.

user1189882 26.07.2019 23:38

@JakeFeeley - еще одно предложение, добавьте transition: color 1.5s; в правила CSS для .follow-us (или .left-side.follow-us, поскольку у вас уже есть эти правила) - не каждый браузер будет это учитывать, но Chrome будет - возможно, есть другие версии transition, которые будут работать для цвета для разных браузеров тоже, но я проверял в Хроме. Если вы нашли ответ полезным, обязательно отметьте его как правильный ответ, чтобы другие могли его найти и чтобы никто не тратил время на решение того, что уже решено. Ваше здоровье!

user1189882 27.07.2019 00:37

Другие вопросы по теме