Создаем плагин для jQuery

Владимир | | CSS, HTML, JavaScript, Web разработка.

Этот пост – вольный перевод очень полезной статьи 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.