Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подсветка родительского пункта меню (https://javascript.ru/forum/events/34899-podsvetka-roditelskogo-punkta-menyu.html)

seoguru 23.01.2013 16:12

Подсветка родительского пункта меню
 
Всем привет,

Ребята подскажите пожалуйста.

Есть меню и при выборе дочернего пункта, текст родительского пункта перестает подсвечиваться (именно сам текст который меняется с помощью "a:hover"). Хотелось бы чтобы когда дочерние пункты активны, то и родительский пункт оставался подсвеченным.

Вот сам код html:

<ul id="menu">
 	<li>
 		<a href="#">About us<span>Learn more about BestHost</span></a>
 		<ul>
			<li><a href="#">Our team</a></li>
            <li><a href="#">Our datacenter</a></li>
            <li><a href="#">Our Blog</a></li>
		</ul>
	</li>
</ul>



Вод код css:

#menu {
	padding: 0;
	margin: 0;
	font-size: 100%;
}
	
#menu li {
	list-style: none;
	float: left;
	height: 84px;
	padding: 0;
	margin: 0 0 0 10px;
	width: 206px;
	text-align: center;
	background: #78c2e6;
	position: relative;
}
	
#menu li:hover {
	background: #91c46d;
}

#menu li a {
	display: table-cell;
	width: 206px;
	height: 84px;
	color: #212121;
 	text-decoration: none;
	text-transform:uppercase;
	text-align:center;
	vertical-align:middle;
 		
	font-size: 16px;
}

#menu li a:hover {
	color: #fff;
}

#menu li span {
	position: relative;
    display: block;
	text-align: center;
	vertical-align:middle;
	text-decoration: none;
	text-transform:none;
	font-size: 13px;
  
}
	
#menu li ul {
	list-style: none;
	padding: 10px 0 0 0;
	margin: 0;
	width: 206px;
	display: none;
	position: absolute;
	left: 0;
	top: 84px;
}
	
#menu li ul li {
	float: none;
	width: 206px;
	height: 44px;
	margin: 0;
	text-align: center;
	background: #91c46d;
	}
	
#menu li ul li:hover {
	background: #6ab636;
}
	
#menu li ul li a {
	display: table-cell;
	width: 206px;
	height: 44px;
	color: #fff;
	text-decoration: none;
    text-transform: none;
	text-align:center;
    vertical-align:middle;
	font-size: 16px;
}
	
#menu li:hover ul {
	display: block;
}


Можно ли как-то яваскриптом это подправить?

Deff 23.01.2013 16:18

Цитата:

Сообщение от seoguru
то и родительский пункт оставался подсвеченным.

Нет, ток в старых браузерах или в Опера
Создайте для a:hover background-color (или border) - подсвечивайте его при наведении

Есть еще идея, запоминать все переходы в Куки(если в меню все ссылки на текущий сайт)
И, при загрузке страницы тестим куки и добавляем класс активности к нужным пунктам

ksa 23.01.2013 16:26

Цитата:

Сообщение от seoguru
именно сам текст который меняется с помощью "a:hover"

А для кого, извиняюсь, он является "родительским"?

ksa 23.01.2013 16:31

Цитата:

Сообщение от seoguru
Хотелось бы чтобы когда дочерние пункты активны, то и родительский пункт оставался подсвеченным.

Тогда нужно выбирать "правильного" родителя! :D
Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
#menu {
	padding: 0;
	margin: 0;
	font-size: 100%;
}
	
#menu li {
	list-style: none;
	float: left;
	height: 84px;
	padding: 0;
	margin: 0 0 0 10px;
	width: 206px;
	text-align: center;
	background: #78c2e6;
	position: relative;
}
	
#menu li:hover {
	background: #91c46d;
}

#menu li a {
	display: table-cell;
	width: 206px;
	height: 84px;
	color: #212121;
 	text-decoration: none;
	text-transform:uppercase;
	text-align:center;
	vertical-align:middle;
 		
	font-size: 16px;
}

#menu li:hover a {
	color: #fff;
}

#menu li span {
	position: relative;
    display: block;
	text-align: center;
	vertical-align:middle;
	text-decoration: none;
	text-transform:none;
	font-size: 13px;
  
}
	
#menu li ul {
	list-style: none;
	padding: 10px 0 0 0;
	margin: 0;
	width: 206px;
	display: none;
	position: absolute;
	left: 0;
	top: 84px;
}
	
#menu li ul li {
	float: none;
	width: 206px;
	height: 44px;
	margin: 0;
	text-align: center;
	background: #91c46d;
	}
	
#menu li ul li:hover {
	background: #6ab636;
}
	
#menu li ul li a {
	display: table-cell;
	width: 206px;
	height: 44px;
	color: #fff;
	text-decoration: none;
    text-transform: none;
	text-align:center;
    vertical-align:middle;
	font-size: 16px;
}
	
#menu li:hover ul {
	display: block;
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<ul id="menu">
 	<li>
 		<a href="#">About us<span>Learn more about BestHost</span></a>
 		<ul>
			<li><a href="#">Our team</a></li>
            <li><a href="#">Our datacenter</a></li>
            <li><a href="#">Our Blog</a></li>
		</ul>
	</li>
</ul>
</body>
</html>

ksa 23.01.2013 16:32

Deff, ссылка сама себе родитель и дочь? :)

ksa 23.01.2013 16:33

Цитата:

Сообщение от seoguru
<a href="#">About us<span>Learn more about BestHost</span></a>

Эта ссылка родитель только для span...

Deff 23.01.2013 16:36

:-? Я чот на :link циклонулсо (с hover

seoguru 23.01.2013 17:03

посмеялся :lol: ...

Вот есть у нас родительский пункт "<a href="#">About us</a>"

Когда опускаешся на дочерние пункты, то естественно курсор сдвигаеш вниз и a:hover перестает работать, таким образом текст в родительском блоке принимает исходный цвет (черный). Можно ли как-то это обойти, чтобы пока работаеш с дочерними пунктами цвет текста в родительском пункте оставался белый (как при наведении)?

Спасибо

ksa 24.01.2013 11:24

Цитата:

Сообщение от seoguru
Вот есть у нас родительский пункт

Это какое-то новое понятие "родительский пункт", "дочерний пункт"? :blink:
Почитай про ДОМ - там четко расписано про родительские и дочерние элементы.

Цитата:

Сообщение от seoguru
Можно ли как-то это обойти

Как это сделать я уже показал в своем примере выше...

seoguru 24.01.2013 14:15

Цитата:

Сообщение от ksa (Сообщение 229127)
Это какое-то новое понятие "родительский пункт", "дочерний пункт"? :blink:
Почитай про ДОМ - там четко расписано про родительские и дочерние элементы.


Как это сделать я уже показал в своем примере выше...

Сори, провтыкал. Ошибку в стилях понял. Спасибо шеф


Часовой пояс GMT +3, время: 05:16.