Я хочу взять цветной значок (и будет ссылкой) и повернуть его в оттенки серого, пока пользователь не наведет указатель мыши на значок (где он затем раскрасит изображение).
Возможно ли это сделать и таким образом, который поддерживается IE и Firefox?
Я хочу взять цветной значок (и будет ссылкой) и повернуть его в оттенки серого, пока пользователь не наведет указатель мыши на значок (где он затем раскрасит изображение).
Возможно ли это сделать и таким образом, который поддерживается IE и Firefox?
Ответы:
Для этого существует множество способов, которые я подробно расскажу на нескольких примерах ниже.
img.grayscale {
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}
img.grayscale:hover {
filter: none;
-webkit-filter: grayscale(0%);
}
Вы можете найти статью об этой технике здесь .
Для этого подхода требуются две копии изображения: одна в оттенках серого, а другая - в полноцветном. Используя :hoverпсевдоселектор CSS , вы можете обновить фон своего элемента, чтобы переключаться между ними:
#yourimage {
background: url(../grayscale-image.png);
}
#yourImage:hover {
background: url(../color-image.png};
}
Этого также можно добиться с помощью эффекта наведения на основе Javascript, такого как hover()функция jQuery, аналогичным образом.
Библиотека обесцвечивания - это общая библиотека, которая позволяет легко переключаться между версией в градациях серого и полноцветной версией данного элемента или изображения.
Ответ здесь: преобразовать изображение в оттенки серого в HTML / CSS
Вам даже не нужно использовать два изображения, которые звучат как боль, или библиотеку манипуляций с изображениями, вы можете сделать это с поддержкой кроссбраузерности (текущие версии) и просто использовать CSS. Это прогрессивный подход к улучшению, который просто возвращается к цветным версиям в старых браузерах:
img {
filter: url(filters.svg#grayscale);
/* Firefox 3.5+ */
filter: gray;
/* IE6-9 */
-webkit-filter: grayscale(1);
/* Google Chrome & Safari 6+ */
}
img:hover {
filter: none;
-webkit-filter: none;
}
и файл filters.svg вот так:
<svg xmlns="http://www.w3.org/2000/svg">
<filter id="grayscale">
<feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0" />
</filter>
</svg>
Я использую следующий код на http://www.diagnomics.com/
Плавный переход от ч / б к цветному с эффектом увеличения (шкала)
img.color_flip {
filter: url(filters.svg#grayscale); /* Firefox 3.5+ */
filter: gray; /* IE5+ */
-webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */
-webkit-transition: all .5s ease-in-out;
}
img.color_flip:hover {
filter: none;
-webkit-filter: grayscale(0);
-webkit-transform: scale(1.1);
}
Вот демо. Работает даже в IE7:
http://james.padolsey.com/demos/grayscale/
а также
http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/