Настройка display = 'none' в javascript имеет приоритет над CSS в медиа-запросе

У меня есть простая веб-страница, на которой есть панель навигации, заключенная в теги навигации. Я использую медиа-запрос, чтобы скрыть эту панель навигации, когда окно просмотра имеет ширину менее 700 пикселей (путем настройки display: none для тега навигации в CSS), и чтобы отобразить эту панель навигации, когда окно просмотра имеет ширину 700 пикселей или больше (путем настройки display : блок для тега навигации в CSS). Это работает именно так, как я хочу, когда я изначально загружаю свою страницу. Я могу изменять размер области просмотра столько раз, сколько захочу, и каждый раз видеть желаемый эффект (исчезновение и повторное появление панели навигации).

У меня также есть javascript на этой странице. Во-первых, я получаю ссылку на элемент nav следующим образом:

const mynav = document.querySelector('nav');

Когда панель навигации скрыта, нажатие кнопки приводит к запуску следующего кода для отображения панели навигации:

mynav.style.display = 'block';

После того, как панель навигации была отображена с помощью javascript, нажатие той же кнопки приводит к запуску следующего кода, чтобы скрыть панель навигации:

mynav.style.display = 'none';

Этот javascript работает так, как я надеялся, за исключением одной проблемы. После того, как javascript использовался для отображения, а затем скрытия панели навигации таким образом, панель навигации остается скрытой с этого момента, независимо от того, что я делаю. Похоже, что настройка display = none в javascript имеет приоритет над моим CSS в моем медиа-запросе, поэтому, если я снова увеличу область просмотра, я не смогу снова отобразить панель навигации.

Если кто-нибудь здесь может сказать мне, есть ли способ сделать эффект моего javascript «временным» таким образом, чтобы после его запуска CSS в моем медиа-запросе все еще работал?

Любые советы или предложения будут с благодарностью.

Заранее спасибо, Павел

Не могли бы вы загрузить свой медиа-запрос, HTML и т. д., чтобы мы могли воспроизвести проблему?

Zach Jensz 16.03.2022 21:48

Стили, заданные с помощью JavaScript, становятся встроенными стилями, у которых специфичность выше, чем у любых стилей, определенных в таблицах стилей или тегах <style>, за исключением свойств, определенных с помощью !important.

Sean 16.03.2022 21:54

Вы также можете рассмотреть возможность изменения className панели навигации с помощью JS, а не стилей напрямую, а затем установить желаемый режим отображения с помощью CSS.

yinken 16.03.2022 22:03
Поведение ключевого слова "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) для оценки ваших знаний,...
2
3
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

проверьте с помощью переключателя, я думаю, это решит вашу проблему:

   btnNav.onclick = function affiche(){  
        navAffich.classList.toggle("show");
    }

в css создайте шоу класса:

.show {
        display:block;
    }

Прочтите документацию о переключении здесь с помощью w3shools или МДН.

Спасибо, Sam10 - у меня это отлично сработало!!

kraemerpw 20.03.2022 20:47

Добро пожаловать :)

Sam10 21.03.2022 00:26

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