#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я пытаюсь использовать платформу Shopify для небольшого коммерческого сайта. У меня есть большая часть сайта, однако на моей главной странице коллекции я хочу иметь эффект наведения изображения для передней / задней части элемента. В настоящее время мой html выводится следующим образом с первым и вторым элементом в списке продуктов в div. Это работает вроде. По сути, я хочу, чтобы изображение исчезало при загрузке страницы, а при наведении курсора на fadeout затем исчезало на втором изображении в div, при наведении курсора листья возвращаются к исходному изображению.
.html
<div class="image">
<a href="{{ product.url | within: collection }}">
<img src="{{ product.featured_image.src | product_img_url: 'large' }}" alt="{{ product.featured_image.alt | escape }}"class="img-responsive collectionItem">
<img src="{{ product.images[1] | product_img_url: 'large' }}" alt="{{ product.title | escape }}" class="img-responsive collectionItem" style="display:none"/>
</a>
</div>
.js
$('.collectionItem').hover(function() {
$(this).fadeOut();
$(this).next('img').stop(true, true).fadeIn('slow');
}, function() {
$(this).next('img').fadeOut();
$(this).stop(true, true).fadeIn('slow');
});
Комментарии:
1. Примечание: повторение
$(this)
селекторов — пустая трата времени на обработку. Используйте локальную переменную (при минимизации код также короче в качестве бонуса).2. планировал это, как только я понял, что лучший способ правильно исчезать и исчезать без мерцания
Ответ №1:
JSFiddle: http://jsfiddle.net/TrueBlueAussie/49fpX/1 /
Вам нужно связать fade out
и fade in
, чтобы избежать странных результатов. Также обычно лучше поместить указатель мыши на элемент, который будет существовать все время, поскольку некоторые браузеры делают странные вещи, когда элемент наведения исчезает:
function swapImg($container) {
var $image = $container.find('img:visible');
var $image2 = $image.siblings();
$image.stop().fadeOut(function(){
$image2.stop().fadeIn();
});
}
$('.image').hover(function () {
swapImg($(this));
}, function () {
swapImg($(this));
});
Комментарии:
1. создание отдельной функции было правильным решением. таким образом, он также может использоваться повторно на сайте. Большое спасибо, я бился головой о стену.