diff options
Diffstat (limited to 'extensions/jqt.floaty.js')
-rw-r--r-- | extensions/jqt.floaty.js | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/extensions/jqt.floaty.js b/extensions/jqt.floaty.js new file mode 100644 index 0000000..2ae8f4d --- /dev/null +++ b/extensions/jqt.floaty.js @@ -0,0 +1,92 @@ +/*
+
+ _/ _/_/ _/_/_/_/_/ _/
+ _/ _/ _/ _/_/ _/ _/ _/_/_/ _/_/_/
+ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/_/ _/ _/ _/_/ _/_/_/ _/_/_/ _/ _/
+ _/
+ _/
+
+ Created by David Kaneda <http://www.davidkaneda.com>
+ Documentation and issue tracking on Google Code <http://code.google.com/p/jqtouch/>
+
+ Special thanks to Jonathan Stark <http://jonathanstark.com/>
+ and pinch/zoom <http://www.pinchzoom.com/>
+
+ (c) 2009 by jQTouch project members.
+ See LICENSE.txt for license.
+
+*/
+
+(function($) {
+ if ($.jQTouch)
+ {
+ $.jQTouch.addExtension(function Floaty(jQT){
+
+ $.fn.makeFloaty = function(options){
+ var defaults = {
+ align: 'top',
+ spacing: 20,
+ time: '.3s'
+ }
+ var settings = $.extend({}, defaults, options);
+ settings.align = (settings.align == 'top') ? 'top' : 'bottom';
+
+ return this.each(function(){
+ var $el = $(this);
+
+ $el.css({
+ '-webkit-transition': 'top ' + settings.time + ' ease-in-out',
+ 'display': 'block',
+ 'min-height': '0 !important'
+ }).data('settings', settings);
+
+ $(document).bind('scroll', function(){
+ if ($el.data('floatyVisible') === true)
+ {
+ $el.scrollFloaty();
+ }
+ });
+ $el.scrollFloaty();
+ });
+ }
+
+ $.fn.scrollFloaty = function(){
+ return this.each(function(){
+ var $el = $(this);
+ var settings = $el.data('settings');
+ var wHeight = $('html').attr('clientHeight'); // WRONG
+
+ var newY = window.pageYOffset +
+ ((settings.align == 'top') ?
+ settings.spacing : wHeight - settings.spacing - $el.get(0).offsetHeight);
+
+ $el.css('top', newY).data('floatyVisible', true);
+ });
+ }
+
+ $.fn.hideFloaty = function(){
+ return this.each(function(){
+ var $el = $(this);
+ var oh = $el.get(0).offsetHeight;
+
+ $el.css('top', -oh-10).data('floatyVisible', false);
+ });
+ }
+
+ $.fn.toggleFloaty = function(){
+ return this.each(function(){
+ var $el = $(this);
+ if ($el.data('floatyVisible') === true){
+ $el.hideFloaty();
+ }
+ else
+ {
+ $el.scrollFloaty();
+ }
+ });
+ }
+ });
+ }
+})(jQuery);
\ No newline at end of file |