Быстрый фрагмент кода jQuery о том, как сохранить элемент в поле зрения. Для демонстрации прокрутите вниз на любой странице блога и увидите рекламу на правой боковой панели, они остаются в поле зрения, когда вы прокручиваете страницу вниз. Затем вернитесь к обычному виду, когда снова прокрутите вверх.
демонстрация
Прокрутите эту страницу вниз и посмотрите на правую боковую панель.
Код
//keep element in view
(function($)
{
$(document).ready( function()
{
var elementPosTop = $('#jq4u-sidebar-ads').position().top;
$(window).scroll(function()
{
var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height();
//if top of element is in view
if (wintop > elementPosTop)
{
//always in view
$('#jq4u-sidebar-ads').css({ "position":"fixed", "top":"10px" });
}
else
{
//reset back to normal viewing
$('#jq4u-sidebar-ads').css({ "position":"inherit" });
}
});
});
})(jQuery);
Превращение в плагин
Может быть легко превращен в плагин jQuery. На самом деле я очень быстро напишу один код и добавлю его ниже.
/**
* jQuery keep element in view plugin.
*
* @author Sam Deering
* @copyright Copyright (c) 2012 jQuery4u
* @license http://jquery4u.com/license/
* @link http://jquery4u.com
* @since Version 1.0
* @notes Plugin only works on scroll down elements.
*
*/
(function($)
{
$.fn.keepElementInView = function()
{
var elemPosTop = this.position().top;
$(window).scroll(function()
{
var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height();
if (wintop > elemPosTop)
{
this.css({ "position":"fixed", "top":"10px" });
}
else
{
this.css({ "position":"inherit" });
}
});
return this;
};
$(document).ready( function()
{
jQuery('#jq4u-sidebar-ads').keepElementInView();
});
})(jQuery);