テキスト div の基本的なグリッドである jQuery で単純な css とクラスの変更があり、すべての高さが 470 ピクセルで、オーバーフローが非表示に設定されています。その中に含まれるすべてのテキストを表示し、単純な Math.floor 関数を使用して常にグリッドの下部に配置します。問題は、クラスと css の変更が突然で、少しぎこちなく見えることです。
ここに jsFiddle のデモがあります: http://jsfiddle.net/neal_fletcher/fJcjE/
jQuery:
$(document).ready(function () {
var $container = $('#main-grid');
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: '.grid-block, .grid-block-long',
animationEngine: 'best-available',
masonry: {
columnWidth: 5
}
});
});
$('.grid-block-text p').hide().filter(":first-child").show();
$('.read-more').click(function () {
var $this = $(this),
$parent = $this.parent('.grid-block');
$this.hide();
$this.nextAll('.grid-block-text')
.children('p').fadeIn('slow');
$this.siblings('.read-less').fadeIn('slow');
$parent.css('height','auto');
var newHeight = $parent.height();
newHeight = (Math.floor((newHeight+29)/330)+1)*330-29;
$parent
.css('height',newHeight)
.removeClass('grid-block')
.addClass('grid-block-long');
//$('#main-grid').isotope('reLayout');
$container.isotope('reLayout');
});
$('.read-less').click(function () {
var $this = $(this);
$this.hide();
$this.nextAll('.grid-block-text')
.children("p:not(:first-child)").fadeOut('fast');
$this.siblings('.read-more').fadeIn('slow');
$this.parent('.grid-block-long')
.css('height',300)
.removeClass('grid-block-long')
.addClass('grid-block');
$('#main-grid').isotope('reLayout');
$container.isotope();
});
});
[続きを読む] をクリックすると、css とクラスの変更により div が下方に拡張されます。div の下部は常に周囲の div に揃えられるため、グリッドは一貫しています。唯一の問題は、クリックするとすぐに変化することです。div がうまくフェードインするか、スムーズに下に伸びるかを探しています。実際にアニメーション化するだけなので、変化はそれほど突然ではありません。これが可能かどうかさえわかりませんか?どんな提案でも大歓迎です!