Вход Регистрация
Файл: CloudBox-main/doc/js/scrollspy.js
Строк: 119
<?php
/* =============================================================
 * bootstrap-scrollspy.js v2.3.1
 * http://twitter.github.com/bootstrap/javascript.html#scrollspy
 * =============================================================
 * Copyright 2012 Twitter, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============================================================== */


!function ($) {

  
"use strict"// jshint ;_;


 /* SCROLLSPY CLASS DEFINITION
  * ========================== */

  
function ScrollSpy(elementoptions) {
    var 
process = $.proxy(this.processthis)
      , 
$element = $(element).is('body') ? $(window) : $(element)
      , 
href
    this
.options = $.extend({}, $.fn.scrollspy.defaultsoptions)
    
this.$scrollElement $element.on('scroll.scroll-spy.data-api'process)
    
this.selector = (this.options.target
      
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^s]+$)/, '')) //strip for ie7
      
|| '') + ' .nav li > a'
    
this.$body = $('body')
    
this.refresh()
    
this.process()
  }

  
ScrollSpy.prototype = {

      
constructorScrollSpy

    
refresh: function () {
        var 
self this
          
$targets

        this
.offsets = $([])
        
this.targets = $([])

        
$targets this.$body
          
.find(this.selector)
          .
map(function () {
            var 
$el = $(this)
              , 
href $el.data('target') || $el.attr('href')
              , 
$href = /^#w/.test(href) && $(href)
            
return ( $href
              
&& $href.length
              
&& [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
          
})
          .
sort(function (ab) { return a[0] - b[0] })
          .
each(function () {
            
self.offsets.push(this[0])
            
self.targets.push(this[1])
          })
      }

    , 
process: function () {
        var 
scrollTop this.$scrollElement.scrollTop() + this.options.offset
          
scrollHeight this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
          
maxScroll scrollHeight this.$scrollElement.height()
          , 
offsets this.offsets
          
targets this.targets
          
activeTarget this.activeTarget
          
i

        
if (scrollTop >= maxScroll) {
          return 
activeTarget != (targets.last()[0])
            && 
this.activate )
        }

        for (
offsets.lengthi--;) {
          
activeTarget != targets[i]
            && 
scrollTop >= offsets[i]
            && (!
offsets[1] || scrollTop <= offsets[1])
            && 
this.activatetargets[i] )
        }
      }

    , 
activate: function (target) {
        var 
active
          
selector

        this
.activeTarget target

        
$(this.selector)
          .
parent('.active')
          .
removeClass('active')

        
selector this.selector
          
'[data-target="' target '"],'
          
this.selector '[href="' target '"]'

        
active = $(selector)
          .
parent('li')
          .
addClass('active')

        if (
active.parent('.dropdown-menu').length)  {
          
active active.closest('li.dropdown').addClass('active')
        }

        
active.trigger('activate')
      }

  }


 
/* SCROLLSPY PLUGIN DEFINITION
  * =========================== */

  
var old = $.fn.scrollspy

  
$.fn.scrollspy = function (option) {
    return 
this.each(function () {
      var 
$this = $(this)
        , 
data $this.data('scrollspy')
        , 
options typeof option == 'object' && option
      
if (!data$this.data('scrollspy', (data = new ScrollSpy(thisoptions)))
      if (
typeof option == 'string'data[option]()
    })
  }

  $.
fn.scrollspy.Constructor ScrollSpy

  
$.fn.scrollspy.defaults = {
    
offset10
  
}


 
/* SCROLLSPY NO CONFLICT
  * ===================== */

  
$.fn.scrollspy.noConflict = function () {
    $.
fn.scrollspy old
    
return this
  
}


 
/* SCROLLSPY DATA-API
  * ================== */

  
$(window).on('load', function () {
    $(
'[data-spy="scroll"]').each(function () {
      var 
$spy = $(this)
      
$spy.scrollspy($spy.data())
    })
  })

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