diff options
Diffstat (limited to 'src/wp-content/themes/twentythirteen/js/functions.js')
-rw-r--r-- | src/wp-content/themes/twentythirteen/js/functions.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/wp-content/themes/twentythirteen/js/functions.js b/src/wp-content/themes/twentythirteen/js/functions.js new file mode 100644 index 0000000000..777a5cf468 --- /dev/null +++ b/src/wp-content/themes/twentythirteen/js/functions.js @@ -0,0 +1,81 @@ +/** + * Functionality specific to Twenty Thirteen. + * + * Provides helper functions to enhance the theme experience. + */ + +( function( $ ) { + var body = $( 'body' ), + _window = $( window ); + + /** + * Adds a top margin to the footer if the sidebar widget area is higher + * than the rest of the page, to help the footer always visually clear + * the sidebar. + */ + $( function() { + if ( body.is( '.sidebar' ) ) { + var sidebar = $( '#secondary .widget-area' ), + secondary = ( 0 == sidebar.length ) ? -40 : sidebar.height(), + margin = $( '#tertiary .widget-area' ).height() - $( '#content' ).height() - secondary; + + if ( margin > 0 && _window.innerWidth() > 999 ) + $( '#colophon' ).css( 'margin-top', margin + 'px' ); + } + } ); + + /** + * Enables menu toggle for small screens. + */ + ( function() { + var nav = $( '#site-navigation' ), button, menu; + if ( ! nav ) + return; + + button = nav.find( '.menu-toggle' ); + if ( ! button ) + return; + + // Hide button if menu is missing or empty. + menu = nav.find( '.nav-menu' ); + if ( ! menu || ! menu.children().length ) { + button.hide(); + return; + } + + $( '.menu-toggle' ).on( 'click.twentythirteen', function() { + nav.toggleClass( 'toggled-on' ); + } ); + } )(); + + /** + * Makes "skip to content" link work correctly in IE9 and Chrome for better + * accessibility. + * + * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/ + */ + _window.on( 'hashchange.twentythirteen', function() { + var element = document.getElementById( location.hash.substring( 1 ) ); + + if ( element ) { + if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) + element.tabIndex = -1; + + element.focus(); + } + } ); + + /** + * Arranges footer widgets vertically. + */ + if ( $.isFunction( $.fn.masonry ) ) { + var columnWidth = body.is( '.sidebar' ) ? 228 : 245; + + $( '#secondary .widget-area' ).masonry( { + itemSelector: '.widget', + columnWidth: columnWidth, + gutterWidth: 20, + isRTL: body.is( '.rtl' ) + } ); + } +} )( jQuery );
\ No newline at end of file |