Вход Регистрация
Файл: wordpress/wp-content/themes/twentyfifteen/js/functions.js
Строк: 223
<?php
/* global screenReaderText */
/**
 * Theme functions file.
 *
 * Contains handlers for navigation and widget area.
 */

( function( $ ) {
    var 
$body$window$sidebaradminbarOffsettop false,
        
bottom falsewindowWidthwindowHeightlastWindowPos 0,
        
topOffset 0bodyHeightsidebarHeightresizeTimer,
        
secondarybutton;

    
// Add dropdown toggle that display child menu items.
    
$( '.main-navigation .menu-item-has-children > a' ).after'<button class="dropdown-toggle" aria-expanded="false">' screenReaderText.expand '</button>' );

    
// Toggle buttons and submenu items with active children menu items.
    
$( '.main-navigation .current-menu-ancestor > button' ).addClass'toggle-on' );
    $( 
'.main-navigation .current-menu-ancestor > .sub-menu' ).addClass'toggled-on' );

    $( 
'.dropdown-toggle' ).click( function( ) {
        var 
_this = $( this );
        
e.preventDefault();
        
_this.toggleClass'toggle-on' );
        
_this.next'.children, .sub-menu' ).toggleClass'toggled-on' );
        
_this.attr'aria-expanded'_this.attr'aria-expanded' ) === 'false' 'true' 'false' );
        
_this.html_this.html() === screenReaderText.expand screenReaderText.collapse screenReaderText.expand );
    } );

    
secondary = $( '#secondary' );
    
button = $( '.site-branding' ).find'.secondary-toggle' );

    
// Enable menu toggle for small screens.
    
( function() {
        var 
menuwidgetssocial;
        if ( ! 
secondary || ! button ) {
            return;
        }

        
// Hide button if there are no widgets and the menus are missing or empty.
        
menu    secondary.find'.nav-menu' );
        
widgets secondary.find'#widget-area' );
        
social  secondary.find'#social-navigation' );
        if ( ! 
widgets.length && ! social.length && ( ! menu || ! menu.children().length ) ) {
            
button.hide();
            return;
        }

        
button.on'click.twentyfifteen', function() {
            
secondary.toggleClass'toggled-on' );
            
secondary.trigger'resize' );
            $( 
this ).toggleClass'toggled-on' );
            if ( $( 
thissecondary ).hasClass'toggled-on' ) ) {
                $( 
this ).attr'aria-expanded''true' );
                
secondary.attr'aria-expanded''true' );
            } else {
                $( 
this ).attr'aria-expanded''false' );
                
secondary.attr'aria-expanded''false' );
            }
        } );
    } )();

    
/**
     * @summary Add or remove ARIA attributes.
     * Uses jQuery's width() function to determine the size of the window and add
     * the default ARIA attributes for the menu toggle if it's visible.
     * @since Twenty Fifteen 1.1
     */
    
function onResizeARIA() {
        if ( 
955 $window.width() ) {
            
button.attr'aria-expanded''false' );
            
secondary.attr'aria-expanded''false' );
            
button.attr'aria-controls''secondary' );
        } else {
            
button.removeAttr'aria-expanded' );
            
secondary.removeAttr'aria-expanded' );
            
button.removeAttr'aria-controls' );
        }
    }

    
// Sidebar scrolling.
    
function resize() {
        
windowWidth $window.width();

        if ( 
955 windowWidth ) {
            
top bottom false;
            
$sidebar.removeAttr'style' );
        }
    }

    function 
scroll() {
        var 
windowPos $window.scrollTop();

        if ( 
955 windowWidth ) {
            return;
        }

        
sidebarHeight $sidebar.height();
        
windowHeight  $window.height();
        
bodyHeight    $body.height();

        if ( 
sidebarHeight adminbarOffset windowHeight ) {
            if ( 
windowPos lastWindowPos ) {
                if ( 
top ) {
                    
top false;
                    
topOffset = ( $sidebar.offset().top ) ? $sidebar.offset().top adminbarOffset 0;
                    
$sidebar.attr'style''top: ' topOffset 'px;' );
                } else if ( ! 
bottom && windowPos windowHeight sidebarHeight $sidebar.offset().top && sidebarHeight adminbarOffset bodyHeight ) {
                    
bottom true;
                    
$sidebar.attr'style''position: fixed; bottom: 0;' );
                }
            } else if ( 
windowPos lastWindowPos ) {
                if ( 
bottom ) {
                    
bottom false;
                    
topOffset = ( $sidebar.offset().top ) ? $sidebar.offset().top adminbarOffset 0;
                    
$sidebar.attr'style''top: ' topOffset 'px;' );
                } else if ( ! 
top && windowPos adminbarOffset $sidebar.offset().top ) {
                    
top true;
                    
$sidebar.attr'style''position: fixed;' );
                }
            } else {
                
top bottom false;
                
topOffset = ( $sidebar.offset().top ) ? $sidebar.offset().top adminbarOffset 0;
                
$sidebar.attr'style''top: ' topOffset 'px;' );
            }
        } else if ( ! 
top ) {
            
top true;
            
$sidebar.attr'style''position: fixed;' );
        }

        
lastWindowPos windowPos;
    }

    function 
resizeAndScroll() {
        
resize();
        
scroll();
    }

    $( 
document ).ready( function() {
        
$body          = $( document.body );
        
$window        = $( window );
        
$sidebar       = $( '#sidebar' ).first();
        
adminbarOffset $body.is'.admin-bar' ) ? $( '#wpadminbar' ).height() : 0;

        
$window
            
.on'scroll.twentyfifteen'scroll )
            .
on'load.twentyfifteen'onResizeARIA )
            .
on'resize.twentyfifteen', function() {
                
clearTimeoutresizeTimer );
                
resizeTimer setTimeoutresizeAndScroll500 );
                
onResizeARIA();
            } );
        
$sidebar.on'click.twentyfifteen keydown.twentyfifteen''button'resizeAndScroll );

        
resizeAndScroll();

        for ( var 
16i++ ) {
            
setTimeoutresizeAndScroll100 );
        }
    } );

} )( 
jQuery );
?>
Онлайн: 1
Реклама