JQuery на практике, или мой топ5 ++ JQuery методов

Default Image Лаборатория Кода

Библиотека jQuery обладает довольно обширным набором методов и позволяет создавать галереи или, скажем, анимацию иллюстрированных спецэффектов — со сложными динамическими элементами. Для этих случаев обычно используются готовые скрипты, которые можно свободно скачать в интернете и установить на сайт.

Подобно тому, как мы используем CMS в качестве движка сайта, а не изобретаем велосипед, вполне логично обращаться к готовым программным решениям. Однако иногда требуется снабдить дизайн выборочными динамическими эффектами, и знание их реализации окажется весьма кстати.

В этой статье я хочу рассказать о своём наборе jQuery-методов, который прижился в реальной практике, на примере одного из сайтов моей работы. Для новичков в jQuery (среди которых, кстати, могут быть профессиональные веб-дизайнеры или программисты) это может упростить понимание общих принципов работы с этой библиотекой. Для владельцев сайтов статья послужит в качестве идейного плацдарма.

В статье рассмотрены методы:

  • Анимация объектов (.animate())
  • Динамичная смена CSS-свойств (.css())
  • Динамичная смена содержимого (картинки) (.attr())
  • Действие по таймеру (setInterval())
  • Затухание и появление текста (.fadeIn() и .fadeOut())

В конце текста вы найдёте небольшую шпаргалку-словарик методов (написан для себя).

Следует уточнить, что в статье сознательно опущены jQuery-методы, связанные с AJAX, так как это, вероятно, тема отдельной записи.

Подключение библиотеки jQuery

Для начала нам потребуется подключить библиотеку jQuery. Для этого можно скачать последнюю версию с официального сайта или использовать CDN, например, от Google. Подключаем скрипт в секцию <head>:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

Анимация объекта с определением ширины окна

Метод .animate() (динамичное изменение свойств объекта).

Рассмотрим анимацию выезжающей сбоку области. Сначала нужно определить ширину окна (минус отступ слева в 40 пикселей):

var bod_width = $(window).width() - 40;

Затем создаём анимацию для объекта с id="dialogWindow" при щелчке мыши на кнопке «Каталог» с атрибутом id="go":

$("#go").click(function() {
  $("#dialogWindow").animate({
    width: bod_width + "px",
    left: "40px",
    opacity: 1,
    marginLeft: "0"
  }, 250);
});

Второй пример анимации: увеличение картинки при наведении курсора.

Принцип аналогичный. Код анимации будет выглядеть так:

.animate({
  width: 270 + "px",
  opacity: 1,
  marginLeft: "-15px",
  marginTop: "-15px"
}, 600);

Динамичная смена CSS-классов

Методы .removeClass() (удаление класса) и .addClass() (добавление класса).

В CSS-файле задаём классы .price и .price.over (к ним, например, может быть привязана картинка-подложка с белым и красным кругом). Код, обрабатывающий наведение курсора:

$('.price').hover(
  function() {
    // При наведении курсора добавляем класс 'over'
    $(this).addClass('over');
  },
  function() {
    // При уходе курсора удаляем класс 'over'
    $(this).removeClass('over');
  }
);

Таким образом, при наведении указателя мыши на цену выделяется возможность «Купить сейчас». Если курсор уйдёт в сторону, ценник снова отобразится неактивным.

Смена содержимого через общий родительский элемент

Метод .attr() (получение/установка атрибута) в сочетании с методами .parents() (поиск родителя) и .find() (поиск внутри элемента).

Примерная структура в документе:

<div class="catalog_item_photos">
  <a href="big_image.jpg" class="flink">
    <img src="small_image.jpg" alt="">
  </a>
  <div class="catalog_item_photos_big">
    <img src="big_image.jpg" alt="">
  </div>
</div>

Объединяющим является блок с классом .catalog_item_photos. Таких контейнеров на странице несколько. Мы обращаемся к дочерним элементам того из них, по миниатюре которого щёлкнули мышкой. Для этого используется конструкция $(this).parents('.catalog_item_photos').

$('.catalog_item_photos a.flink').click(function(event) {
  event.preventDefault(); // Отменяем стандартное действие ссылки

  // Находим родительский контейнер и внутри него — блок для большой картинки
  $(this).parents('.catalog_item_photos')
         .find('.catalog_item_photos_big img')
         .attr('src', $(this).attr('href')); // Меняем src большой картинки на href ссылки
});

Действие по таймеру и эффекты затухания/появления текста

Методы setInterval() (установка интервала), .text() (установка текста), .fadeIn() (плавное появление) и .fadeOut() (плавное исчезновение).

Упрощённый внешний вид блока в документе:

<div id="news_block">
  НОВОСТИ:
  <div id="message_top">Вниманию пользователей сайта www.westskate.ru</div>
</div>

Создаём функцию, основанную на массиве строк, которые будут сменяться по таймеру внутри элемента с id="message_top".

var mess_tab = ["Сообщение 1", "Сообщение 2", "Сообщение 3", "Сообщение 4", "Сообщение 5"];
var next = 0;

function slidingSwitch() {
  if (next == 4) {
    next = 0;
  } else {
    next = next + 1;
  }

  $("#message_top").fadeOut(700, function() {
    $(this).text(mess_tab[next]).fadeIn(700);
  });
}

// Запускаем смену сообщений каждые 8 секунд
$(function() {
  setInterval(slidingSwitch, 8000);
});

Приложение. Краткий словарик-шпаргалка по jQuery-методам

  • .add() — Добавление элементов к группе выбранных элементов.
    Пример: $("p").add("div").addClass("widget");
  • .addClass() — Добавление заданного CSS-класса.
  • .after() — Вставка контента после указанного элемента.
  • .animate() — Анимация изменения CSS-свойств элемента.
  • .attr() — Получение или установка значения атрибута элемента.
  • .click() — Обработчик события щелчка мышью.
  • .css() — Получение или установка CSS-свойства.
  • .fadeIn() — Плавное появление элемента.
  • .fadeOut() — Плавное исчезновение элемента.
  • .find() — Поиск дочерних элементов, соответствующих селектору.
  • .height() — Получение или установка высоты элемента.
  • .hide() — Мгновенное скрытие элемента.
  • .hover() — Обработчик событий наведения и ухода курсора.
  • .parents() — Поиск родительских элементов.
  • .removeClass() — Удаление CSS-класса.
  • .text() — Получение или установка текстового содержимого.
  • .toggleClass() — Переключение (добавление/удаление) CSS-класса.
  • .val() — Получение или установка значения формы.
  • .width() — Получение или установка ширины элемента.

Оцените статью
codda