Только потому, что я сторонник; Вы можете упростить свой код JS, сократив количество повторений кода, используя лучший селектор. Вы можете связать селекторы, используя запятую для их разделения.
<script type="text/javascript">
jQuery(document).ready(function ($) { //fire on DOM ready
$('#mainproductpicture').addpowerzoom({
defaultpower: 2,
powerrange: [2, 5],
largeimage: null,
magnifiersize: [200, 200] //<--no comma following last option!
})
$('#smallpictureone, #smallpicturetwo, #smallpicturethree, #smallpicturefour, #smallpicturefive').click(function () {
$("#mainproductpicture").attr("src", $(this).attr("src"));
$('#mainproductpicture').addpowerzoom({
defaultpower: 2,
powerrange: [2, 5],
largeimage: null,
magnifiersize: [200, 200] //<--no comma following last option!
})
});
});
</script>
Но вы могли бы сделать еще лучше, вообще не нацеливаясь на эти идентификаторы и используя вместо этого класс. например:
$('.smallpicture').click(function(){ /* ... */ });
Вы также можете уменьшить количество повторений, предварительно объявив параметры «addpowerzoom» и повторно используя ссылку на переменную. например:
var powerZoomOpts = {
defaultpower: 2,
powerrange: [2, 5],
largeimage: null,
magnifiersize: [200, 200]
};
Затем в вашем звонке для инициализации плагина Power Zoom:
$('#mainproductpicture').addpowerzoom(powerZoomOpts);
Но подождите! Есть еще кое-что. Вы также можете подключить powerzoom к вызову attr()
на линии до этого. например:
$("#mainproductpicture").attr("src", $(this).attr("src")).addpowerzoom(powerZoomOpts);
Для окончательного результата:
<script type="text/javascript">
jQuery(document).ready(function ($) { //fire on DOM ready
var powerZoomOpts = {
defaultpower: 2,
powerrange: [2, 5],
largeimage: null,
magnifiersize: [200, 200]
};
$('#mainproductpicture').addpowerzoom(powerZoomOpts);
$('.smallpicture').click(function () {
$("#mainproductpicture").attr("src", $(this).attr("src")).addpowerzoom(powerZoomOpts);
});
});
</script>
Разве это не выглядит намного лучше?
Для постепенного исчезновения (как уже говорили) у вас должно быть два img
элемента. Один расположен над другим. Нижнее изображение должно начинаться скрыто от просмотра изображением сверху. У него еще не будет атрибута src
.
Второй шаг - изменить src
нижнего img
на изображение, к которому вы хотите перейти изображение. Тогда вы .fadeOut(200)
верхнее изображение. Используйте функцию обратного вызова, чтобы изменить атрибут src
верхнего изображения на атрибут src
нижнего изображения, чтобы "залить" набор изображений для следующего перекрестного затухания.
Вот пример:
var $topimg = $('#topimage');
var $bottomimg = $('#bottomimage'); /* cache $topimg & $bottomimg jQuery objects for later use */
$('.fadeable-images').click(function(e){
$bottomimg.attr('src', $(this).attr('src'));
$topimg.fadeOut(200, function(){
$topimg.attr('src', $bottomimg.attr('src')).show();
});
});
Остальное - CSS для выравнивания двух тегов изображения в соответствующих позициях.