Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2017, 01:37
Интересующийся
Отправить личное сообщение для batcave Посмотреть профиль Найти все сообщения от batcave
 
Регистрация: 19.10.2015
Сообщений: 14

Изменение css через JS. проблема
На сайте есть иконка (main_menu_container). При нажатии на иконку появляется небольшое меню(main_menu), фон затемняется (opacity_background с размером 100% на 100%, прозрачным бекграундом и z-index меньшим чем у менюшки. изначально его display none, но при нажатии на иконку становится block). Проблема такая: менюшка и фон появляются. В их html дописывается style="display:block;". НО! Дальше при нажатии на opacity_background main_menu и сам opacity_background должны снова стать diplay:none. По какой-то причине этого не происходит.Console молчит. Функция работает, если пихнуть туда алерты то по клику на opacity_background они появляются. Прошу помощи.
JS код прилагается:
var background = document.getElementById('opacity_background');
var menu = document.getElementById('main_menu');

document.getElementById('main_menu_container').addEventListener('click', popUpMenu);
background.addEventListener('click', hideMenu);

function popUpMenu() {
	background.style.display = 'block';
	menu.style.display = 'block';
}

function hideMenu() {
	background.style.display = 'none';
	menu.style.display = 'none';
}
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2017, 01:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

batcave,
добавьте html и css
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2017, 01:45
Интересующийся
Отправить личное сообщение для batcave Посмотреть профиль Найти все сообщения от batcave
 
Регистрация: 19.10.2015
Сообщений: 14

<header id="main_header">
		<nav id="main_menu_container">
		<div id="main_menu">
				<form id="menu_form" action="google.com" method="post">
					<input type="submit" id="search_submit" value="">
					<div id="cross"></div>
					<input type="search" id="menu_search" placeholder="Search...">
				</form>
				<ul id="ul_category">
					<li>Furniture</li>
					<li>Decoration</li>
					<li>Lighting</li>
					<li>Electronics</li>
				</ul>
				<ul id="ul_info">
					<li>About Us</li>
					<li>Contact Us</li>
					<li>Delivery</li>
					<li>Returns</li>
				</ul>
			</div>
		<div id="opacity_background"></div>
		</nav>
		<div id="shop_bag"></div>
		<div id="logo">Soho</div>
	</header>

#main_menu_container, #shop_bag {
	float: left;
	width: 60px;
	height: 60px;
	border-right: solid 1px #2f2f2f;
	background-image: url(../images/mobile_menu_icon.png);
}
#opacity_background {
	display: none;
	position: fixed;
	z-index: 100;
	width: 100%;
	height: 100%;
	background-color: rgba(194, 196, 199, 0.6);
}
#main_menu {
	position: absolute;
	z-index: 101;
	margin: 0 auto;
	display: none;
	padding-bottom: 76px;
	width: 400px;
	background-color: white;
}

css добавил только тот что в js использую. или нужно все что в header?
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2017, 01:58
Интересующийся
Отправить личное сообщение для batcave Посмотреть профиль Найти все сообщения от batcave
 
Регистрация: 19.10.2015
Сообщений: 14

Так-с, проблема была в том, что opacity_background я положил в main_menu_container. Теперь все работает.
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2017, 01:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

batcave,
клик по фону ставит 'none' и всплывает до main_menu_container и верхний клик ставит 'block'
отмените всплытие события
function hideMenu(event) {
  event.stopPropagation();
  background.style.display = 'none';
  menu.style.display = 'none';
}
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2017, 02:02
Интересующийся
Отправить личное сообщение для batcave Посмотреть профиль Найти все сообщения от batcave
 
Регистрация: 19.10.2015
Сообщений: 14

Уже решил проблему, но спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка поддержки CSS браузером через element.style.property vs DOM.property ergonomic Events/DOM/Window 3 23.01.2017 14:24
Css смещение элемента через js PickUp Элементы интерфейса 1 13.07.2014 21:10
Резиновые div`ы через JS Bugert Javascript под браузер 9 14.05.2014 14:27
Проблема с асинхронной передачей данных через POST Kapitan79 AJAX и COMET 2 28.12.2013 11:47
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19