mirror of
https://github.com/yunluo/gdk.git
synced 2024-06-16 04:25:14 +02:00
86 lines
3.6 KiB
JavaScript
86 lines
3.6 KiB
JavaScript
/*!
|
|
* jQuery plugin gapples v1.0
|
|
* posfixed
|
|
* http://gapples.sinaapp.com/
|
|
*
|
|
* Copyright 2013 gapples.sinaapp.com
|
|
* Released under the GPLv2 license
|
|
* http://gapples.sinaapp.com/license
|
|
*
|
|
* Written by Boyn Xiong
|
|
* Date: 2013-1-3
|
|
*/
|
|
|
|
(function ($) {
|
|
$.extend($.fn, {
|
|
posfixed: function (configSettings) {
|
|
var settings = {
|
|
direction: "top",
|
|
type: "while",
|
|
hide: false,
|
|
distance: 0
|
|
};
|
|
$.extend(settings, configSettings);
|
|
|
|
var obj = this;
|
|
var initPos = $(obj).offset().top;
|
|
var anchoredPos = settings.distance;
|
|
|
|
if (settings.type == "while") {
|
|
$(window).scroll(function (event) {
|
|
if (settings.direction == "top") {
|
|
var objTop = $(obj).offset().top - $(window).scrollTop();
|
|
if (objTop <= anchoredPos) {
|
|
$(obj).css("position", "fixed");
|
|
$(obj).css(settings.direction, anchoredPos + "px");
|
|
}
|
|
if ($(obj).offset().top <= initPos) {
|
|
$(obj).css("position", "static");
|
|
}
|
|
} else {
|
|
var objBottom = $(window).height() - $(obj).offset().top + $(window).scrollTop() - $(obj).outerHeight();
|
|
if (objBottom <= anchoredPos) {
|
|
$(obj).css("position", "fixed");
|
|
$(obj).css(settings.direction, anchoredPos + "px");
|
|
}
|
|
if ($(obj).offset().top >= initPos) {
|
|
$(obj).css("position", "static");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
if (settings.type == "always") {
|
|
if (settings.hide) {
|
|
$(obj).hide();
|
|
}
|
|
$(window).scroll(function (event) {
|
|
if ($(window).scrollTop() > 300) {
|
|
$(obj).fadeIn(200);
|
|
} else {
|
|
$(obj).fadeOut(200);
|
|
}
|
|
});
|
|
$(obj).css("position", "fixed");
|
|
$(obj).css(settings.direction, anchoredPos + "px");
|
|
if (settings.tag != null) {
|
|
if (settings.tag.obj != null) {
|
|
if (settings.tag.direction == "right") {
|
|
$(obj).css("left", (settings.tag.obj.offset().left + settings.tag.obj.width() + settings.tag.distance) + "px");
|
|
$(window).resize(function () {
|
|
$(obj).css("left", (settings.obj.tag.offset().left + settings.tag.obj.width() + settings.tag.distance) + "px");
|
|
});
|
|
} else {
|
|
console.log(settings.tag.obj.offset().left - settings.tag.obj.width() - settings.tag.distance);
|
|
$(obj).css("left", (settings.tag.obj.offset().left - $(obj).outerWidth() - settings.tag.distance) + "px");
|
|
$(window).resize(function () {
|
|
$(obj).css("left", (settings.tag.obj.offset().left - $(obj).outerWidth() - settings.tag.distance) + "px");
|
|
});
|
|
}
|
|
} else {
|
|
$(obj).css(settings.tag.direction, settings.tag.distance + "px");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
})(jQuery); |