Lines 1-68
Link Here
|
1 |
/* Source: http://www.webspeaks.in/2011/07/new-gmail-like-floating-toolbar-jquery.html |
1 |
/* Source: http://www.webspeaks.in/2011/07/new-gmail-like-floating-toolbar-jquery.html |
2 |
Revision: http://jsfiddle.net/pasmalin/AyjeZ/ |
2 |
Revision: http://jsfiddle.net/pasmalin/AyjeZ/ |
3 |
*/ |
3 |
*/ |
4 |
(function($){ |
4 |
(function ($, window) { |
5 |
$.fn.fixFloat = function(options){ |
5 |
"use strict"; |
|
|
6 |
$.fn.fixFloat = function (options) { |
7 |
var defaults = { |
8 |
enabled: true |
9 |
}; |
10 |
options = $.extend(defaults, options); |
11 |
var tbh = $(this); |
12 |
var originalOffset = tbh.position().top; |
6 |
|
13 |
|
7 |
var defaults = { |
14 |
if (tbh.css('position') !== 'absolute') { |
8 |
enabled: true |
15 |
var tbhBis = tbh.clone(); |
9 |
}; |
16 |
tbhBis.css({ |
10 |
var options = $.extend(defaults, options); |
17 |
"display": tbh.css("display"), |
11 |
|
18 |
"visibility": "hidden" |
12 |
var offsetTop; /**Distance of the element from the top of window**/ |
19 |
}); |
13 |
var s; /**Scrolled distance from the top of window through which we have moved**/ |
20 |
tbhBis.width(tbh.outerWidth(true)); |
14 |
var fixMe = true; |
21 |
tbhBis.height(tbh.outerHeight(true)); |
15 |
var repositionMe = true; |
22 |
tbh.after(tbhBis); |
16 |
|
23 |
tbh.width(tbh.width()); |
17 |
var tbh = $(this); |
24 |
var tbl = tbh.find("th,td"); |
18 |
var originalOffset = tbh.position().top; /**Get the actual distance of the element from the top mychange:change to position better work**/ |
25 |
if (tbl.length > 0) { |
19 |
|
26 |
tbl.each(function () { |
20 |
if (tbh.css('position')!='absolute') { |
27 |
var $elt = $(this); |
21 |
var tbhBis = $("<div></div>"); |
28 |
$elt.width($elt.outerWidth(true)); |
22 |
tbhBis.css({"display":tbh.css("display"),"visibility":"hidden"}); |
29 |
}); |
23 |
tbhBis.width(tbh.outerWidth(true)); |
30 |
} |
24 |
tbhBis.height(tbh.outerHeight(true)); |
31 |
tbh.css({ |
25 |
tbh.after(tbhBis); |
32 |
'position': 'absolute', |
26 |
tbh.width(tbh.width()); |
33 |
'top': originalOffset |
27 |
tbh.css({'position':'absolute'}); |
34 |
}); |
28 |
} |
|
|
29 |
|
30 |
if(options.enabled){ |
31 |
$(window).scroll(function(){ |
32 |
var offsetTop = tbh.offset().top; /**Get the current distance of the element from the top **/ |
33 |
var s = parseInt($(window).scrollTop(), 10); /**Get the from the top of wondow through which we have scrolled**/ |
34 |
var fixMe = true; |
35 |
if(s > offsetTop){ |
36 |
fixMe = true; |
37 |
}else{ |
38 |
fixMe = false; |
39 |
} |
35 |
} |
|
|
36 |
tbh.css({ |
37 |
'z-index': 1000 |
38 |
}); |
40 |
|
39 |
|
41 |
if(s < originalOffset){ |
40 |
if (options.enabled) { |
42 |
repositionMe = true; |
41 |
$(window).scroll(function () { |
43 |
}else{ |
42 |
var offsetTop = tbh.offset().top; |
44 |
repositionMe = false; |
43 |
var s = parseInt($(window).scrollTop(), 10); |
|
|
44 |
var fixMe = (s > offsetTop); |
45 |
var repositionMe = (s < originalOffset); |
46 |
if (fixMe) { |
47 |
tbh.css({ |
48 |
'position': 'fixed', |
49 |
'top': '0' |
50 |
}); |
51 |
} |
52 |
if (repositionMe) { |
53 |
tbh.css({ |
54 |
'position': 'absolute', |
55 |
'top': originalOffset |
56 |
}); |
57 |
} |
58 |
}); |
45 |
} |
59 |
} |
46 |
|
60 |
}; |
47 |
if(fixMe){ |
61 |
})(jQuery, window); |
48 |
var cssObj = { |
|
|
49 |
'position' : 'fixed', |
50 |
'top' : '0px', |
51 |
'z-index' : '1000' |
52 |
} |
53 |
tbh.css(cssObj); |
54 |
tbh.addClass("floating"); |
55 |
} |
56 |
if(repositionMe){ |
57 |
var cssObj = { |
58 |
'position' : 'absolute', |
59 |
'top' : originalOffset, |
60 |
'z-index' : '1' |
61 |
} |
62 |
tbh.css(cssObj); |
63 |
tbh.removeClass("floating"); |
64 |
} |
65 |
}); |
66 |
} |
67 |
}; |
68 |
})(jQuery); |
69 |
- |
|
|