inner
divの高さを計算し、それを使用してアニメーション化することをお勧めします。
var $tmpInner = inner.clone().appendTo('body');
var divHeight = $tmpInner.outerHeight();
$tmpInner.remove();
以下は、div のコンテンツに基づいて innerDiv の高さを計算します。
また、バナーの css スタイルを に更新して、バナーoverflow:hidden
用に別のアニメーションを作成する必要がないようにしました。
デモ
CSS:
#banner{background:#dedede;overflow: hidden; }
#outer{margin:0 auto;width:200px;}
#middle{height:200px;overflow:hidden}
#inner{width:200px;margin:0 auto;}
.entry{display:none;}
JS:
$(document).ready(function() {
var outer = $('#outer'),
middle = $('#middle'),
inner = $('#inner'),
/*innerH = inner.height(),*/
banner = $('#banner'),
more = $('#more');
var $tmpInner = inner.clone().appendTo('body');
var divHeight = $tmpInner.outerHeight();
$tmpInner.remove();
// animate banner and #middle to reveal additional content
more.on('click', function(e) {
middle.animate({
height: divHeight
}, 300);
/*banner.animate({
height: innerH
}, 300);*/
});
});
注:なぜそんなに多くのラッパー div が必要なのかはわかりませんが、それは HTML の一部になると思います。また、コードのクリーンアップはお任せします。