Этот пост – вольный перевод очень полезной статьи Jeffrey Way Learn How to Create a jQuery Plugin.
Самое главное, приведенный здесь пример, можно использовать как шаблон для собственных плагинов. Кстати, вместе с оригинальным вариантом идет скринкаст. В общем, надеюсь, вам будет интересно 🙂
Вы можете скачать исходники этого примера или посмотреть демонстрацию.
У вас может возникнуть мысль: «Что за суета вокруг jQuery? Нужно загрузить кучу плагинов чтобы эта библиотека на что-нибудь годилась». Первое, это не так. Второе, jQuery специально разрабатывалась для широкого применения. Сохраняя ядро библиотеки маленьким – 16кБ (прим. – речь идет о сжатом варианте) – пользователи могут добавить дополнительные плагины по собственному усмотрению. Сегодня, я покажу вам, как создать собственный плагин под названием «Center» с нуля. Приступим!
Наша задача
Мы хотим написать плагин, который будет динамически изменять стили указанного элемента страницы так чтобы отцентрировать его по горизонтали и вертикали, даже при изменении размера окна браузера.
Нам потребуется совсем не много. Просто убедитесь, что вы скачали библиотеку jQuery.
Шаг 1
Первый шаг при разработке плагина – это создание нового JavaScript файла. В соответствии с соглашением об именах этот файл нужно назвать «YourPluginName.jQuery.js». Как только вы создали этот файл, убедитесь, что подключили его к странице.
<head>
<script src="jquery-1.2.6.pack.js" type="text/javascript">
<script src="center.jQuery.js" type="text/javascript">
</head>
Шаг 2
Теперь, скопируйте следующий код.
(function($){
$.fn.center = function(){
var element = this;
$(element).load(function(){
changeCss();
$(window).bind("resize", function(){
changeCss();
});
function changeCss(){
var imageHeight = $(element).height();
var imageWidth = $(element).width();
var windowWidth = $(window).width();
var windowHeight = $(window).height();
$(element).css({
"position" : "absolute",
"left" : windowWidth / 2 - imageWidth / 2,
"top" : windowHeight /2 - imageHeight / 2
});
};
});
};
})(jQuery);
Я подробно объяснял все в видеоролике (прим. – на англ.), но хочу остановиться на нескольких ключевых моментах. Каждый ваш плагин должен находиться внутри:
$.fn.center = function(){};
«сenter» необходимо заменить на название вашего плагина. Это укажет jQuery, что вы добавляете новый метод. На данный момент он не делает ничего, но мы может его вызвать так:
$(function(){
$("#someElement").center();
});
Шаг 3
Вы должны понимать, как вручную центрировать картинку на странице до того как начнете создавать плагин. Первое, ваш элемент должен быть абсолютно позиционирован. В противном случае, он не будет двигаться после изменения значений «left» и «top«. Далее, картинка должна быть сдвинута на 50% ширины браузера влево. И, наконец, чтобы компенсировать ширину картинки, мы должны вычесть половину ее ширины (т.е. мы рассчитываем координаты ее левой стороны – прим.).
function changeCss(){
var imageHeight = $(element).height();
var imageWidth = $(element).width();
var windowWidth = $(window).width();
var windowHeight = $(window).height();
$(element).css({
"position" : "absolute",
"left" : windowWidth / 2 - imageWidth / 2,
"top" : windowHeight /2 - imageHeight / 2
});
};
Таким образом, мы точно размещаем центр картинки в центре страницы.
Шаг 4
Продолжаем, нам нужно создать обработчик изменения размеров окна браузера.
$(window).bind("resize", function(){
changeCss();
});
Функция ChangeCss() присваивает новые координаты левому верхнему углу нашей картинки. Каждый раз при изменении размеров окна она будет пересчитывать эти значения.
Готово!
Если у вас возникли вопросы, можете спокойно задавать их в комментариях. И, как всегда, плагин не готов для использования в «живых» приложениях. Что произойдет если у пользователя выключен JavaScript? И конечно, есть несколько способов сделать то же самое на «чистом» CSS.


