hexo-theme-amane/source/js/main.js

120 lines
3.8 KiB
JavaScript
Raw Normal View History

2016-02-02 16:19:44 +00:00
(function($){
2016-02-08 12:20:35 +00:00
// Caption
$('.article-entry').each(function(i) {
2017-11-20 16:25:19 +00:00
$(this).find('img').filter(function (element) {
return $(this).hasClass('');
}).each(function() {
// add image caption
2016-10-20 13:54:40 +00:00
if (this.alt && !(!!$.prototype.justifiedGallery && $(this).parent('.justified-gallery').length)) {
$(this).after('<span class="caption">' + this.alt + '</span>');
2016-02-08 12:20:35 +00:00
}
if ($(this).parent().prop("tagName") !== 'A') {
$(this).wrap('<a href="' + ($(this).attr("data-imgbig") ? $(this).attr("data-imgbig") : this.src) + '" title="' + this.alt + '" class="gallery-item"></a>');
}
2016-02-08 12:20:35 +00:00
});
2016-02-02 16:19:44 +00:00
});
2017-03-11 11:59:51 +00:00
if (typeof lightGallery != 'undefined') {
var options = {
selector: '.gallery-item'
};
$('.article-entry').each(function(i, entry) {
lightGallery(entry, options);
});
lightGallery($('.article-gallery')[0], options);
2016-02-08 12:20:35 +00:00
}
if (!!$.prototype.justifiedGallery) { // if justifiedGallery method is defined
var options = {
rowHeight: 140,
margins: 4,
lastRow: 'justify'
};
$('.justified-gallery').justifiedGallery(options);
}
2016-02-02 16:19:44 +00:00
2016-02-08 12:20:35 +00:00
// Profile card
2018-04-28 19:13:05 +00:00
var profileElem = $('#profile');
2016-02-08 12:20:35 +00:00
$(document).on('click', function () {
2018-04-28 19:13:05 +00:00
profileElem.removeClass('card');
2016-02-08 12:20:35 +00:00
}).on('click', '#profile-anchor', function (e) {
e.stopPropagation();
2018-04-28 19:13:05 +00:00
profileElem.toggleClass('card');
2016-02-08 12:20:35 +00:00
}).on('click', '.profile-inner', function (e) {
e.stopPropagation();
2016-02-02 16:19:44 +00:00
});
2018-04-28 19:13:05 +00:00
// To Top & Fixed Profile
var sidebarElem = $('#sidebar'),
toTopElem = $('#toTop');
if (sidebarElem.length) {
checkDisplayToTop();
checkFixedProfile();
$(document).on('scroll', function () {
2018-04-28 19:13:05 +00:00
checkDisplayToTop();
checkFixedProfile();
});
toTopElem.click(function () {
$('body, html').animate({ scrollTop: 0 }, 600);
});
}
2016-02-02 16:19:44 +00:00
2018-04-28 19:13:05 +00:00
var isToTopDisplayed = false;
function checkDisplayToTop() {
var toTop = (sidebarElem.height() - $(window).height()) + 60;
var currentScrollTop = $(document).scrollTop();
var needDisplay = (currentScrollTop > toTop) && (currentScrollTop > 0);
if ($(document).width() >= 800) {
if (needDisplay) {
if (isToTopDisplayed) return;
toTopElem.fadeIn();
toTopElem.css('left', sidebarElem.offset().left);
isToTopDisplayed = true;
} else {
if (!isToTopDisplayed) return;
toTopElem.fadeOut();
isToTopDisplayed = false;
}
} else {
toTopElem.show();
toTopElem.css('right', 20);
}
}
var isFixedProfile = false;
function checkFixedProfile() {
if (!profileElem.is('.profile-fixed')) return;
if ($(document).width() < 800) return;
var currentScrollTop = $(document).scrollTop();
var profileInnerElem = $('#profile .profile-inner');
var needFixed = currentScrollTop >= profileElem.offset().top + profileElem.outerHeight(true);
if (needFixed) {
if (isFixedProfile) return;
profileInnerElem.css('position', 'fixed')
.css('width', profileElem.innerWidth() + 'px')
.css('top', '0');
// css animation fade-in
profileInnerElem.css('animation', '');
profileInnerElem.addClass('anim-fade-in');
isFixedProfile = true;
} else {
if (!isFixedProfile) return;
profileInnerElem.css('position', '')
.css('width', '')
.css('top', '');
profileInnerElem.css('animation', 'none');
isFixedProfile = false;
}
}
})(jQuery);