Плавная замена одного изображения другим с использованием спрайта CSS
Использование смены изображений очень легко выполнить с помощью CSS. Задаем элементу фоновое изображение, а затем в его псевдо элементе :hover
изменяем background-image
. Самым лучшим способом будет совмещение обоих изображений в одно и использование сдвига в background-position.
Такая техника называется спрайтом CSS. А если нам нужно плавно заменять одно изображение на другое без резких сдвигов?
Решение задачи заключается в использовании дополнительного элемента поверх оригинала с нулевым значением свойства opacity
и значением свойства background-position,
установленным в нужное значение. Затем в псевдо элементе :hover
плавно изменяем прозрачность. Есть три метода сделать указанное действие. Покажем на примере маленькой стрелочки.
Поместим элемент span
в оригинальный элемент. Данный элемент span
будет отображать активированное состояние. Да, излишняя разметка - плохо, но нам нужен дополнительный элемент, а псевдо элемент не поддерживает переходы в большинстве браузеров.
<a href="#" class="arrow">Стрелочка<span></span></a>
Стрелка использует замещение изображений CSS и расположение фона в позицию по умолчанию.
.arrow { display: inline-block; position: relative; text-indent: -9999px; width: 36px; height: 36px; background: url(sprites.png) no-repeat; }
Здесь используется относительное позиционирование для элемента span
, который будет позиционироваться абсолютно с тем же самым размером. Положение фона будет сдвигаться на место для смены изображений. Его прозрачность устанавливается в ноль и будут использоваться трансформации CSS3 для размещения его на место.
.arrow span { position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: url(sprites.png) no-repeat; background-position: -50px 0; opacity: 0; -webkit-transition: opacity 0.5s; -moz-transition: opacity 0.5s; -o-transition: opacity 0.5s; }
Затем при активации элемента изменяется прозрачность:
.arrow:hover span { opacity: 1; }
Способ второй (на пике технологий)
Единственная причина, по которой мы используем элемент span -
на момент написания урока только Firefox 4 поддерживал трансформации для псевдо элементов. Логично предполагать, что в будущем WebKit и другие браузеры также будут их поддерживать. Мы можем изменить разметку следующим образом:
<a href="#" class="arrow">Стрелочка</a>
А код CSS практически такой же, только мы используем :after
вместо span:
.arrow:after { content: ""; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: url(sprites.png) no-repeat; background-position: -50px 0; opacity: 0; -webkit-transition: opacity 0.5s; -moz-transition: opacity 0.5s; -o-transition: opacity 0.5s; } .arrow:hover:after { opacity: 1; }
Способ третий (поддерживаем наработки)
Некоторые браузеры не поддерживают ни псевдо элементы, ни трансформации. Если нужно сохранить кросс-браузерность приложения, то придется использовать избыточную разметку HTML и полагаться на JavaScript (jQuery...). Снова возвращаемся к элементу span.
<a href="#" class="arrow">Стрелочка<span></span></a>
Код CSS почти такой же, как и для выше обозначенных методов, но существенно упрощен, так как мы не используем псевдо классы и трансформации.
.arrow { display: inline-block; position: relative; text-indent: -9999px; width: 36px; height: 36px; background: url(sprites.png) no-repeat; } .arrow span { position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: url(sprites.png) no-repeat; background-position: -50px 0; }
jQuery будет управлять затуханием. Сначала мы скрываем элемент span
, затем присоединяем функции для обработки событий mouseenter
и mouseleave
через функцию hover
для реализации затухания.
$(function() { $(".arrow3") .find("span") .hide() .end() .hover(function() { $(this).find("span").stop().fadeIn(); }, function() { $(this).find("span").stop().fadeOut(); }); });
Все три способа использованы на странице демонстрации.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/bbGJSGdCYkc/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
- 2024-01-18 » Мифический человеко-DevOps
- 2023-12-28 » Google подвел итоги 2023 года в поиске
- 2023-12-28 » 5 ошибок отдела продаж, из-за которых вы теряете клиентов
- 2023-12-28 » Американский суд признал монополию Google на рынках дистрибуции Android-приложений
- 2023-12-28 » Хостинг-провайдер GoDaddy перестанет оказывать услуги пользователям из России
Сейчас только тот является менеджером, кто заставляет знания работать. |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.