06.11.2010, 20:39
|
Интересующийся
|
|
Регистрация: 06.11.2010
Сообщений: 24
|
|
вопрос по jQuery
такой вот вопрос - нужно чтобы при наведении курсора на элемент Х элемент У медленно появлялся как бы из под элемента Х, а при отведении элемент У должен медленно растворяться. При использовании этого кода
$(".x").mouseover(function(){
$(".y").slideDown("slow");
});
$(".x").mouseout(function(){
$('.y').fadeOut('5000');
});
элемент У появляется откуда-то сбоку и по несколько раз, даже если курсор не на Х. подскажите, как с этим бороться.
Изображения:
|
XY.jpg (30.5 Кб, 3 просмотров) |
Последний раз редактировалось dianitka, 06.11.2010 в 20:41.
Причина: добавление изо
|
|
06.11.2010, 20:42
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
внимательнее выбирайте раздел при создании тем.
перенес
|
|
06.11.2010, 21:20
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Как вариант:
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<div id="slide">
<div class="div1"></div>
<div class="div2"></div>
</div>
<style type="text/css">
#slide {overflow: hidden;width: 100px;height: 100px;}
#slide div {width: 100px;height: 100px;}
.div1 {background: red;}
.div2 {background: green;display: none;}
</style>
<script type="text/javascript">
$(function(){
$('#slide div').click(function(){
$(this).slideToggle().fadeTo('fast', 0.1).siblings('div').slideToggle().fadeTo('fast', 1);
});
});
</script>
|
|
06.11.2010, 21:42
|
Интересующийся
|
|
Регистрация: 06.11.2010
Сообщений: 24
|
|
спасибо за ответ, но я имела в виду не совсем этой результат.
элемент Х должен оставаться на месте, тех же размеров, появляется и растворяется только элемент У.
|
|
07.11.2010, 11:11
|
Профессор
|
|
Регистрация: 21.01.2010
Сообщений: 1,022
|
|
<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.3.min.js'>
</script>
</head>
<body>
<div style='z-index: 1; background: #555555; width: 100px; height: 50px; position: absolute; top: 50px' id='large'>
</div>
<div style='display: none; background: orange; width: 70px; height: 30px; position: absolute; left: 22px; top: 40px' id='small'>
</div>
<script type='text/javascript'>
$("#large").one("click", function () {
var callee = arguments.callee, t = $(this);
if (this.clicked = !this.clicked)
$("#small").show().animate({
top: "20px"
}, 300, function () {
t.one("click", callee);
});
else
$("#small").fadeOut("normal", function () {
t.one("click", callee);
$(this).css("top", "50px");
});
});
</script>
</body>
</html>
|
|
07.11.2010, 14:18
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
А вот оно что
Тогда мне кажется проще так:
<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.3.min.js'>
</script>
</head>
<body>
<div id='block'>
<div id='large'></div>
<div id='small'></div>
</div>
<style type="text/css">
#block, #large, #small {position: absolute;}
#block {overflow: hidden; width: 100px; height: 100px;}
#large {background: #555555; top: 50px; width: 100px; height: 50px; z-index: 1;}
#small {background: orange; display: none; top: 80px; left: 15px; width: 70px; height: 30px;}
</style>
<script type='text/javascript'>
$("#large").toggle(
function(){
$("#small").show().animate({
opacity: 1,
top: "-=60px"
}, 500);
},
function(){
$("#small").animate({
opacity: -5,
top: "+=60px"
}, 500);
}
);
</script>
</body>
</html>
Последний раз редактировалось monolithed, 07.11.2010 в 14:25.
|
|
07.11.2010, 16:39
|
Профессор
|
|
Регистрация: 21.01.2010
Сообщений: 1,022
|
|
monolithed, если быстро кликнуть на блок больше одного раза, то будет не совсем приятный эффект.
|
|
08.11.2010, 00:49
|
Интересующийся
|
|
Регистрация: 06.11.2010
Сообщений: 24
|
|
спасибо за ответы. мне больше всего подходит вариант
$(".x").hover(
function() {$(".y").slideDown(5000)}
,
function() {$('.y').fadeOut(5000) }
);
(ведь нужно чтобы появление и растворение происходило не при клике а при наведении на элемент Х) но при таком коде У появляется слева а мне нужно снизу, как у вас.
попробовала
$(".x").hover(
function() {$(".y").show().animate({top: "20px"}, 300)}
,
function() {$('.y').fadeOut(5000) }
);
однако при этом У появляется слишком быстро
|
|
|
|