【发布时间】:2013-06-29 18:30:14
【问题描述】:
我正在使用 jQuery isotope 插件来进行新闻部分的网格布局,每个新闻项显示每个新闻的第一段,并带有一个 read more 按钮,单击后会显示其余内容。
这是我的示例,我将解释我遇到的问题:
jsFiddle:http://jsfiddle.net/neal_fletcher/gXukc/4/
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
}
});
});
});
$(document).ready(function () {
$('.grid-block-text p').hide().filter(":first-child").show();
});
$(document).ready(function () {
$('.read-more').click(function () {
$(this).hide();
$(this).nextAll('.grid-block-text')
.children('p').fadeIn('slow');
$(this).siblings('.read-less').fadeIn('slow');
$(this).parent('.grid-block')
.removeClass('grid-block')
.addClass('grid-block-long');
$('#main-grid').isotope('reLayout');
$container.isotope();
});
$('.read-less').click(function () {
$(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')
.removeClass('grid-block-long')
.addClass('grid-block');
$('#main-grid').isotope('reLayout');
$container.isotope();
});
});
正如您在所示示例中看到的,单击read more 按钮会加载其余的文本内容并切换 div 的类以适应文本。我这样做的原因是我总是希望 div 的高度适合网格,即在示例中,较长 div 的长度等于 2 个较短 div,因此总是排成一行。
但由于这将是一个新闻部分,我无法否定其中会有多少文本,所以我试图弄清楚这是否可以动态完成。
例如grid-block 高度为 300px,如果文字内容超过 300px,则会切换到 630px 以此类推。
任何建议将不胜感激!
【问题讨论】:
标签: jquery html css jquery-isotope