jQ plugin: Sticky
HomePage: http://stickyjs.com/
GitHub: https://github.com/garand/sticky
Giới thiệu & Chức năng: JQ này cung cấp cho bạn khả năng thực hiện bất kì phần tử nào trên trang web luôn ở trên cùng trang khi đã cuộn màn hình đi qua.
Điều này có thể rất tiện dụng trong trang web của bạn để trình bày một trình đơn menu hoặc thanh chia sẻ.
Cài đặt:
Cách dùng:
Ví dụ:
http://jsfiddle.net/VIFKirigayaKazuto/Qg76p/1/embedded/result,html,js/
Ứng dụng trong forumotion
ACP >> Modules >> HTML & JAVASCRIPT >> Javascript Codes >> Create a new javascript:
HomePage: http://stickyjs.com/
GitHub: https://github.com/garand/sticky
Giới thiệu & Chức năng: JQ này cung cấp cho bạn khả năng thực hiện bất kì phần tử nào trên trang web luôn ở trên cùng trang khi đã cuộn màn hình đi qua.
Điều này có thể rất tiện dụng trong trang web của bạn để trình bày một trình đơn menu hoặc thanh chia sẻ.
Cài đặt:
- Code:
<!-- Thư viện JQuery -->
<script type="text/javascript" src="...jquery.js"></script>
<!-- Sticky Plugin -->
<script type="text/javascript" src="...jquery.sticky.js"></script>
Cách dùng:
- Code:
$(document).ready(function(){
$("selector").sticky({topSpacing:0}); // Id, Class của phần tử sẽ cuộn theo.
});
Ví dụ:
http://jsfiddle.net/VIFKirigayaKazuto/Qg76p/1/embedded/result,html,js/
Ứng dụng trong forumotion
ACP >> Modules >> HTML & JAVASCRIPT >> Javascript Codes >> Create a new javascript:
- Title: Sticky Plugin
- Placement: In all the pages
- Javascript Code * :
http://pastebin.com/Rza8PuyK
- Code:
// Sticky Plugin v1.0.0 for jQuery
// =============
// Author: Anthony Garand
// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
// Improvements by Leonardo C. Daronco (daronco)
// Created: 2/14/2011
// Date: 2/12/2012
// Website: http://labs.anthonygarand.com/sticky
// Description: Makes an element on the page stick on the screen as you scroll
// It will only set the 'top' and 'position' of your element, you
// might need to adjust the width in some cases.
(function($) {
var defaults = {
topSpacing: 0,
bottomSpacing: 0,
className: 'is-sticky',
wrapperClassName: 'sticky-wrapper',
center: false,
getWidthFrom: ''
},
$window = $(window),
$document = $(document),
sticked = [],
windowHeight = $window.height(),
scroller = function() {
var scrollTop = $window.scrollTop(),
documentHeight = $document.height(),
dwh = documentHeight - windowHeight,
extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
for (var i = 0; i < sticked.length; i++) {
var s = sticked[i],
elementTop = s.stickyWrapper.offset().top,
etse = elementTop - s.topSpacing - extra;
if (scrollTop <= etse) {
if (s.currentTop !== null) {
s.stickyElement
.css('position', '')
.css('top', '');
s.stickyElement.parent().removeClass(s.className);
s.currentTop = null;
}
}
else {
var newTop = documentHeight - s.stickyElement.outerHeight()
- s.topSpacing - s.bottomSpacing - scrollTop - extra;
if (newTop < 0) {
newTop = newTop + s.topSpacing;
} else {
newTop = s.topSpacing;
}
if (s.currentTop != newTop) {
s.stickyElement
.css('position', 'fixed')
.css('top', newTop);
if (typeof s.getWidthFrom !== 'undefined') {
s.stickyElement.css('width', $(s.getWidthFrom).width());
}
s.stickyElement.parent().addClass(s.className);
s.currentTop = newTop;
}
}
}
},
resizer = function() {
windowHeight = $window.height();
},
methods = {
init: function(options) {
var o = $.extend(defaults, options);
return this.each(function() {
var stickyElement = $(this);
var stickyId = stickyElement.attr('id');
var wrapper = $('<div></div>')
.attr('id', stickyId + '-sticky-wrapper')
.addClass(o.wrapperClassName);
stickyElement.wrapAll(wrapper);
if (o.center) {
stickyElement.parent().css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
}
if (stickyElement.css("float") == "right") {
stickyElement.css({"float":"none"}).parent().css({"float":"right"});
}
var stickyWrapper = stickyElement.parent();
stickyWrapper.css('height', stickyElement.outerHeight());
sticked.push({
topSpacing: o.topSpacing,
bottomSpacing: o.bottomSpacing,
stickyElement: stickyElement,
currentTop: null,
stickyWrapper: stickyWrapper,
className: o.className,
getWidthFrom: o.getWidthFrom
});
});
},
update: scroller,
unstick: function(options) {
return this.each(function() {
var unstickyElement = $(this);
removeIdx = -1;
for (var i = 0; i < sticked.length; i++)
{
if (sticked[i].stickyElement.get(0) == unstickyElement.get(0))
{
removeIdx = i;
}
}
if(removeIdx != -1)
{
sticked.splice(removeIdx,1);
unstickyElement.unwrap();
unstickyElement.removeAttr('style');
}
});
}
};
// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
if (window.addEventListener) {
window.addEventListener('scroll', scroller, false);
window.addEventListener('resize', resizer, false);
} else if (window.attachEvent) {
window.attachEvent('onscroll', scroller);
window.attachEvent('onresize', resizer);
}
$.fn.sticky = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method ) {
return methods.init.apply( this, arguments );
} else {
$.error('Method ' + method + ' does not exist on jQuery.sticky');
}
};
$.fn.unstick = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method ) {
return methods.unstick.apply( this, arguments );
} else {
$.error('Method ' + method + ' does not exist on jQuery.sticky');
}
};
$(function() {
setTimeout(scroller, 0);
});
})(jQuery);
Sử dụng bằng cách tạo JS mới, thêm vào bên dưới JS trên, thêm vào thẻ <script>.
- Code:
$(document).ready(function(){
$("#abc").sticky({topSpacing:0}); // Id, Class của phần tử sẽ cuộn theo.
});
Nguồn: KirigayaKazuto