sbbs/themes/hueman/source/js/main.js
2018-09-03 17:41:16 +10:00

137 lines
4.7 KiB
JavaScript

(function ($) {
// To top button
$("#back-to-top").on('click', function () {
$('body, html').animate({ scrollTop: 0 }, 600);
});
// Nav bar toggle
$('#main-nav-toggle').on('click', function () {
$('.nav-container-inner').slideToggle();
});
// Caption
$('.article-entry').each(function(i) {
$(this).find('img').each(function() {
if (this.alt && !(!!$.prototype.justifiedGallery && $(this).parent('.justified-gallery').length)) {
$(this).after('<span class="caption">' + this.alt + '</span>');
}
// 对于已经包含在链接内的图片不适用lightGallery
if ($(this).parent().prop("tagName") !== 'A') {
$(this).wrap('<a href="' + this.src + '" title="' + this.alt + '" class="gallery-item"></a>');
}
});
});
if (typeof lightGallery != 'undefined') {
var options = {
selector: '.gallery-item',
};
$('.article-entry').each(function(i, entry) {
lightGallery(entry, options);
});
lightGallery($('.article-gallery')[0], options);
}
if (!!$.prototype.justifiedGallery) { // if justifiedGallery method is defined
var options = {
rowHeight: 140,
margins: 4,
lastRow: 'justify'
};
$('.justified-gallery').justifiedGallery(options);
}
// Sidebar expend
$('#sidebar .sidebar-toggle').on('click', function () {
if($('#sidebar').hasClass('expend')) {
$('#sidebar').removeClass('expend');
} else {
$('#sidebar').addClass('expend');
}
});
// Remove extra main nav wrap
$('.main-nav-list > li').unwrap();
// Highlight current nav item
$('#main-nav > li > .main-nav-list-link').each(function () {
if($('.page-title-link').length > 0){
if ($(this).html().toUpperCase() == $('.page-title-link').html().toUpperCase()) {
$(this).addClass('current');
} else if ($(this).attr('href') == $('.page-title-link').attr('data-url')) {
$(this).addClass('current');
}
}
});
// Auto hide main nav menus
function autoHideMenus(){
var max_width = $('.nav-container-inner').width() - 10;
var main_nav_width = $('#main-nav').width();
var sub_nav_width = $('#sub-nav').width();
if (main_nav_width + sub_nav_width > max_width) {
// If more link not exists
if ($('.main-nav-more').length == 0) {
$(['<li class="main-nav-list-item top-level-menu main-nav-more">',
'<a class="main-nav-list-link" href="javascript:;">More</a>',
'<ul class="main-nav-list-child">',
'</ul></li>'].join('')).appendTo($('#main-nav'));
// Bind hover event
$('.main-nav-more').hover(function () {
if($(window).width() < 480) {
return;
}
$(this).children('.main-nav-list-child').slideDown('fast');
}, function () {
if($(window).width() < 480) {
return;
}
$(this).children('.main-nav-list-child').slideUp('fast');
});
}
var child_count = $('#main-nav').children().length;
for (var i = child_count - 2; i >= 0; i--) {
var element = $('#main-nav').children().eq(i);
if (main_nav_width + sub_nav_width > max_width) {
element.prependTo($('.main-nav-more > ul'));
main_nav_width = $('#main-nav').width();
} else {
return;
}
}
}
// Nav bar is wide enough
if ($('.main-nav-more').length > 0) {
$('.main-nav-more > ul').children().appendTo($('#main-nav'));
$('.main-nav-more').remove();
}
}
autoHideMenus();
$(window).on('resize', function () {
autoHideMenus();
});
// Fold second-level menu
$('.main-nav-list-item').hover(function () {
if ($(window).width() < 480) {
return;
}
$(this).children('.main-nav-list-child').slideDown('fast');
}, function () {
if ($(window).width() < 480) {
return;
}
$(this).children('.main-nav-list-child').slideUp('fast');
});
// Add second-level menu mark
$('.main-nav-list-item').each(function () {
if ($(this).find('.main-nav-list-child').length > 0) {
$(this).addClass('top-level-menu');
}
});
})(jQuery);