Вопрос

Чего я хочу достичь:

Я хочу сначала произойти обмен изображением, когда курсор находится над изображением (мышь), а во -вторых, когда изображение нажимается (нажмите на мышь вниз).

Пример:

У меня есть изображение зеленой стрелы. Для заполнения мыши она заменена на изображение желтой стрелки и при щелчке меняет изображение коричневой стрелки (но только до тех пор, пока щелчок проводится). Зеленая стрелка по умолчанию всегда восстанавливается.

<img src="green-default.png" />
<img src="yellow-over.png" />
<img src="brown-mousedownclick.png" />

Что я пробовал:

Я применил обмен изображением jQuery, который работает на мышке над событием:

https://github.com/tszming/jquery-swapimage

Пример

<script type="text/javascript"> 
jQuery.swapImage(".swapImage"); 
</script>

<img src="green-default.png" class="swapImage {src: 'yellow-over.png'}" />

Любой совет будет апрецирован.

Принятое решение

Решение Сенада (ниже) влечет за собой использование CSS вместо jQuery. Элементу ссылки дается класс, который стилизует его блоком в размерах замены изображений. Три изображения применяются в качестве фоновых изображений к по умолчанию, падению и активным состояниям элемента ссылки. Решение и демонстрационный код Сенада размещены ниже.

Это было полезно?

Решение

Я бы пошел с CSS

CSS

a.your_link_button_class { 
   background: url('green-default.png') no-repeat;
   height: 20px;
   width: 20px;
   display: block;
}
a.your_link_button_class:HOVER {
   background: url('yellow-over.png') no-repeat;
}
a.your_link_button_class:ACTIVE {
   background: url('brown-mousedownclick.png') no-repeat;
}

HTML

<a class="your_link_button_class" href="#nothing"></a>

Если вам нужен курсор указателя, вы также можете добавить его через CSS cursor: pointer;

Это будет для всех ссылок с классом "your_link_button_class"

и в jQuery, чтобы предотвратить действия ссылки

$(document).ready(function() { $('a.your_link_button_class').click( function() { return false; }); });

Другие советы

Я бы пошел с предварительные изображения с использованием jQuery сначала, а затем обязательный hover а также mousedown на вашей img элемент и изменение атрибута SRC на правильное изображение.

я хотел бы использовать hover Поскольку это будет справляться mouseout так же как mouseover.

Поскольку я использую mousedown Я бы также использовал mouseup Чтобы изменить IMG обратно.

ОБНОВИТЬ

Вам не нужно использовать jQuery для hover Эффект, вы можете сделать это с CSS. Затем на mousedown а также mouseup Измените классы CSS для достижения желаемых эффектов.

Свяжитесь с Mouseover/Out и Mousedown/Up и сохраните штаты, чтобы мыши-эвета не удалили коричневую икону, пока мышь-пушина еще не работает. Затем вызовите функцию и посмотрите, если нажатой к мыше, или мышь через значок. Если нет, установите изображение по умолчанию.

$('#img').mouseover(function() {
    $(this).data('over',true);
    updateImage($(this));
}).mousedown(function() {
    $(this).data('down',true);
    updateImage($(this));
}).mouseup(function() {
    $(this).data('down',false);
    updateImage($(this));
}).mouseout(function() {
    $(this).data('over'false);
    updateImage($(this));
});

function updateImage(elem) {
    if (elem.data('down')) {
        elem.attr('src','brown.png');
    } else if (elem.data('over')) {
        elem.attr('src','yellow.png');
    } else {
        elem.attr('src','green.png');
    }
}

Вы можете использовать hover метод вместе с mousedown а также mouseup события и просто измените src атрибут изображения соответствующим образом:

$("#yourImageId").hover(function() {
    $(this).attr("src", "yellow-over.png");
}, function() {
    $(this).attr("src", "green-default.png");
}).mousedown(function() {
    $(this).attr("src", "brown-mousedownclick.png");
}).mouseup(function() {
    $(this).attr("src", "green-default.png");
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top