2 753 Скрипты / Zoom

Эффект фотографирования

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

Проблемы с которыми столкнулись:

  • Эффект размытия, заблюривания. Решили данную проблему накладыванием множества DIV-ов с фоновым изображением и прозрачностью, каждый из которых смещается случайным образом на несколько пикселей.
  • Скрытие курсора. Решили проблему с помощью назначения пользовательского курсора в качестве которого используем просто прозрачный файл курсора .cur, а для Chrome пришлось сделать отдельный прозрачный курсор, но с одним белым пикселем, т.к. этот браузер отказывается работать с полностью пустым курсором, возможно в следующих версия проблема исчезнет. В Opera, к сожалению, от курсора избавиться не получилось, браузер в целом не поддерживает пользовательские курсоры, но всё остальное работает прекрасно.
  • Отсутвие поддержки масок. Эту проблему за нас решает плагин.

HTML

В шапке подключаем все необходимые нам файлы:

<link rel="stylesheet" type="text/css" href="styles.css" />
<link rel="stylesheet" type="text/css" href="photoShoot/jquery.photoShoot-1.0.css" />
<script type="text/jаvascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/jаvascript" src="photoShoot/jquery.photoShoot-1.0.js"></script>
<script type="text/jаvascript" src="script.js"></script>
По сути всю работу за нас выполняет плагин, но несколько настроек сделать придеться.
Создать контейнер #main и при желании добавить заголовок:
<div id="main">
    <h1>Эффект фотографирования на jQuery и CSS</h1>
</div>
Поместить этот контейнер можете в любое место на странице, но в файле стилей нужно будет указать фиксированную ширину и высоту, для того, чтобы все работало как надо.
После загрузки страницы инициализируется плагин и в этот контейнер вставляется дополнительный код:
<div id="main">
    <h1>Эффект фотографирования на jQuery и CSS</h1>
    <div class="blur" style="......"></div>
    <div class="blur" style="......"></div>
    <!--  Более 8 прозрачных div-ов -->
    <div class="overlay" style="opacity: 0.2;"></div>
    <div style="......" class="viewFinder">
        <img src="photoShoot/viewfinder.png" width="300" height="200">
    </div>
    <!-- Дополнительный  html для съемки вставляется тут . Не является частью плагина.  -->
</div>

Тут, как и говорилось выше, эффект размытия достигается наложением прозрачных DIV-ов.
Добавляется видоискатель, который следует за движением мыши по области и фокусирует фоновое изображение.
Плагин предоставляет пользовательскую настройку функции нажатия. Данной возможностью мы и воспользовались для имитации вспышки и вставки новой миниатюры (полученной фотки) в DIV - это не является частью плагина.

CSS

Плагин уже включает собственный файл стилей photoShoot/jquery.photoShoot-1.0.css, поэтому мы оформим оставшуюся часть страницы:

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

JS

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

  • Вставляет .album в #main div
  • Выбирает случайное изображение из массива (со стороннего сайта или из локальной папки)
  • Создает опции объекта
  • Определяет пользовательскую функцию съемки, которая вызывается по клику.
  • Вызывает плагин методом .photoshoot()

script.js


При каждом клике по области изображения, новый кадр добавляется к div-у слайдеру с отрицательным margin с правой стороны. После этого начинается анимация - последний кадр подталкивает снимки находящиеся левее, при этом пряча крайний левый.
Важно, чтобы кадры, которые не видны, удалились с помощью метода remove(), что предотвратит захламленность DOM не нужными элементами.
Вот и всё. Удачи.
Скачать 404Загрузок 423,95 Kb
Демо

Комментарии

  • Facebook
  • Вконтакте

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