РЕДАКТИРОВАТЬ: пришлось уйти быстро, так что не до конца, я решил использовать jquery UI для примера (вам нужно ядро):
<html><head>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
<style>
#line_three { width:100%; }
.line3_top {
position:absolute;
top:113px;
left:0px;
}
.line3_btm {
position:absolute;
bottom:100px;
left:0px;
}
</style>
<script type="text/javascript">
var topbtm = true;
$(document).ready(function(){
$("#line_three").mouseenter(function(){
if ( topbtm ) {
$("#line_three").switchClass("line3_top","line3_btm",400);
} else {
$("#line_three").switchClass("line3_btm","line3_top",400);
}
topbtm = !topbtm;
});
});
</script>
</head><body>
<div id="line_three" class="line3_top">
hello;
</div>
</body></html>
http://jsfiddle.net/syVzK/1/ (изменен тумблер для предотвращения чрезмерной анимации)
Мне нравятся и другие предложения.
EDIT2: только что протестировано в IE ... это работает странно. Возможно, придется поступить прямо из-за странного поведения в IE с классом переключателей пользовательского интерфейса Jquery.
EDIT3
Хорошо, у меня это работает для IE и FF ... Хотя некоторые замечания. +20 не дает ему прыгать. Тест для innerHeight, равный 0, выполняется в том случае, если высота не установлена для элемента (или тела), поэтому, если он находится в элементе div, который расположен, то установите высоту.
Кроме того, этот не работал в jsfiddle , но работал на обычной веб-странице. Избегайте, jsfiddle для этого.
<script type="text/javascript">
var topbtm = 1,top3=113,btm3=100;
$(document).ready(function(){
$("#line_three").mouseenter(function(){
var ih = $(this).offsetParent().innerHeight();
if (ih==0){ih=$(document).innerHeight();}
if ( topbtm==1 ) {
topbtm=-1;
$("#line_three")
.animate({"top":(ih-(btm3+20))}
,500
,function(){
$(this).css({"top":"auto","bottom":btm3});
})
topbtm=0;
} else if ( topbtm==0 ) {
topbtm=-1;
$("#line_three")
.animate({"bottom":(ih-(top3+20))}
,500
,function(){
$(this).css({"bottom":"auto","top":top3});
})
topbtm=1;
}
});
});
</script>