Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Настроить меню. (https://javascript.ru/forum/dom-window/13530-nastroit-menyu.html)

McLotos 02.12.2010 10:09

Настроить меню.
 
Подскажите как это делается, если можно линканите образец скрипта...
Есть картинка, в ней нарисованы варианты кнопки, всего 4 варианта для каждой кнопки т.е. вариант кнопки в нормальном состоянии, при наведении курсора, при клике, и когда на этой странице.
Я мог бы при помощи css сделать всё это но только в том случае, когда каждый из вариантов кнопки находится в разных файлах, а когда в одном я не умею... подскажите, хочу научиться и такому варианту создания меню. Для тех кто не понял о чем речь прилагаю файлик, из которого мне нужно сделать меню. http://javascript.ru/files/u10172/1.gif
Первая строка меню в нормальном состоянии
Вторая строка - при наведении курсора т.е. я так думаю OnMouseOver
Третья строка - при нажатой кнопке мыши что-то типа OnClick или OnButtonClick я просто не знаю JS, но думаю по образцу сориентирюсь...
Четвертая когда я нахожусь на странице этого пункта меню.
Если у кого-нибудь есть такой скрипик киньте плиз...:help: :( :cray:

exec 02.12.2010 10:21

http://html-css.info/2009/07/css-sprites

McLotos 02.12.2010 10:24

То есть получается что JS вообще не нужен?

McLotos 02.12.2010 10:32

Хотя нет, в любом случае нужен, ну прописал я этот код для css, настроил, но как теперь првязать к ним event которые мне нужны, о них говорилоь выше.

ksa 02.12.2010 10:40

Цитата:

Сообщение от McLotos
Если у кого-нибудь есть такой скрипик киньте плиз..

Как вариант...

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type='text/css'>
.button,
.button_dn {
	width: 62px;
	height: 20px;
	display: block;
	text-align: center;
	text-decoration: none;
}
.button {
	color: #000000;
	background: url('http://javascript.ru/files/u10172/1.gif') no-repeat 0 0;
}
.button:hover {
	color: #ffffff;
	background: url('http://javascript.ru/files/u10172/1.gif') no-repeat 0 -22px;
}
.button_dn {
	color: #ffffff;
	background: url('http://javascript.ru/files/u10172/1.gif') no-repeat 0 -45px;
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<a href='#' class='button' onmousedown='this.className="button_dn"' onmouseup='this.className="button"'>Test</a>
</body>
</html>

McLotos 02.12.2010 10:47

КУЛ! СПС! а как теперь сделать чтобы оставалась нажатой так кнопка где я нахожусь?

exec 02.12.2010 10:58

<script type='text/javascript'>
	(function () {
		var nodes = document.getElementById("menu").getElementsByTagName("A");
		for (var i = 0; i < nodes.length; i++)
			if (nodes[i].href.replace("www.", "").split("#")[0].split("?")[0] == location.href.replace("www.", ""))
				nodes[i].className = "button_dn";
	})();
</script>


Ссылки поместить в DIV с id='menu'.

McLotos 02.12.2010 11:10

А что означает эта строчка if (nodes[i].href.replace("www.", "").split("#")[0].split("?")[0] == location.href.replace("www.", ""))
nodes[i].className = "button_dn"; что должно быть вместо "www" "" "#"?

McLotos 02.12.2010 11:11

А ещё такой вопрос, если ссылки не постоянные, ну я пишу скин под CMS там через админку можно меню настраивать, т.е. менять название пунктов меню,адреса и их колличество, тогда вариант с DIV не сработает?

exec 02.12.2010 12:00

Цитата:

что должно быть вместо "www" "" "#"?
Ничего менять не надо. Ну вот например, текущий адрес — www.site.ru#anchor?a=1&b=2&c=3, а в меню ссылка просто site.ru. Условие на равенство не сработает, а написанная выше строчка поможет этого избежать, вычленив все ненужные части URL.

McLotos 02.12.2010 12:37

А что по поводу CMS? К примеру можно будет сделать так:
<div class=button_dn>
<div id=menu>
{PHP.cfg.menu5}
</div>
</div>

Где {PHP.cfg.menu5} переменная, в которой будут указаны <ul>
<li><a href="">блаблабла</a></li>
<li><a href="">блаблабла</a></li>
<li><a href="">блаблабла</a></li>
</ul>
Ну вот както так...

ksa 02.12.2010 19:31

Цитата:

Сообщение от McLotos
как теперь сделать чтобы оставалась нажатой так кнопка где я нахожусь?

Как вариант убрать

onmouseup='this.className="button"'

McLotos 03.12.2010 06:59

Цитата:

Сообщение от ksa (Сообщение 81981)
Как вариант убрать

onmouseup='this.className="button"'

немного не так... как писалось в самом начале, для активных пунктов меню есть 4 картинка. Почитай самый первый топ please. Там всё подробн написано. Или второй, даже в самой картинке 4 варианта кнопки =)

ksa 03.12.2010 10:59

Цитата:

Сообщение от McLotos
немного не так...

Таки сделай "так". Кто мешает? :) Я лишь показал пример использования одного файла для "разных" кнопок и в "разных" их ипостасях. Не более того...

McLotos 03.12.2010 12:15

Нееет. меня опять не понимают....
Вот смотри. В коде, который ты мне дал есть следующее:
стартовый вид кнопки - (0 0);
кнопка при наведении курсора - (0 -38px);
кнопка при нажатой клавише мыши -(0 -76px);
А как ты думаешь, почему на самой картинке 4 строки, а не 3?

ksa 03.12.2010 12:45

Цитата:

Сообщение от McLotos
А как ты думаешь, почему на самой картинке 4 строки, а не 3?

Мне-то это пофиг. :D
Я показал как можно пользоваться одной картинкой и не более того. Дальше делай сколько хочешь классов и меняй их у элементов как тебе это заблогорассудится...

McLotos 03.12.2010 13:54

Проблема как раз в этом 4 классе, как его прописать?

ksa 03.12.2010 14:11

Цитата:

Сообщение от McLotos
как его прописать?

Аналогично

<объект>.className=<селектор>

McLotos 03.12.2010 14:54

Давайте не будем играть в шпионов, хорошо? =)
как это выглядеть будет в коде, please... т.е. как его добавить именно чтобы он работал... ну вот у вас в лисинге всё прописано типа такого
.button {
color: #000000;
background: url(globalnavbg.png) no-repeat 0 0;
}
.button:hover {
color: #ffffff;
background: url(globalnavbg.png) no-repeat 0 -38px;
а патом вот так
<li class="current"><a href='1.htm' class='button' onmousedown='this.className="button_dn"' onmouseup='this.className="button"'> </a></li>
чего здесь нехватает?

x-yuri 03.12.2010 19:17

Цитата:

Сообщение от McLotos
Давайте не будем играть в шпионов, хорошо? =)

давай не будем играть в "напишите за меня сайт", хорошо? Начинай думать головой ;)

наводящий пример:
<!doctype html>
<html>
<body>
<style type="text/css">
div {
    border: 1px solid red;
    padding: 50px;
}
div div {
    background: green;
}
</style>
<div>
    <div></div>
</div>
</body>
</html>

Magneto 04.12.2010 09:59

Javascript абсолютно здесь не нужен.
Данное меню легко реализуется силами HTML и CSS.

И конечно сложно помочь человеку который даже основ верстки не знает.

Цитата:

Сообщение от ksa
Сообщение от McLotos
как теперь сделать чтобы оставалась нажатой так кнопка где я нахожусь?

Создайте нужный класс и применяйте его к тому пункту меню в разделе которого находится пользователь

И учите HTML и CSS


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