nickola105
@nickola105
начинающий

Закрытие элемента по клику вне его блока на js, не jquery?

Ребятушки всем привет!!
Как спрятать элемент по клику вне его блока на js, не на jquery?
  • Вопрос задан
  • 6406 просмотров
Решения вопроса 1
potapchino
@potapchino
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width">
		<title>Document</title>
		
		<style>
			.block {
				width: 200px;
				height: 200px;
				background-color: magenta;
				display: none;
			}
			.block.open { display: block }
		</style>
	</head>
	<body>
		<button>кнопка</button>
		<div class="block">asd</div>

		<script>
			(() => {
				const block = document.querySelector('.block');
				const button = document.querySelector('button');
				
				function toggle() {
					block.classList.toggle('open');
				}
				function remove() {
					block.classList.remove('open');
				}
				
				document.addEventListener('click', e => {
					const target = e.target;
					
					target === button ? toggle() : target !== block ? remove() : false;
				});
			})();
		</script>
	</body>
</html>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
romy4
@romy4
Exception handler
банально ставишь обработчик клика на body и если никто его не перехватывает, то закрываешь элемент.
вариант сложнее. делаешь под твоим элементом большой широкий элемент на весь экран, но полностью прозрачный (можно заполнить 1 пиксельной гифкой), ставишь на нём клик событие и скрываешь оба слоя
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
document.getElementById('hideMe').style.display = "none";

Обработчик вешаем на прозрачный слой под элементом на всю площадь страницы, или на боди.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
24 нояб. 2024, в 23:46
20000 руб./за проект
24 нояб. 2024, в 23:07
2000 руб./за проект