Как изменить атрибут src у img при наведении?Eсть-ли варианты реализации на чистом css?Если нет - то и js подойдёт.
Для <img />
нужен js
. Изображение при наведении можно задать в data атрибут, в котором будет лежать ссылка на второе изображение, а чтобы постоянно не обращаться к dom
, можно хранить оба src в замыкании:
function createHoverImage() {
document.querySelectorAll('[data-hover-src]').forEach((img) => {
const src = img.getAttribute('src');
const srcH = img.getAttribute('data-hover-src');
img.addEventListener('mouseover', () => {img.src = srcH;})
img.addEventListener('mouseout', () => {img.src = src;})
});
}
createHoverImage();
<img id="img" src="https://via.placeholder.com/150/0000FF" data-hover-src="https://via.placeholder.com/150/FF0000" />
<img id="img" src="https://via.placeholder.com/150/FFFF00" data-hover-src="https://via.placeholder.com/150/000000" />
Через css можно при помощи background
у элемента:
div {
position:absolute;
width:100px;
height:100px;
background: url('https://picsum.photos/id/2/100/100');
}
div:hover {
background: url('https://picsum.photos/id/1/100/100');
}
<div></div>
если все же нужен img
, то через js
img.addEventListener('mouseover', e => img.src = "https://picsum.photos/id/2/100/100");
img.addEventListener('mouseout', e => img.src = "https://picsum.photos/id/1/100/100");
<img id="img" src="https://picsum.photos/id/1/100/100" />
Пример с content: url(...);
:
img {
max-width: 100%;
}
img:hover {
content: url(https://images.unsplash.com/photo-1562849227-64f2b4d72b9c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=600&q=60);
}
<img src="https://images.unsplash.com/photo-1558981408-db0ecd8a1ee4?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=600&q=60" alt="">
Но лучше все же через background
или js.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Необходимо увеличить длину массива, дублируя элементы, до тех пор, пока его длина не станет требуемой