—»     —»   Эффект при наведении на изображение с помощью HTML5 и jQuery
  Раздел: Tips and Tricks   Комментариев: 5  

Эффект при наведении на изображение с помощью HTML5 и jQuery



Когда-то все черно-белые изображения нужно было вручную конвертировать для дальнейшего применения на веб-странице. Теперь, с приходом HTML5, изображения можно сконвертировать в ч/б практически в автоматическом режиме и без применения специального ПО. Мы предлагаем вам демо-файл, где вы можете наблюдать как посредством HTML5 & jQuery цветные изображения динамически превращаются в черно-белые (посмотреть демо).

Цель

В данном демо показано, каким образом можно реализовать эффект превращения изображения из цветного в черно-белое и наоборот посредством HTML5 и jQuery. Для достижения данного эффекта, до появления HTML, нужно было 2 изображения: цветное и черно-белое. Теперь HTML5 упростил нашу задачу, так как черно-белое изображение реализуется за счет цветного оригинала. Надеемся, что данный скрипт окажется полезным для вас и ваших дизайнов.

Эффект при наведении на изображение с помощью HTML5 и jQuery

Код jQuery

Предложенный ниже код jQuery будет использовать целевое изображение, и создавать черно-белую копию. При наведении на черно-белое изображение, оно будет становиться цветным.


<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">

    // On window load. This waits until images have loaded which is essential
    $(window).load(function(){

        // Fade in images so there isn't a color "pop" document load and then on window load
        $(".item img").fadeIn(500);

        // clone image
        $('.item img').each(function(){
            var el = $(this);
            el.css({"position":"absolute"}).wrap("<div class='img_wrapper' style='display: inline-block'>").clone().addClass('img_grayscale').css({"position":"absolute","z-index":"998","opacity":"0"}).insertBefore(el).queue(function(){
                var el = $(this);
                el.parent().css({"width":this.width,"height":this.height});
                el.dequeue();
            });
            this.src = grayscale(this.src);
        });

        // Fade image
        $('.item img').mouseover(function(){
            $(this).parent().find('img:first').stop().animate({opacity:1}, 1000);
        })
        $('.img_grayscale').mouseout(function(){
            $(this).stop().animate({opacity:0}, 1000);
        });
    });

    // Grayscale w canvas method
    function grayscale(src){
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');
        var imgObj = new Image();
        imgObj.src = src;
        canvas.width = imgObj.width;
        canvas.height = imgObj.height;
        ctx.drawImage(imgObj, 0, 0);
        var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
        for(var y = 0; y < imgPixels.height; y++){
            for(var x = 0; x < imgPixels.width; x++){
                var i = (y * 4) * imgPixels.width + x * 4;
                var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
                imgPixels.data[i] = avg;
                imgPixels.data[i + 1] = avg;
                imgPixels.data[i + 2] = avg;
            }
        }
        ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
        return canvas.toDataURL();
    }

</script>

Применение

Для того чтобы внести это на вашу страницу:

* внесите в документ копию jquery.js
* скопируйте предложенный выше код
* установите целевое изображение (например, .post-img, img, .gallery img, etc.)
* вы также можете изменять скорости анимации (например, 1000 = 1 секунде)

Эффект при наведении на изображение с помощью HTML5 и jQuery

Совместимость

Скрипт будет работать в любом браузере, где есть поддержка HTML5 и javascript (например, Chrome, Safari и Firefox). Если поддержка HTML5 отсутствует, то браузер всегда будет показывать оригинальное изображение. Учтите: если скрипт не будет работать в браузерах Firefox и Chrome на локальном компьютере, то попробуйте загрузить страницу на веб-сервер.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: HTML 5, jQuery
Опубликовал Mysterious Master   Прочитано (раз): 23581   |   Оставлено комментариев: 5
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Комментарий #1: 27 марта 2011 @ 20:22
Написал: Владимир — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
А как сделать наоборот? Чтобы изначально изображения были цветными, а при наведении черно-белыми.
Подскажите, пожалуйста!
Комментарий #2: 25 октября 2011 @ 11:31
Написал: Артур — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Спасибо, давно искал =)
Комментарий #3: 29 января 2012 @ 19:35
Написал: Виктор — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Ну и причем тут html5 все делается через jquery... бред...
Комментарий #4: 7 июля 2012 @ 22:08
Написал: Миша — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Реально раздражает... Есть такие уникумы которые пишут «А вот здесь пишем HTML5», и js пошел...
Комментарий #5: 9 сентября 2012 @ 23:32
Написал: Vova — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
to Миша: поддерживаю уникумов, почитайте документацию, объект Canvas доступен только в HTML5 а также работа с изображениями. HTML5 это новые объекты с новыми свойствами которые управляются при помощи javascript, jQuery используется потому что - удобно tongue
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Национальная денежная единица США
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Сентябрь 2017    »
ПнВтСрЧтПтСбВс
 123
45678910
11121314151617
18192021222324
252627282930