Guest User

Untitled

a guest
Jul 20th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. I've wrapped your code in a plugin. Hope it's useful.
  2.  
  3. Usage:
  4. In your HTML, an element that you want to act as footer (ex. #footer), an element to act as trigger (ex. #trigger) are assumed.
  5.  
  6. apart from this html file, you'll need to include my snippet somehow, and also bind it to your footer element.
  7.  
  8. Here is an example illustrating the interdependent code bits:
  9.  
  10.  
  11. Files:
  12. ----------------
  13.  
  14. | index.html
  15. | footer_toggle.js
  16. | application.js
  17.  
  18. index.html:
  19. ----------------
  20.  
  21. <body>
  22. <head>
  23. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
  24. <script src="footer_toggle.js"></script>
  25. <script src=application.js"></script>
  26. </head>
  27. <body>
  28. .
  29. .
  30. .
  31. <div id="trigger">
  32. <p>About</p>
  33. </div>
  34. .
  35. .
  36. .
  37. <div id="footer">
  38. <p>I am a footer</p>
  39. </div>
  40. .
  41. .
  42. .
  43. </body>
  44. </html>
  45.  
  46. footer_toggle.js:
  47. ----------------
  48.  
  49. (function( $ ){
  50. $.fn.footerToggle = function( method ) {
  51.  
  52. var methods = {
  53.  
  54. init : function( options ) {
  55.  
  56. var settings = {
  57. 'speed' : 200,
  58. 'footer_element' : $(this),
  59. 'button' : $('#about_button')
  60. };
  61.  
  62. if ( options ) {
  63. $.extend( settings, options );
  64. }
  65.  
  66. return this.each(function() {
  67.  
  68. var $this = $(this);
  69.  
  70. var slide = false;
  71. var height = settings['footer_element'].outerHeight();
  72.  
  73. settings['button'].click(function() {
  74. var docHeight = $(document).height();
  75. var windowHeight = $(window).height();
  76. var scrollPos = docHeight - windowHeight + height;
  77. settings['footer_element'].animate({ height: "toggle"}, settings['speed']);
  78. if(slide == false) {
  79. if($.browser.opera) { //Fix opera double scroll bug by targeting only HTML.
  80. $('html').animate({scrollTop: scrollPos+'px'}, settings['speed']);
  81. } else {
  82. $('html, body').animate({scrollTop: scrollPos+'px'}, settings['speed']);
  83. }
  84. slide = true;
  85. } else {
  86. slide = false;
  87. }
  88. });
  89.  
  90. });
  91.  
  92. }
  93.  
  94. };
  95.  
  96. if ( methods[method] ) {
  97. return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
  98. } else if ( typeof method === 'object' || ! method ) {
  99. return methods.init.apply( this, arguments );
  100. } else {
  101. $.error( 'Method ' + method + ' does not exist on jQuery.footerToggle' );
  102. }
  103.  
  104. };
  105.  
  106. })( jQuery );
  107.  
  108. application.js
  109. ----------------
  110.  
  111. jQuery(function($) {
  112. $('#footer').footerToggle({'button' : $('#trigger')});
  113. });
Add Comment
Please, Sign In to add comment