Применение Fading эффекта к каждой ссылке сайта
Добрый день!Второй день бьюсь,над одной проблемой((( подскажите пожалуйста, как ПРАВИЛЬНЕЙ реализовать следующее:
при наведении на ссылки,в меню, к ним применялся определенный стиль с эффектом Fading() . 1.например, что бы при наведении на ссылку она заворачивалась в html теги. пример. меню до наведения:
.hover_link_menu_1 {
border-width:0px;
background-image:url(../img/2.jpg);
background-repeat:repeat-x;
}
.hover_link_menu_2 {
border-width:0px;
background-image: url(../img/1.jpg);
background-repeat: no-repeat;
padding-left:5px;
}
.hover_link_menu_3 {
border-width:0px;
background-image:url(../img/3.jpg);
background-repeat: no-repeat;
background-position:right;
padding-right:5px;
padding-bottom:4px;
padding-top:2px;
}
</div>
<div class="user_menu">
<ul style=" float:right" id="menu_header">
<li>
<a href="#">РЕГИСТРАЦИЯ</a>
</li>
<li>
<a href="#">ВХОД</a>
</li>
</ul>
</div>
после(навели на "РЕГИСТРАЦИЯ" ):
<div class="user_menu">
<ul style=" float:right" id="menu_header">
<li>
<div class="hover_link_menu_1">
<div class="hover_link_menu_2">
<div class="hover_link_menu_3">
<a href="#">РЕГИСТРАЦИЯ</a>
</div>
</div>
</div>
</li>
<li>
<a href="#">ВХОД</a>
</li>
</ul>
</div>
По идее здесь нужно воспользоваться функцией:
$(this).wrap("<div id='' />");
но как обернуть ссылку в 3 дива ? 2.Ну и главный вопрос, как применить Fading() к ссылке с добавленными дивами? наверно,проще будет применить display none к диву с классом hover_link_menu_1 и следом Fading() ? примерно так:
$(document).ready(function() {
$(".float a").hover(
function(){ //over
$(this).wrap("<div id='' />"); (как-то обварачиваем 3мя дивами)
$(".hover_link_menu_1").css("display","none"); (тушим главный див "предок")
$('.hover_link_menu_1').fadeIn(); (появление кнопки со стилями)
},
function(){ //out
$('.hover_link_menu_1').fadeOut();
$(this).wrap(" "); (убираем дивы);
}
);
});
|
По-моему не очень хорошая идея по hover добавлять html элементы, а потом их удалять.
|
по-моему, лучшей идеей будет применение fading к ссылкам посредством transitions (погуглите, что это. это изменение какого-либо CSS за указанное время. используется в CSS)
... и дальнейшее допиливание этого эффекта для браузеров, которые этот эффект не поддерживают. Но никак не изменение HTML так часто! |
Согласен, изменение html по hover вариант не ОЧ.
можно при открытии страницы обворачивать каждую ссылку в 3 divа без css :
<div >
<div >
<div >
<a href="#">РЕГИСТРАЦИЯ</a>
</div>
</div>
</div>
но потом по hover как-то определять index "ПРЕДКА" div, и к нему прикручивать стиль. так вот, как вытащить index предка дива? ну и все тот же вопрос как обернуть в 3 дива $(this).wrap("что тут писать"); ? |
Цитата:
|
Цитата:
|
Ну все же, как вытащить Index предка дива? и потом по индексу задать ему стиль,как?:help:
|
какого предка дива ? относительно чего предок ?
насчёт второго вопроса - найти все подобные div , по индексу найти необходимый и присвоить ему стили. |
Цитата:
<div >
<div >
<div >
<a href="#">РЕГИСТРАЦИЯ</a>
</div>
</div>
</div>
при наведении на них мне нужно узнать index дива в который она(ссылка на которую навели) вложена! и потом по индексу применить опред стиль ! таким образом я смогу выцепить все 3 дива и привязывать к ним стили) |
$(this).parents('div').parents('div').parents('div);
|
Цитата:
? |
Цитата:
вот
$(document).ready(function() {
$(".float a").wrap('<div />');
$(".float a").wrap('<div />');
$(".float a").wrap('<div />');
$(".float a").hover(
function(){ //over
var index = $(this).parent('div');
alert(+index);
},
function(){ //out
}
);
});
по идее мне, в окне, должен выскочить индекс моего дива(див в который вложена наведенная ссылка )!!!а мне выскакивает NaN (( что не так ? |
Цитата:
|
как получить index diva ???????????????
$(document).ready(function() {
02
$(".float a").wrap('<div />');
03
$(".float a").wrap('<div />');
04
$(".float a").wrap('<div />');
05
$(".float a").hover(
06
function(){ //over
07
var index = $(this).parent('div').parent('div').parent('div');
08
alert(+index);
09
},
10
function(){ //out
11
12
}
13
);
14
});
так не получается (((((((((((( |
Цитата:
|
Цитата:
так вот, именно этот уникальный номер я и хочу получить, далее по нему управлять! |
sosed2,
может ты про .sourceIndex имеешь ввиду??
var index = $(this).parent('div')[0].sourceIndex;
|
но тебе нужно делать так:
$(this).parent('div').addClass('hover_link_menu_3').parent('div').addClass('hover_link_menu_2').parent('div').addClass('hover_link_menu_1');
|
ну а когда мышь убираешь, то так:
$(this).parent('div').removeClass('hover_link_menu_3').parent('div').removeClass('hover_link_menu_2').parent('div').removeClass('hover_link_menu_1');
|
а вообще лучше делать так:
<style type="text/css">
.hover_link_menu_1 {
border: 1px solid #f00;
}
.hover_link_menu_1 div {
border: 1px solid #0f0;
}
.hover_link_menu_1 div div {
border: 1px solid #00f;
}
</style>
<div>
<div>
<div>
<a class="mylink" href="/">my link</a>
</div>
</div>
</div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(".mylink").hover(function(){
$(this).parent().parent().parent().addClass('hover_link_menu_1');
}, function(){
$(this).parent().parent().parent().removeClass('hover_link_menu_1');
})
</script>
|
удобнее вместо parent().parent().parent() использовать parents()
<style type="text/css">
.hover_link_menu_1 {
border: 1px solid #f00;
}
.hover_link_menu_1 div {
border: 1px solid #0f0;
}
.hover_link_menu_1 div div {
border: 1px solid #00f;
}
</style>
<div>
<div>
<div>
<a class="mylink" href="/">my link</a>
</div>
</div>
</div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(".mylink").hover(function(){
$(this).parents(':eq(2)').addClass('hover_link_menu_1');
}, function(){
$(this).parents(':eq(2)').removeClass('hover_link_menu_1');
})
</script>
|
Огромное всем спасибо,с вопросом выборки дива разобрался но я опять застрял с одной проблемой!
после применения fadeIn() к диву дописывается style="display: block":
13
<div class="" style="display: block">
14
<div>
15
<div>
16
<a class="mylink" href="/">my link</a>
17
</div>
18
</div>
19
</div>
как убрать стиль?? он перекрывает мой класс добавленный с помощью addClass('hover_link_menu_1') ((((((((((( |
.removeAttr('style');
|
не одно так другое!у меня снова косяк(
меню при наведении на которое происходит изменение стилей с эффектом FadeIn() я реализовал, но не все так гладко (
.hover_link_menu_1 {
display:none;
color:#FFF;
border-width:0px;
background-image:url(../img/2.jpg);
background-repeat:repeat-x;
}
.hover_link_menu_2 {
border-width:0px;
background-image: url(../img/1.jpg);
background-repeat: no-repeat;
padding-left:5px;
}
.hover_link_menu_3 {
border-width:0px;
background-image:url(../img/3.jpg);
background-repeat: no-repeat;
background-position:right;
padding-right:5px;
padding-bottom:4px;
padding-top:2px;
}
$(document).ready(function() {
$(".color_menu a").wrap('<div />');
$(".color_menu a").wrap('<div />');
$(".color_menu a").wrap('<div />');
$(".color_menu a").hover(
function(){ //over
// var index = $(this).parent('div').parent('div').parent('div');
// alert(+index);
$(this).parents(':eq(2)').addClass('hover_link_menu_1');
$(this).parents(':eq(1)').addClass('hover_link_menu_2');
$(this).parents(':eq(0)').addClass('hover_link_menu_3');
$(this).parents(':eq(2)').fadeIn();
//$(this).parents(':eq(2)').removeAttr('style');
},
function(){ //out
$(this).parents(':eq(2)').removeClass('hover_link_menu_1').removeAttr('style');
$(this).parents(':eq(1)').removeClass('hover_link_menu_2');
$(this).parents(':eq(0)').removeClass('hover_link_menu_3');
}
);
});
дело в том что,что бы происходил эффект fadein мне необходимо сначала применить к родителю "див" стиль display:none, а уж потом применять fadein,вот тут собака и зарыта!!!!Так как у меня меню построена на основе списков, то при применении стиля display:none меню начинает скакать "дрожать" и если повезет срабатывает, запланированный, fadein ((( посоветуйте, как быть? у меня есть решение,но я не знаю как его реализовать и не уверен возможно ли так сделать.Если обернуть все это(три дива и ссылка) еще в один див и применить к нему стиль с фиксированной шириной и высотой текста ссылки,то мы избавимся от этого глюка! так вот,реально ли узнать width и height ссылки?и как? |
var p = $(this).parents(':eq(2)');
p.css({width: p.width() + "px", height: p.height() + "px"}).hide().fadeIn();
|
| Часовой пояс GMT +3, время: 21:06. |