javascript - 改变同位素的元素动画
问题描述
解释
我正在尝试从此Isotope的“加载更多”按钮更改动画,但我已经浏览了所有代码,但仍然无法弄清楚如何去做。正如您在下面的第一个 gif 中看到的那样,“新”项目的行为就像它们被堆叠起来,然后转到它们想要的位置。我正在尝试实现第二个 gif 之类的东西,其中项目只是淡入它们的位置。
第一个 gif
第二个 gif
代码
您也可以在这个 JSFiddle中看到它。
// external js: isotope.pkgd.js
$(document).ready(function() {
// init Isotope
var $container = $('.isotope').isotope({
itemSelector: '.element-item',
layoutMode: 'fitRows'
});
// bind filter button click
$('#filters').on('click', 'button', function() {
var filterValue = $(this).attr('data-filter');
$container.isotope({
filter: filterValue
});
});
// change is-checked class on buttons
$('.button-group').each(function(i, buttonGroup) {
var $buttonGroup = $(buttonGroup);
$buttonGroup.on('click', 'button', function() {
$buttonGroup.find('.is-checked').removeClass('is-checked');
$(this).addClass('is-checked');
});
});
//****************************
// Isotope Load more button
//****************************
var initShow = 8; //number of items loaded on init & onclick load more button
var counter = initShow; //counter for load more button
var iso = $container.data('isotope'); // get Isotope instance
loadMore(initShow); //execute function onload
function loadMore(toShow) {
$container.find(".hidden").removeClass("hidden");
var hiddenElems = iso.filteredItems.slice(toShow, iso.filteredItems.length).map(function(item) {
return item.element;
});
$(hiddenElems).addClass('hidden');
$container.isotope('layout');
//when no more to load, hide show more button
if (hiddenElems.length == 0) {
jQuery("#load-more").hide();
} else {
jQuery("#load-more").show();
};
}
//when load more button clicked
$("#load-more").click(function() {
if ($('#filters').data('clicked')) {
//when filter button clicked, set initial value for counter
counter = initShow;
$('#filters').data('clicked', false);
} else {
counter = counter;
};
counter = counter + initShow;
loadMore(counter);
});
//when filter button clicked
$("#filters").click(function() {
$(this).data('clicked', true);
loadMore(initShow);
});
});
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body {
font-family: sans-serif;
}
.hidden {
visibility: hidden;
width: 0px !important;
height: 0px !important;
margin: 0px !important;
padding: 0px !important;
}
/* ---- isotope ---- */
.isotope {
border: 1px solid #333;
}
/* ---- .element-item ---- */
.element-item {
width: 100px;
height: 100px;
margin: 5px;
padding: 10px;
}
.element-item.item-1 {
background: #e03a3e;
}
.element-item.item-2 {
background: #f5821f;
}
.element-item.item-3 {
background: #fdb827;
}
.element-item.item-4 {
background: #61bb46;
}
.element-item.item-5 {
background: #2c73d2;
}
.element-item.item-6 {
background: #933196;
}
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.js"></script>
<h1>Isotope - Load more button</h1>
<div id="filters" class="button-group">
<button class="button is-checked" data-filter="*">show all</button>
<button class="button" data-filter=".item-1">item-1</button>
<button class="button" data-filter=".item-2">item-2</button>
<button class="button" data-filter=".item-3">item-3</button>
<button class="button" data-filter=".item-4">item-4</button>
<button class="button" data-filter=".item-5">item-5</button>
<button class="button" data-filter=".item-6">item-6</button>
</div>
<div class="isotope">
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-1" data-category="item-1">1</div>
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-4" data-category="item-4">4</div>
<div class="element-item item-4" data-category="item-4">4</div>
<div class="element-item item-2" data-category="item-2">2</div>
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-1" data-category="item-1">1</div>
<div class="element-item item-4" data-category="item-4">4</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-4" data-category="item-4">4</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-4" data-category="item-4">4</div>
<div class="element-item item-1" data-category="item-1">1</div>
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-2" data-category="item-2">2</div>
<div class="element-item item-6" data-category="item-6">6</div>
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-2" data-category="item-2">2</div>
<div class="element-item item-6" data-category="item-6">6</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-5" data-category="item-5">5</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-6" data-category="item-6">6</div>
<div class="element-item item-1" data-category="item-1">1</div>
<div class="element-item item-4" data-category="item-4">4</div>
<div class="element-item item-2" data-category="item-2">2</div>
<div class="element-item item-3" data-category="item-3">3</div>
<div class="element-item item-1" data-category="item-1">1</div>
</div>
<button id="load-more">Load more</button>
在此先感谢
路易斯。
解决方案
推荐阅读
- google-cloud-platform - Google Composer - Airflow:我的任务没有安排
- json - FlatList 在获取 json 后接收未定义的值
- azure - Azure 逻辑应用程序的身份问题
- javascript - 编辑 Highcharts Legend 上的点击事件
- winforms - Direct2D 与 GDI+ 渲染目标混合透明为黑色
- command-line - 如何使用命令行将 TFS 代码下载到本地工作区
- java - 如何创建一个文本文件,然后在其中放入一个字符串?
- swift - 如何从屏幕中间开始在文本字段上进行用户输入?
- javascript - Adm-zip 无效或不受支持的 zip 格式。未找到 END 标头
- c# - 取 n 个元素。如果最后从头开始