Как выделить активный пункт меню в моём случаи? может кто помочь?
Ситуация довольно простая, но не могу никак разобраться.
Есть скрипт менюшки, пункт меню синего цвета, при наведении на него он меняет цвет на зелёный (+ закруглённые края у каждого пункта меню). Когда мышку убираем с пункта меню, оно плавно становится опять синим. Нужно сделать чтобы например при нажатии на пункт ПРОДУКЦИЯ (для примера) при переходе в раздел ПРОДУКЦИЯ этот пункт оставался зелёным (чтобы человек мог видеть в какой части сайта сейчас находится) и чтобы пункт был с теми же закруглёнными краями. Надеюсь кто то сможет помочь разобраться, уже неделю парюсь с этой фигнёй. Вот скрипт менюшки:
<style type="text/css">
<!--
@import url([url]http://fonts.googleapis.com/css?family=Lobster&subset=cyrillic,latin);[/url]
body {margin:0; padding:0; background:#5d802c;}
#nav li{float:right; margin:5px 10px 5px 0; background:#4DA4D1; -moz-border-radius:5px; -khtml-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;}
-->
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<!-- rounded corners for IE -->
<script src="DD_roundies_0.0.2a-min.js"></script>
<script>
DD_roundies.addRule("#nav", "5px");
DD_roundies.addRule("#nav li", "5px");
</script>
<script>
$(document).ready(function(){
$nav_li=$("#nav li");
$nav_li_a=$("#nav li a");
var animSpeed=450; //Скорость затемнения
var hoverTextColor="#fff"; //Цвет текста при наведении мыши
var hoverBackgroundColor="#9dd12e"; //Цвет фона при наведении мыши
var textColor=$nav_li_a.css("color");
var backgroundColor=$nav_li.css("background-color");
//анимация цвета текста
$nav_li_a.hover(function() {
var $this=$(this);
$this.stop().animate({ color: hoverTextColor }, animSpeed);
},function() {
var $this=$(this);
$this.stop().animate({ color: textColor }, animSpeed);
});
//анимация цвета фона
$nav_li.hover(function() {
var $this=$(this);
$this.stop().animate({ backgroundColor: hoverBackgroundColor }, animSpeed);
},function() {
var $this=$(this);
$this.stop().animate({ backgroundColor: backgroundColor }, animSpeed);
});
});
</script>
А вот соответственно и сама менюшка:
<div id="nav">
<ul>
<li><a href="index.html">Главная</a></li>
<li><a href="#">Продукция</a></li>
<li><a href="#">Статьи</a></li>
<li><a href="#">Видео</a></li>
<li><a href="#">Патенты</a></li>
<li><a href="#">Результаты</a></li>
<li><a href="#">Контакты</a></li>
</ul>
</div>
Надо сделать чтото вроде того: <li class="current"><a href="#">Продукция</a></li> Чтобы именно этот пункт оставался зелёным с закруглёнными краями. Буду очень благодарен если кто то сможет помочь. |
Это реализуется на серверной части приложения, либо, если страницы статические, то - вручную.
|
Страницы статичные (обычный HTML). Просто не могу понять как добавить вручную например class="active" чтобы выделялось так-же как при наведении (только оставалось таковым во время нахождения на данной странице.
|
Можно проверить адрес страницы, и добавить нужному элементу класс
if(window.location.pathname.search('index.html') != -1) {
$('#nav li:first').addClass('current');
}
// else if() ....
|
Не получилось таким методом. Куда именно вставлять код? Может просто не правильно делаю что-то.
|
Это пример кода. Вставлять в $(document).ready
|
Всё равно зелёным не подсвечивается.
<style type="text/css">
<!--
@import url(http://fonts.googleapis.com/css?family=Lobster&subset=cyrillic,latin);
body {margin:0; padding:0; background:#5d802c;}
#nav li{float:right; margin:5px 10px 5px 0; background:#4DA4D1; -moz-border-radius:5px; -khtml-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;}
-->
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<!-- rounded corners for IE -->
<script src="DD_roundies_0.0.2a-min.js"></script>
<script>
DD_roundies.addRule("#nav", "5px");
DD_roundies.addRule("#nav li", "5px");
</script>
<script>
$(document).ready(function(){
if(window.location.pathname.search('index.html') != -1) {
$('#nav li:first').addClass('current');
}
$nav_li=$("#nav li");
$nav_li_a=$("#nav li a");
var animSpeed=450; //Скорость затемнения
var hoverTextColor="#fff"; //Цвет текста при наведении мыши
var hoverBackgroundColor="#9dd12e"; //Цвет фона при наведении мыши
var textColor=$nav_li_a.css("color");
var backgroundColor=$nav_li.css("background-color");
//анимация цвета текста
$nav_li_a.hover(function() {
var $this=$(this);
$this.stop().animate({ color: hoverTextColor }, animSpeed);
},function() {
var $this=$(this);
$this.stop().animate({ color: textColor }, animSpeed);
});
//анимация цвета фона
$nav_li.hover(function() {
var $this=$(this);
$this.stop().animate({ backgroundColor: hoverBackgroundColor }, animSpeed);
},function() {
var $this=$(this);
$this.stop().animate({ backgroundColor: backgroundColor }, animSpeed);
});
});
</script>
меню:
<div id="nav">
<ul>
<li class="current"><a href="index.html">Главная</a></li>
<li><a href="products.html">Продукция</a></li>
<li><a href="articles.html">Статьи</a></li>
<li><a href="video.html">Видео</a></li>
<li><a href="patents.html">Патенты</a></li>
<li><a href="results.html">Результаты</a></li>
<li><a href="contacts.html">Контакты</a></li>
</ul>
</div>
Где может быть теперь косяк? Извиняюсь заранее за глупые вопросы, просто с явой не работаю. |
Так в css нету класса current.
|
И как его туда прописать? У меня получается прописать только чтобы цветом выделяло. А хотелось бы чтобы как и при наведении на него чтобы было выделено зелёным цветом и с закруглёнными углами. Этого у меня как то не получилось.
|
Разобрался с закруглёнными углами, теперь не понимаю почему он выделяет только часть кнопки, по середине зелёное (с закруглёнными краями) а с права и с лева всёравно куски синего цвета кнопки. Как это можно поправить? Вот из css:
#header div ul li.current a {
background:#9dd12e;
-moz-border-radius:5px;
-khtml-border-radius:5px;
-webkit-border-radius:5px;
border-radius:5px;
}
В таком виде во всяком случаи добавляет цвет на кнопку активную, но почему не полностью её заполняет (пробывал и длинну регулировать, всёравно без результативно). |
| Часовой пояс GMT +3, время: 19:06. |