1.0版本
This commit is contained in:
249
js/global.js
Normal file
249
js/global.js
Normal file
@@ -0,0 +1,249 @@
|
||||
// ======================================================================= Namespace
|
||||
var TEST = TEST || {},
|
||||
$ = jQuery;
|
||||
|
||||
|
||||
// ======================================================================= Global variables
|
||||
var doc = $( document ),
|
||||
win = $( window ),
|
||||
winHeight = win.height(),
|
||||
winWidth = win.width();
|
||||
|
||||
var viewport = {};
|
||||
viewport.top = $( window ).scrollTop();
|
||||
viewport.bottom = viewport.top + $( window ).height();
|
||||
|
||||
|
||||
// ======================================================================= Mobile Menu
|
||||
TEST.mobileMenu = {
|
||||
|
||||
init: function(){
|
||||
|
||||
// Toggle navigation
|
||||
$( '.nav-toggle' ).on( 'click', function(){
|
||||
$( this ).toggleClass( 'active' );
|
||||
$( '.mobile-menu-wrapper' ).slideToggle().toggleClass( 'visible' );
|
||||
$( 'body' ).toggleClass( 'mobile-menu-visible lock-scroll' );
|
||||
$( '.mobile-search, .toggle-mobile-search' ).removeClass( 'active' );
|
||||
} );
|
||||
|
||||
// Hide navigation on resize
|
||||
$( window ).on( 'resize', function(){
|
||||
var winWidth = $( window ).width();
|
||||
if ( winWidth > 1000 ) {
|
||||
$( 'body' ).removeClass( 'mobile-menu-visible lock-scroll' );
|
||||
$( '.mobile-menu-wrapper' ).hide().removeClass( 'visible' );
|
||||
$( '.nav-toggle' ).removeClass( 'active' );
|
||||
$( '.mobile-search' ).removeClass( 'active hide' );
|
||||
|
||||
// Empty the mobile search results
|
||||
TEST.ajaxSearch.emptyResults();
|
||||
}
|
||||
} );
|
||||
|
||||
},
|
||||
|
||||
} // TEST.mobileMenu
|
||||
|
||||
console.log("%c主题移植者:", "color: #4CAF50; font-weight: bold; font-size: 18px;");
|
||||
console.log("%c林海草原 https://lhcy.org", "color: #2196F3; font-size: 16px;");
|
||||
console.log("%c林海爱折腾 https://blog.lhcy.org", "color: #2196F3; font-size: 16px;");
|
||||
|
||||
// ======================================================================= Search Toggle
|
||||
TEST.searchToggle = {
|
||||
|
||||
init: function(){
|
||||
|
||||
// Toggle desktop search
|
||||
$( 'a[href$="?s="]' ).on( 'click', function(){
|
||||
$( this ).toggleClass( 'active' );
|
||||
$( '.search-overlay' ).toggleClass( 'active' );
|
||||
if ( $( this ).hasClass( 'active' ) ) {
|
||||
$( '.search-overlay .search-field' ).focus();
|
||||
} else {
|
||||
$( '.search-overlay .search-field' ).blur();
|
||||
}
|
||||
return false;
|
||||
} );
|
||||
|
||||
// Untoggle on click outside of form
|
||||
$( '.search-overlay' ).click( function( e ){
|
||||
console.log( 'log' );
|
||||
if ( e.target != this ) return; // only continue if the target itself has been clicked
|
||||
$( '.search-overlay .search-field' ).blur();
|
||||
$( '.search-overlay' ).removeClass( 'active' );
|
||||
$( '.social-menu.desktop a[href$="?s="]' ).removeClass( 'active' );
|
||||
} );
|
||||
|
||||
// Toggle mobile search
|
||||
$( '.toggle-mobile-search' ).on( 'click', function(){
|
||||
$( '.mobile-search' ).removeClass( 'hide' );
|
||||
$( '.toggle-mobile-search, .mobile-search' ).toggleClass( 'active' );
|
||||
$( '.mobile-search .search-field' ).focus();
|
||||
return false;
|
||||
} );
|
||||
|
||||
// Untoggle mobile search
|
||||
$( '.untoggle-mobile-search' ).on( 'click', function(){
|
||||
$( '.mobile-search' ).addClass( 'hide' );
|
||||
$( '.mobile-search, .toggle-mobile-search' ).removeClass( 'active' )
|
||||
$( '.mobile-search .search-field' ).blur();
|
||||
|
||||
// Empty the results
|
||||
TEST.ajaxSearch.emptyResults();
|
||||
return false;
|
||||
} );
|
||||
|
||||
},
|
||||
|
||||
} // TEST.searchToggle
|
||||
|
||||
|
||||
|
||||
// ======================================================================= Resize videos
|
||||
TEST.intrinsicRatioEmbeds = {
|
||||
|
||||
init: function(){
|
||||
|
||||
// Resize videos after their container
|
||||
var vidSelector = ".post iframe, .post object, .post video, .widget-content iframe, .widget-content object, .widget-content iframe";
|
||||
var resizeVideo = function( sSel ) {
|
||||
$( sSel ).each( function() {
|
||||
var $video = $( this ),
|
||||
$container = $video.parent(),
|
||||
iTargetWidth = $container.width();
|
||||
|
||||
if ( ! $video.attr( "data-origwidth" ) ) {
|
||||
$video.attr( "data-origwidth", $video.attr( "width" ) );
|
||||
$video.attr( "data-origheight", $video.attr( "height" ) );
|
||||
}
|
||||
|
||||
var ratio = iTargetWidth / $video.attr( "data-origwidth" );
|
||||
|
||||
$video.css( "width", iTargetWidth + "px" );
|
||||
$video.css( "height", ( $video.attr( "data-origheight" ) * ratio ) + "px" );
|
||||
} );
|
||||
}
|
||||
|
||||
resizeVideo( vidSelector );
|
||||
|
||||
$( window ).resize( function() {
|
||||
resizeVideo( vidSelector );
|
||||
} );
|
||||
|
||||
},
|
||||
|
||||
} // TEST.intrinsicRatioEmbeds
|
||||
|
||||
|
||||
|
||||
|
||||
// ======================================================================= Smooth Scroll
|
||||
TEST.smoothScroll = {
|
||||
|
||||
init: function(){
|
||||
|
||||
// Smooth scroll to anchor links
|
||||
$( 'a[href*="#"]' )
|
||||
// Remove links that don't actually link to anything
|
||||
.not( '[href="#"]' )
|
||||
.not( '[href="#0"]' )
|
||||
.not( '.skip-link' )
|
||||
.click( function( event ) {
|
||||
// On-page links
|
||||
if ( location.pathname.replace( /^\//, '' ) == this.pathname.replace( /^\//, '' ) && location.hostname == this.hostname ) {
|
||||
// Figure out element to scroll to
|
||||
var target = $( this.hash );
|
||||
target = target.length ? target : $( '[name=' + this.hash.slice( 1 ) + ']' );
|
||||
// Does a scroll target exist?
|
||||
if ( target.length ) {
|
||||
// Only prevent default if animation is actually gonna happen
|
||||
event.preventDefault();
|
||||
$( 'html, body' ).animate({
|
||||
scrollTop: target.offset().top
|
||||
}, 1000 );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
},
|
||||
|
||||
} // TEST.smoothScroll
|
||||
|
||||
|
||||
|
||||
// ======================================================================= AJAX Search
|
||||
TEST.ajaxSearch = {
|
||||
|
||||
init: function(){
|
||||
|
||||
// Delay function
|
||||
var delay = ( function(){
|
||||
var timer = 0;
|
||||
return function( callback, ms ) {
|
||||
clearTimeout( timer );
|
||||
timer = setTimeout( callback, ms );
|
||||
}
|
||||
} )();
|
||||
|
||||
// Update results on keyup, after delay
|
||||
$( '.mobile-search .search-field' ).keyup( function() {
|
||||
if ( $( this ).val().length != 0 ) {
|
||||
delay( function(){
|
||||
TEST.ajaxSearch.loadPosts();
|
||||
}, 200 );
|
||||
} else {
|
||||
delay( function(){
|
||||
TEST.ajaxSearch.emptyResults();
|
||||
}, 50 );
|
||||
}
|
||||
} );
|
||||
|
||||
delay( function(){
|
||||
TEST.ajaxSearch.emptyResults();
|
||||
}, 50 );
|
||||
|
||||
// Check for empty on blur
|
||||
$( '.mobile-search .search-field' ).blur( function() {
|
||||
if ( $( this ).val().length == 0 ) {
|
||||
TEST.ajaxSearch.emptyResults();
|
||||
}
|
||||
} );
|
||||
|
||||
},
|
||||
|
||||
loadPosts: function(){
|
||||
|
||||
var $container = $( '.mobile-results .results-wrapper' ),
|
||||
data = $( '.mobile-search .search-field' ).val();
|
||||
|
||||
search_string = JSON.stringify( data );
|
||||
|
||||
|
||||
|
||||
},
|
||||
|
||||
emptyResults: function(){
|
||||
$( '.mobile-results .results-wrapper' ).empty();
|
||||
$( '.mobile-results' ).removeClass( 'no-results searching' );
|
||||
$( '.mobile-search .search-field' ).val( '' );
|
||||
}
|
||||
|
||||
} // TEST.ajaxSearch
|
||||
|
||||
|
||||
|
||||
// ======================================================================= Function calls
|
||||
$( document ).ready( function() {
|
||||
|
||||
TEST.mobileMenu.init(); // Mobile Menu
|
||||
|
||||
TEST.searchToggle.init(); // Search Toggles
|
||||
|
||||
TEST.intrinsicRatioEmbeds.init(); // Resize videos
|
||||
|
||||
TEST.smoothScroll.init(); // Resize videos
|
||||
|
||||
TEST.ajaxSearch.init(); // AJAX search on mobile
|
||||
|
||||
} );
|
2
js/jquery.min.js
vendored
Normal file
2
js/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user