2011-10-19 13 views
2

JavaScriptでDivの高さをアニメーション化するためのJqueryの代替手段はありますか? Jqueryは素晴らしく、比較的小さいですが、この1つの機能のためだけにjquery全体をロードしたくありません。これはWebアプリケーション(Webアプリケーションではない)のためのものだと考えて、読み込み時間をできるだけ小さく保つ必要があります。divの高さをアニメーション化するための軽量なJavascript?

おかげ

+0

あなたが探しているものをアニメーション? –

+0

高さを0〜100ピクセル、またはその逆に指定された時間内にアニメートします。 – levi

+0

注記として、[Zepto.js](http://zeptojs.com/)は、Webkit携帯電話でターゲットとされたjQueryの軽量代替品です。しかし、アニメーションには '-webkit-transition'が使用されていますので、スクリプト化された解決策が必要な場合はそれほど役に立ちません。 –

答えて

3
function animateHeight(obj, height){ 

    var obj_height = obj.clientHeight; 

    if(obj_height <= height){ return; } 
    else { 
     obj.style.height = (obj_height - 5) + "px"; 
     setTimeout(function(){ 
      animateHeight(obj, height); 
     }, 500) 
    } 
} 

ニースフィドル:あなたはCSSでの仕事の大半を行うことができるようにhttp://jsfiddle.net/maniator/Z6cbq/

2

WebOSとは、携帯電話のWebKitを使用しています。

#someElement { 
    -webkit-transition: height 100ms linear; 
    height: 0; 
} 

は、その後、あなたのJavaScriptは本当に簡単です:

document.querySelector('#someElement').style.height = '100px' 
// - or - 
document.querySelector('#someElement').className += ' open'; 
// where #someElement.open has a defined height. 
ここ

は、いくつかの詳細です:http://pre101.com/blog/2009/11/10/a-guide-to-css-transitions-in-webos/

+0

私はCSSアニメーションを使用していますが、JSはCSSアニメーションよりもTouchpad上でスムーズに動きます。 – levi

+0

これは奇妙な、タッチパッドではなく、タッチパッドエミュレータですか? CSSのアニメーションは常に滑らかでなければなりません。あなたは流れがたくさん計算されなければならないものをやっていますか?たぶんあなたは '-webkit-transform:scaleY(...)'を試みるかもしれません –

+0

興味深い。それを使用するための構文は何ですか? (デフォルトではdivが0pxの高さであると仮定します) – levi

関連する問題