Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Стили у меню (https://javascript.ru/forum/misc/9825-stili-u-menyu.html)

kiwwwi 07.06.2010 17:16

Стили у меню
 
Есть такая задача:
меню из 6 пунктов. В активном состоянии на пункт меню налаживается плашка белого цвета.
Нужно сделать:
При наведении на другой пункт меню (не текущий)
выделение (плашка) уезжают на него.Если убрать мышь с наведенного пункта, выделение возвращается на позицию текущего пункта.

Как можно такое сделать?

Skipp 07.06.2010 17:19

А какие идеи у вас на этот счёт имеется? Начинайте, а я подхвачу.

kiwwwi 07.06.2010 17:20

Думаю, что нужно каждому пункту присвоить id, потом обрабатывать по onmouseover onmouseout

Но вот как правильно это сделать не совсем понимаю...

Skipp 07.06.2010 17:26

ну допустим
<div style="background-color: #FFF;" onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'">наведи на меня</div>


А можно узнать что за плашка? Я так и не понял.

kiwwwi 07.06.2010 17:33

<ul class="topmenu">
				<li><a href="" title="">Главная</a></li>
				<li class="active"><a href="" title="">О компании</a></li>
				<li><a href="" title="">Новости</a></li>
				<li><a href="" title="">Склад-онлайн</a></li>
				<li><a href="" title="">Вопрос-ответ</a></li>
				<li><a href="" title="">Контакты</a></li>
			</ul>


Вот так у меня выглядит меню. Этот вариант не подойдет

Skipp 07.06.2010 17:46

Что за: "налаживается плашка белого цвета" ?

kiwwwi 07.06.2010 18:04

Стили для этого меню:
.topmenu li:hover {
	background: url('images/gb_m.gif') center bottom no-repeat;
}
.active {
	background: url('images/gb_m.gif') center bottom no-repeat;
}
.active a{
	color: #0054a6;
	background: #fff;
	text-decoration: underline;
}
.topmenu li:hover a{
	color: #0054a6;
	background: #fff;
	text-decoration: underline;
}

JsLoveR 07.06.2010 20:39

Цитата:

Сообщение от kiwwwi
При наведении на другой пункт меню (не текущий)
выделение (плашка) уезжают на него

прям плавно уезжает ? Что-то, мне кажется, тут нужен jquery, либо раздел "Работа".
Skipp,
Плашка имеется ввиду, как я понял, background, "плашка" - векторная фигура.

kiwwwi 07.06.2010 20:41

Цитата:

Сообщение от JsLoveR (Сообщение 58344)
прям плавно уезжает ? Что-то, мне кажется, тут нужен jquery, либо раздел "Работа".
Skipp,
Плашка имеется ввиду, как я понял, background, "плашка" - векторная фигура.

плавно не должно, только пропадать и появляться

JsLoveR 07.06.2010 20:43

kiwwwi,
Skipp Вам показал, просто расставьте во все li-элементы style="background-color: #FFF;" onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"

kiwwwi 07.06.2010 20:45

Цитата:

Сообщение от JsLoveR (Сообщение 58348)
kiwwwi,
Skipp Вам показал, просто расставьте во все li-элементы style="background-color: #FFF;" onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"

хороше, как тогда будет пропадать и появлять бекграунд у активного элемента?

Skipp 07.06.2010 20:48

kiwwwi,
никак

kiwwwi 07.06.2010 20:49

Цитата:

Сообщение от Skipp (Сообщение 58351)
kiwwwi,
никак

зачем тогда предлагал выше написанный код?

Skipp 07.06.2010 20:51

kiwwwi,
наверно я не понял про какой активный элемент говорили)

JsLoveR 07.06.2010 20:52

Skipp,
и я пропустил)

Skipp 07.06.2010 20:55

<ul class="topmenu" style="width: 100px">
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Главная</a></li>
				<li class="active" style="background-color: #789"><a href="" title="">О компании</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Новости</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Склад-онлайн</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Вопрос-ответ</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Контакты</a></li>
			</ul>



class="active" без событий

kiwwwi 07.06.2010 21:06

Цитата:

Сообщение от Skipp (Сообщение 58356)
<ul class="topmenu" style="width: 100px">
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Главная</a></li>
				<li class="active" style="background-color: #789"><a href="" title="">О компании</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Новости</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Склад-онлайн</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Вопрос-ответ</a></li>
				<li onmouseover="this.style.backgroundColor='#0FF'" onmouseout="this.style.backgroundColor='#FFF'"><a href="" title="">Контакты</a></li>
			</ul>



class="active" без событий

я понял, но не подходит. У меня активный элемент тоже имеет background и он должен исчезать при наведении на другие ссылки и пояляться если мы не наводим на другие ссылки

Sweet 08.06.2010 00:15

Ответы на все вопросы найдутся здесь. Нужно только чуть-чуть заморочится:)
Алгоритм, видимо, такой:
Про наведении на li сравниваем его позицию с позицией div'а. Если они равны, то ничего не делаем. А если не равны, то запоминаем текущую позицию div'а, и двигаем его к нужному li. А если mouseout - возвращаем div на исходную.

Skipp 08.06.2010 09:13

или дустанавливай в событиях visibility: hidden для активного элемента списка.


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