Не знает, подходит ли вам это: http://jsfiddle.net/yCY9y/3/
DOM:
<div id="wrapper">
<div id="left" class="content_left">LEFT</div><div id="right" class="content_right">RIGHT</div>
</div>
Я использую обертку, чтобы быть уверенным, что мы никогда не нарушим ПРАВО на следующую строку.
CSS:
#wrapper {
width:100%;
overflow:hidden;
white-space:nowrap;
}
#left, #right {
display:inline-block;
width: 50%;
}
#left {
background:red;
}
#right {
background:yellow;
}
Я использую на #wrapper
white-space:nowrap; // Newer break whitespaces (break to the next line)
и
width:100%;
На #left, #right
мы используем:
display:inline-block;
Ведьма сначала совместима с> IE6. (надеется, что это не проблема).
JS:
$("#left, #right").each(function() {
$(this).data("standardWidth", $(this).width());
});
$("#left, #right").hover(function() {
$(this).animate({
width: "70%"
}, 300 );
$(this).parent().children().not(this).animate({
width: "30%"
}, 300 );
}, function() {
$(this).parent().children().each(function() {
$(this).animate({
width: $(this).data("standardWidth")
}, 300 );
});
});
Сначала я связал одно и то же событие mouseover
и mouseout
на #right
и #left
$(selector).hover(mouseOverHandler, mouseOutHandler);
...
$(this).parent().children().not(this)
Мы берем элемент, который вызывает событие throw, и обнаруживают все его родители (#wrapper
) childNodes: $(this).parent().children()
Теперь мы отфильтровываем все, что соответствует this
, с помощью метода not
jQuery. (this
= #left
ИЛИ #right
) ведьма - это элемент. Теперь у нас есть #right -> #left
и #left -> #right
.
mouseOutHandler
сбрасывает всю ширину #wrapper
childNodes на 50%
Надеюсь, что это приведет вас на правильный путь ...
EDIT:
Если срок действия анимации истекает для использования в цепочке / очереди, можно использовать метод stop
, который останавливает все активные анимации и очищает очередь:
$(selector).stop().animate({
....
})