Вместо того чтобы сохранять полупрозрачные PNG, я сохраняю полностью непрозрачные версии (рис. 3.17
), которые могу менять в браузере. Кроме того что такой подход экономит время, он также позволяет выставлять разные уровни прозрачности в состояниях:hover
, :focus
и :active
, избавляя от необходимости создавать несколько наборов изображений.Рис. 3.17.
PNG-файлы с логотипами – полностью белыеОформление списка
Первые фрагменты оформления отцентрируют картинки в футере и поместят их горизонтально (рис. 3.18
):Рис. 3.18.
Белые PNG, отцентрированные в футере#footer-logos {
text-align: center;
}
#footer-logos li {
display: inline;
}
Теперь выставим такие значения свойства opacity
:hover
и:focus
.#footer-logos a img {
opacity: 0.25;
}
#footer-logos a: hover img,
#footer-logos a: focus img {
opacity: 0.6;
}
Мы выставили картинкам непрозрачность в 25%; при наведении или получении фокуса непрозрачность поднимается до 60% (рис. 3.19
). Крайне просто, не так ли? И для такого эффекта нужен лишь один набор картинок.Заметим, что свойство opacity
opacity
, но существует хакерское решение для тех, кто не прочь окунуться в дебри проприетарности.opacity: хак для IE
К счастью, opacity
filter
от Microsoft.Обычно я бы не стал предлагать использовать свойство filter
filter
может повлечь за собой существенные проблемы производительности в зависимости от того, где и как часто оно используется. Это хак – но он решает проблему.При условии, что вышесказанное понятно, и выделяя это свойство в отдельный стилевой файл или иначе аккуратно комментируя его, filter
Вот как он работает:
#footer-logos a img {
border: none;
opacity: 0.25;
-ms-filter: "progid: DXImageTransform.Microsoft.
Alpha(Opacity=25)";
filter: alpha(opacity = 25);
}
#footer-logos a: hover img,
#footer-logos a: focus img {
opacity: 0.6;
-ms-filter: "progid: DXImageTransform.Microsoft.
Alpha(Opacity=60)";
filter: alpha(opacity = 60);
}
Синтаксис похож: значение opacity вставляется в альфа-фильтр IE. Обратите внимание: IE8 игнорирует свойство filter
-ms-filter
с некоторыми дополнительными некрасивыми значениями.Воспользовавшись хаками, мы добились такого же результата в IE (рис. 3.20
). Повторюсь – если решили использовать хаки, пользуйтесь ими с умом. Но реальность заключается в том, что, скорее всего, вам придется использовать хаки, если какой-либо ваш сайт показывает значительный трафик с IE (так обстоит ситуация с большинством сайтов).Рис. 3.20.
Футер в IE7 показывает псевдосвойство opacity с использованием хака filterДобавим переход
Наконец, наложим переход на свойство opacity
Добавим знакомые строки transition
opacity
. Сделаем его быстрым (0,2 секунды) и выставим временную функцию ease-in-out.#footer-logos a img {
opacity: 0.25;
-ms-filter: "progid: DXImageTransform.Microsoft.
Alpha(Opacity=25)"; /* IE 8 hack */
filter: alpha(opacity = 25);
-webkit-transition: opacity 0.2s ease-in-out;
-moz-transition: opacity 0.2s ease-in-out;
-o-transition: opacity 0.2s ease-in-out;
transition: opacity 0.2s ease-in-out;
}