Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2009, 10:40
Олег Васильев
 
Сообщений: n/a

Замена изображений в меню
Не получается, чтобы при щелчке по определенной картинке пункта меню joomla она заменялась на другую, причем для каждого пункта разную. Может в скрипте дело.
Вот то что имею.
sfHover = function() {
var sfEls = document.getElementById("ja-cssmenu").getElementsByTagName("li");
for (var i=0; i<sfEls.length; ++i) {
sfEls.onmouseover=function() {
clearTimeout(this.timer);
if(this.className.indexOf("sfhover") == -1)
this.className+="sfhover";
}
sfEls.onmouseout=function() {
this.timer = setTimeout(sfHoverOut.bind(this), 20);
}
}
}

function sfHoverOut() {
clearTimeout(this.timer);
this.className=this.className.replace(new RegExp("sfhover\\b"), "");
}

if (window.attachEvent) window.attachEvent("onload", sfHover);

CSS

#ja-cssmenu li a {
display: block;
text-decoration: none;
font-size: 80%;
color: #395467;
padding: 60px 20px;
font-weight: bold;
text-transform: uppercase;

}
.menu-item0{
background: url(../../images/company.jpg) no-repeat center bottom;


}


.menu-item1{
background: url(../../images/production.jpg) no-repeat center bottom;


}
.menu-item2{
background: url(../../images/news.jpg) no-repeat center bottom;
}
.menu-item3{
background: url(../../images/partners.jpg) no-repeat center bottom;
}
.menu-item4{
background: url(../../images/publications.jpg) no-repeat center bottom;
}
.menu-item5{
background: url(../../images/questions.jpg) no-repeat center bottom;
}
.menu-item6{
background: url(../../images/contacts.jpg) no-repeat center bottom;
}
#ja-cssmenu li a:hover,
#ja-cssmenu li a:active,
#ja-cssmenu li a:focus {
color: #395467;
}

#ja-cssmenu li:hover a,
#ja-cssmenu li.sfhover a,
#ja-cssmenu li.havechildsfhover a,
#ja-cssmenu li.havechild-activesfhover a {
background: url(../../images/mainnav-active.gif) no-repeat center ;
color: #FFFFFF;
}

#ja-cssmenu li a.active,
#ja-cssmenu li a.active:hover,
#ja-cssmenu li a.active:active,
#ja-cssmenu li a.active:focus {
background: url(../../images/mainnav-active.gif) no-repeat center ;
color: #FFFFFF;
}
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2009, 00:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

для начала давай оформим код с помощью тэгов ([js], кнопка на панели инструментов) и расставим отступы (можно просто отредактировать существующее сообщение)
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2009, 08:30
Новичок на форуме
Отправить личное сообщение для zorro77786 Посмотреть профиль Найти все сообщения от zorro77786
 
Регистрация: 08.07.2009
Сообщений: 3

Не получается, чтобы при щелчке по определенной картинке пункта меню joomla она заменялась на другую, причем для каждого пункта разную. Может в скрипте дело.
Вот то что имею.

sfHover = function() {
var sfEls = document.getElementById("ja-cssmenu").getElementsByTagName("li");
for (var i=0; i<sfEls.length; ++i) {
sfEls.onmouseover=function() {
clearTimeout(this.timer);
if(this.className.indexOf("sfhover") == -1)
this.className+="sfhover";
}
sfEls.onmouseout=function() {
this.timer = setTimeout(sfHoverOut.bind(this), 20);
}
}
}

function sfHoverOut() {
clearTimeout(this.timer);
this.className=this.className.replace(new RegExp("sfhover\\b"), "");
}

if (window.attachEvent) window.attachEvent("onload", sfHover);


CSS

Код:
#ja-cssmenu li a {
display: block;
text-decoration: none;
font-size: 80%;
color: #395467;
padding: 60px 20px;
font-weight: bold;
text-transform: uppercase;

}
.menu-item0{
background: url(../../images/company.jpg) no-repeat center bottom;


}


.menu-item1{
background: url(../../images/production.jpg) no-repeat center bottom;


}
.menu-item2{
background: url(../../images/news.jpg) no-repeat center bottom;
}
.menu-item3{
background: url(../../images/partners.jpg) no-repeat center bottom;
}
.menu-item4{
background: url(../../images/publications.jpg) no-repeat center bottom;
}
.menu-item5{
background: url(../../images/questions.jpg) no-repeat center bottom;
}
.menu-item6{
background: url(../../images/contacts.jpg) no-repeat center bottom;
}
#ja-cssmenu li a:hover,
#ja-cssmenu li a:active,
#ja-cssmenu li a:focus {
color: #395467;
}

#ja-cssmenu li:hover a,
#ja-cssmenu li.sfhover a,
#ja-cssmenu li.havechildsfhover a,
#ja-cssmenu li.havechild-activesfhover a {
background: url(../../images/mainnav-active.gif) no-repeat center ;
color: #FFFFFF; 
}

#ja-cssmenu li a.active,
#ja-cssmenu li a.active:hover,
#ja-cssmenu li a.active:active,
#ja-cssmenu li a.active:focus {
background: url(../../images/mainnav-active.gif) no-repeat center ;
color: #FFFFFF;
}
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2009, 08:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

после
this.className+="sfhover";

пишем
alert(this.className);

и смотрим, того ли мы ждали
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2009, 10:44
Новичок на форуме
Отправить личное сообщение для zorro77786 Посмотреть профиль Найти все сообщения от zorro77786
 
Регистрация: 08.07.2009
Сообщений: 3

Сделал как сказано в предидущем посте.

sfHover = function() {
	var sfEls = document.getElementById("ja-cssmenu").getElementsByTagName("li");
	for (var i=0; i<sfEls.length; ++i) {
		sfEls[i].onmouseover=function() {
			clearTimeout(this.timer);
			if(this.className.indexOf("sfhover") == -1)
				this.className+="sfhover";
				alert(this.className);
		}


Браузер стал выдавать ошибку sfhover.
Забыл уточнить. Те картинки, которые заменяют предидущие при щелчке должны не меняться обратно, до того, пока не щелкнут по другому пункту меню.
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2009, 10:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

не ошибку, а окно, в котором класс элемента выводится. alert выводит окно

только я не вижу на что влияет класс sfhover. Или выводилось что-то типа havechildsfhover?

чтобы менялась картинка, можно создать классы типа menu-item1-active и т.д. и при наведении мыши менять класс соответствующего элемента с menu-item1 на menu-item1-active. А потом возвращать

Последний раз редактировалось x-yuri, 10.07.2009 в 10:59.
Ответить с цитированием
  #7 (permalink)  
Старый 10.07.2009, 11:38
Новичок на форуме
Отправить личное сообщение для zorro77786 Посмотреть профиль Найти все сообщения от zorro77786
 
Регистрация: 08.07.2009
Сообщений: 3

Спасибо. Я что-то подобное пробывал. А можно пример?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
Как "переключать" картинки в меню навигации? KirTer Элементы интерфейса 1 22.06.2009 11:49
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05
Ссылка под слоем перекрывает слой Devider Общие вопросы Javascript 7 24.02.2009 23:18
Горизонтальное меню dembi Общие вопросы Javascript 1 14.01.2009 20:23