@green300

Как скрывать блок по клику за его пределами?

это код показа менюшки с каждого артикла..там ссылки еще имеются - понравилось, пожаловаться, редактировать...по нажатию на них тоже менюшка должна исчезать..
<script defer type="text/javascript">
	let dropbtn = document.querySelectorAll('.dropbtn'),
		dropdown_content = document.querySelectorAll('.dropdown-content');


		for (let i = 0; i < dropdown_content.length; i++){
			dropbtn[i].addEventListener('click', function(){
				dropdown_content[i].style.display = 'block';
			})
			
		}

</script>
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
shamilist
@shamilist
Аналитик
Можно решить задачу через css стили.

1. У меню указать свойство position: fixed.
2. Создать класс active, который отвечает за то, что элемент видно.
3. Создать класс hidden, который отвечает за то, что элемент не видно.
В зависимости от видимости/невидимости меню в начале указываете один из классов по умолчанию, они должны менять друг друга при событии click на нужный элемент.
4. Указать классу hidden свойство left: -ширина меню в пикселях. Например: left: - 100px. Меню исчезнет влево и уйдет из основного потока страницы.
5. Указать классу active свойство left: 0. Т.е. меню возвращается на страницу.
Можно указать и right, зависит от того, с какой стороны будет находится меню.
6. Пример JS кода с логикой замены этих классов у элемента:

const button1 = document.querySelector('.sidebar__button');
const field = document.querySelector('.field');
const menu = document.querySelector('.menu');

button1.addEventListener('click', () => {
    menu.classList.replace('active' , 'hidden');
});

field.addEventListener('click', () => {
    menu.classList.replace('hidden', 'active');
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
Слушать клик по window, проверять был ли клик внутри менюшки или нет.
if (event.target.closest('.menu'))
Ответ написан
imko
@imko
Senior Scratch Developer
Проверить отстуствует ли целевой элемент в "пути" события https://developer.mozilla.org/en-US/docs/Web/API/E...
Ответ написан
dalnick
@dalnick
Нео-бразованный кододел
В чём проблема прописать функцию исчезновения менюшки через взаимодействия со стилями по getElementById?
А потом просто в документе добавить к нужным кнопкам атрибут օnclick и в нём вызывать эту функцию по нажатию.
Как бы можно без всяких слушателей и проверок с доп условиями. Я вам предложил самый лёгкий способ. Если что-то непонятно пишите
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы