Делим кузов автомобиля на элементы с помощью jquery

jquery

От автора: на работе мы общались с клиентом, который пришёл к нам за сайтом. Клиент тот занимается продажей элементов кузовов автомобилей и их комплектующих. В процессе общения ко мне в голову ломанулась идея интересного виджета для его сайта.

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

скачать исходникидемо

Задача

Результат разработки должен подарить нам следующие красивости:

результат

Результат разработки должен подарить нам следующие красивости:

вверху страницы, над изображением должны находится ссылки с названиями элементов кузова, при на ведении на которые соответствующий элемент становится чётким, а остальное полупрозрачным;

при наведении на автомобиль, указанный курсором элемент также становится чётким, а остальные полупрозрачными. А так же подсвечивается ссылка сверху, с названием указанного элемента.

Подготовка необходимого материала

Для начала нам надо подготовить машину и её запчасти. Я выбрал BMW m3… Не дано такой обзавестись, ну хоть поиздеваюсь.

🙂

Я взял фото автомобиля с фронтального ракурса.

BMW

Теперь делим на элементы.

В фотошопе при помощи инструмента «магнитное лассо» или «прямолинейное лассо» аккуратно вырезаем элемент кузова по шву, копируем и вставляем в новом слое. Если вставилось не ровно, сделайте этот слой полупрозрачным и передвигайте элемент, пока не совпадёт с машиной, потом верните слою полную непрозрачность.

Так слой за слоем сделайте все элементы. Если сделать слой с машиной невидимым, то должно получиться что-то на подобии этого:

BMW

Теперь делаем все слои прозрачными, кроме одного из элементов. Сохраняем для web в формате png-24. Затем следующий элемент и т.д.

Получаем вот такие картинки:

BMW

BMW

BMW

BMW

BMW

BMW

Начнём монтаж кузова!

Метод

1. Вёрстка

Чтобы все элементы кузова и сама машина расположились друг над другом по оси z, мы создадим дивы с размерами соответствующими размеру картинок, присвоим им абсолютное позиционирование и бэкграунды, в качестве которых будут наши элементы и машина.

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

Затем, поверх всех элементов нужно разместить ссылки. Сложность состоит в том, как эти ссылки разместить над соответствующими элементами?

Это не проблема! Начнём с того, что зададим этим ссылкам блочное отображение и абсолютное позиционирование. Затем отрегулируем их положение и размеры.

План DOM

BMW

2. Анимация

Наш скрипт должен реагировать на наведение курсора на салку сверху так: изменяет стили этой ссылки, выдёргивает содержание её атрибута rel, находит по id див элемента кузова, в соответствии с атрибутом rel ссылки. Затем найденный див он проявляет с помощью fadeIn(). В то же время див с машиной становится полупрозрачным. Когда курсор уходит со ссылки, все изменённые элементы возвращают исходное состояние.

При наведении на ссылку над элементом кузова, скрипт проводит ту же операцию, только сама ссылка не изменяется, изменяется ссылка с таким же rel сверху страницы.

Реализация

1. HTML

Сейчас я покажу готовый html нашей страницы. В нём уже откалиброваны ссылки над машиной. Затем я покажу, как их можно удобно расставлять.

HTML структура у нас есть, теперь надо описать стили объектов.

Теперь разберёмся, как калибровать ссылки над машиной

Начнём с того, что у нашего кузова фары и решётка радиатора находятся в бампере, исходя из этого и учитывая, что ссылки у нас блочные – прямоугольной формы, нетрудно догадаться какие уровни должны занимать определённые ссылки по оси z. В приложенном примере приложения ссылки уже расставлены в нужном порядке, но я всё равно акцентирую Ваше внимание на этой детали, так как это пригодится при применении приложения с альтернативными объектами (может с другой машиной или системным блоком и т.д.).

Как проще откалибровать ссылки?

ля ведущих браузеров есть весьма комфортное решение:

Google chrome – firebug: //chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench?hl=ru
Mozilla FF – firebug: //addons.mozilla.org/ru/firefox/addon/firebug/
Opera – dragonfly: //www.opera.com/dragonfly/

Эти утилиты помогут проинспектировать вёрстку и стили вашей страницы в режиме просмотра, а так же изменять её и прослеживать результат этих изменений во время просмотра.

Рассмотрим процедуру калибровки на примере firebug

Во-первых, нам надо временно всем ссылкам сделать бордер красного цвета, чтобы видеть его положение и размеры.

Затем, после установки firebug, мы запускаем его во время просмотра нашей страницы. (У мозилы он запускается нажатием на маленького жука в нижнем, правом углу браузера, а у хрома такой же жук, только среди других расширений вверху браузера, справа от адресной строки. В случае с оперой, драгонфлай запускается так: правым кликом по элементу страницы, выбираем «проинспектировать элемент» или «inspect element»).

Находим нашу ссылку в dom или выбираем её при помощи «inspect» вверху панели firebug.

Справа отображаются стили инспектируемого объекта, которые можно изменять и тут же видеть результат. Вот мы и будем передвигать и изменять размеры ссылки.

BMW

До тех пор, пока наша ссылка не будет над элементом кузова.

BMW

После калибровки, выделяем стили в firebug, копируем и вставляем в атрибут style редактируемой ссылки.

По такому принципу калибруем все ссылки.

BMW

Затем убираем бордеры.

Верстка закончена, дело за анимацией.

JavaScript

В разделе «Метод», этой статьи описан принцип работы скрипта. В самом скрипте прокомментировано каждое событие и действие. Внимательно изучаем!

Вот и готово.

Для закрепления материала:

Что бы окончательно разобраться в этом уроке, я рекомендую модернизировать это приложение следующим образом:

При помощи отлавливания события – «загрузка картинки» ($(‘img’).load()), сделайте так, чтобы машина не появлялась, пока все картинки не загрузятся.

Пока картинки не загрузились, в центре дива .slide должна крутится вот эта гифка:

BMW

Соответственно навигация сверху, тоже должна появится только после загрузки картинок.

Область применения

Наиболее вероятная область применения – это безусловно Интернет магазины. Разобрать на запчасти можно как автомобиль, так и компьютер, одежду на модели, экипировку игрового персонажа и тому подобное. Если элемент уж слишком фигуристый, ссылку над ним можно построить из нескольких блоков.

Применяйте и модернизируйте!

Ваши вопросы и отзывы жду в комментариях

С уважением Михаил Беляев.

Автор: Михаил Беляев.

Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (35)