🏗️ First time sync the css & js files from hexo theme NexT
This commit is contained in:
125
assets/js/motion.js
Normal file
125
assets/js/motion.js
Normal file
@@ -0,0 +1,125 @@
|
||||
/* global NexT, CONFIG */
|
||||
|
||||
NexT.motion = {};
|
||||
|
||||
NexT.motion.integrator = {
|
||||
queue: [],
|
||||
init : function() {
|
||||
this.queue = [];
|
||||
return this;
|
||||
},
|
||||
add: function(fn) {
|
||||
const sequence = fn();
|
||||
if (CONFIG.motion.async) this.queue.push(sequence);
|
||||
else this.queue = this.queue.concat(sequence);
|
||||
return this;
|
||||
},
|
||||
bootstrap: function() {
|
||||
if (!CONFIG.motion.async) this.queue = [this.queue];
|
||||
this.queue.forEach(sequence => {
|
||||
const timeline = window.anime.timeline({
|
||||
duration: 200,
|
||||
easing : 'linear'
|
||||
});
|
||||
sequence.forEach(item => {
|
||||
if (item.deltaT) timeline.add(item, item.deltaT);
|
||||
else timeline.add(item);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
NexT.motion.middleWares = {
|
||||
header: function() {
|
||||
const sequence = [];
|
||||
|
||||
function getMistLineSettings(targets) {
|
||||
sequence.push({
|
||||
targets,
|
||||
scaleX : [0, 1],
|
||||
duration: 500,
|
||||
deltaT : '-=200'
|
||||
});
|
||||
}
|
||||
|
||||
function pushToSequence(targets, sequenceQueue = false) {
|
||||
sequence.push({
|
||||
targets,
|
||||
opacity: 1,
|
||||
top : 0,
|
||||
deltaT : sequenceQueue ? '-=200' : '-=0'
|
||||
});
|
||||
}
|
||||
|
||||
pushToSequence('header.header');
|
||||
CONFIG.scheme === 'Mist' && getMistLineSettings('.logo-line');
|
||||
CONFIG.scheme === 'Muse' && pushToSequence('.custom-logo-image');
|
||||
pushToSequence('.site-title');
|
||||
pushToSequence('.site-brand-container .toggle', true);
|
||||
pushToSequence('.site-subtitle');
|
||||
(CONFIG.scheme === 'Pisces' || CONFIG.scheme === 'Gemini') && pushToSequence('.custom-logo-image');
|
||||
|
||||
document.querySelectorAll('.menu-item').forEach(targets => {
|
||||
sequence.push({
|
||||
targets,
|
||||
complete: () => targets.classList.add('animated', 'fadeInDown'),
|
||||
deltaT : '-=200'
|
||||
});
|
||||
});
|
||||
|
||||
return sequence;
|
||||
},
|
||||
|
||||
subMenu: function() {
|
||||
const subMenuItem = document.querySelectorAll('.sub-menu .menu-item');
|
||||
if (subMenuItem.length > 0) {
|
||||
subMenuItem.forEach(element => {
|
||||
element.classList.add('animated');
|
||||
});
|
||||
}
|
||||
return [];
|
||||
},
|
||||
|
||||
postList: function() {
|
||||
const sequence = [];
|
||||
const { post_block, post_header, post_body, coll_header } = CONFIG.motion.transition;
|
||||
|
||||
function animate(animation, selector) {
|
||||
if (!animation) return;
|
||||
document.querySelectorAll(selector).forEach(targets => {
|
||||
sequence.push({
|
||||
targets,
|
||||
complete: () => targets.classList.add('animated', animation),
|
||||
deltaT : '-=100'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
animate(post_block, '.post-block, .pagination, .comments');
|
||||
animate(coll_header, '.collection-header');
|
||||
animate(post_header, '.post-header');
|
||||
animate(post_body, '.post-body');
|
||||
|
||||
return sequence;
|
||||
},
|
||||
|
||||
sidebar: function() {
|
||||
const sidebar = document.querySelector('.sidebar');
|
||||
const sidebarTransition = CONFIG.motion.transition.sidebar;
|
||||
// Only for Pisces | Gemini.
|
||||
if (sidebarTransition && (CONFIG.scheme === 'Pisces' || CONFIG.scheme === 'Gemini')) {
|
||||
return [{
|
||||
targets : sidebar,
|
||||
complete: () => sidebar.classList.add('animated', sidebarTransition)
|
||||
}];
|
||||
}
|
||||
return [];
|
||||
},
|
||||
|
||||
footer: function() {
|
||||
return [{
|
||||
targets: document.querySelector('.footer'),
|
||||
opacity: 1
|
||||
}];
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user