Эффект плавного перехода от черно-белого к цветному изображению с помощью jQuery
Об эффекте
Эффект довольно прост, его в основном создают два изображения, расположенные друг на друге посредством CSS. Когда пользователь помещает курсор на изображении, с помощью JQuery верхнее изображение исчезает, и появляется цветное. Такого же эффекта можно добиться на HTML5, но я уверен, что потребуется намного больше кода для этого, в будущем я может коснусь этой темы.
Приступаем к работе...
Создайте новый HTML-файл с подключением библиотеки JQuery и прилагаемыми в архиве стилями
Code
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Greyscale To Color jQuery Transition</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<img src="file:///C|/Users/gaffer/Desktop/greyscale_color_transition/01.gif" width="580" height="600">
</body>
</html>
Внутри тела HTML-документа создайте простой маркированный список. Внутри каждого элемента списка вставьте два изображения одного и того же размера, одно должно быть цветным, а другое черно-белым. Если вы хотите, чтобы изначально изображения были черно-белого цвета (переход от черно-белого к цветному), поместите черно-белое изображение в списке первым, если вы хотите, чтобы эффект был обратным, от цветного к черно-белому, поместите изображения наоборот.
Задайте каждому цветному изображению класс "color", а каждому черно-белому изображению класс «grey». Код должен выглядеть следующим образом.
Code
<ul class="gallery">
<li>
<img src="images/01_grey.gif" class="grey" />
<img src="images/01_color.gif" class="color" />
</li>
<li>
<img src="images/02_grey.gif" class="grey" />
<img src="images/02_color.gif" class="color" />
</li>
</ul>
CSS стили
Добавьте следующие стили CSS
Code
.gallery li {
float: left;
margin-right: 20px;
list-style-type: none;
margin-bottom: 20px;
display: block;
height: 130px;
width: 130px;
position: relative;
}
img.grey {
position: absolute;
left: 0;
top: 0;
z-index: 10;
}
img.color {
position: absolute;
left: 0; top: 0;
}
Стили для элементов списка (.gallery li) позиционируют их в ряд, важную роль здесь играет "position: relative", без этого изображения в галерее будут просто налазить друг на друга.
Это набор наиболее важных стилей для изображений.
JQuery
Создайте пустой .js файл, затем скопируйте и вставьте код.
Code
$(document).ready(function(){
$("img.grey").hover(
function() {
$(this).stop().animate({"opacity": "0"}, "slow");
},
function() {
$(this).stop().animate({"opacity": "1"}, "slow");
});
});
Сохраните .js файл как "transition.js" в папку под названием "js". После сохранения подключите ссылку на js файл в секции HEAD HTML-файла.
Code
<script type="text/javascript" src="js/transition.js"></script>
В данном коде jQuery показано, что как только вы наводите курсор мыши на изображение с классом "grey", уменьшается непрозрачность до 0%, показывая цветное изображение внизу.
Code
$(document).ready(function(){
$("img.grey").hover(
function() {
$(this).stop().animate({"opacity": "0"}, "slow");
},
Следующая часть кода возвращает непрозрачность на 100%, когда мышь убирается с изображения.
Code
function() {
$(this).stop().animate({"opacity": "1"}, "slow");
});
});
Заключение
Так что вы думаете? Вы бы использовали эту технику в своих проектах? Позвольте мне узнать в комментариях ниже.
Перевод и описание: PS-Studio.Info
Всего комментариев: 6

в решении, представленном на сайте,вся соль заключается в плавном переходе
Спасибо, я нашёл чуть другое решение
Но и вашему решению я найду применение =)
к сожалению, видимо авторесайз возможен только скриптом и то скорее на php, а так средствами ucoz можно лишь выставить в настройках модуля размеры мини-изображения ,к примеру, те же 130х130 и метод: "Обрезание фото", но такая установка будет действовать только на вновь добавленные фото.
Если делать обособленную страницу, то тогда подгонять размеры фото вручную, чтобы пропорции сохранить...
Нужно плясать от того, что именно вы хотите реализовать и для какого модуля системы.
Да, на uCoz всё работает замечательно со своей библиотекой. Только у меня ещё 1 вопрос, по поводу размера картинок. В файле .css прописано height: 130px; width: 130px; так вот, пока я не прописал конкретный размер картинки оно было криво, дело в том что многие картинки бывают других размеров, как тогда быть? Пожно ли как то решить эту проблемку?
на ucoz не тестировал,не знаю,но думаю,что это <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> подключать не нужно будет, там есть своя подключенная библиотека jquery 1.6.1
насчёт картинок, их размеры могут быть другими,главное чтобы размеры черно-белого и цветного варианта совпадали
Отличный скрипт, только у меня вопрос, на uCoz нужно подключать это <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
И картинки должны быть все только определённого размера? например как в примере только 130х130 ?