dynamic_position.js 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. (function($) {
  2. Drupal.behaviors.moduleFilterDynamicPosition = {
  3. attach: function() {
  4. $(window).scroll(function() {
  5. // Vertical movement.
  6. var top = $('#module-filter-tabs').offset().top;
  7. var bottom = top + $('#module-filter-tabs').height();
  8. var windowHeight = $(window).height();
  9. if (((bottom - windowHeight) > ($(window).scrollTop() - $('#module-filter-submit').height())) && $(window).scrollTop() + windowHeight - $('#module-filter-submit').height() - $('#all-tab').height() > top) {
  10. $('#module-filter-submit').removeClass('fixed-top').addClass('fixed fixed-bottom');
  11. }
  12. else if (bottom < $(window).scrollTop()) {
  13. $('#module-filter-submit').removeClass('fixed-bottom').addClass('fixed fixed-top');
  14. }
  15. else {
  16. $('#module-filter-submit').removeClass('fixed fixed-bottom fixed-top');
  17. }
  18. // Horizontal movement.
  19. if ($('#module-filter-submit').hasClass('fixed-bottom') || $('#module-filter-submit').hasClass('fixed-top')) {
  20. var left = $('#module-filter-tabs').offset().left - $(window).scrollLeft();
  21. if (left != $('#module-filter-submit').offset().left - $(window).scrollLeft()) {
  22. $('#module-filter-submit').css('left', left);
  23. }
  24. }
  25. });
  26. $(window).trigger('scroll');
  27. $(window).resize(function() {
  28. $(window).trigger('scroll');
  29. });
  30. }
  31. }
  32. })(jQuery);