Mouseover и Mouseout
Здравствуйте! Не судите строго. Сделал примитивно, чтобы при наведении на элемент менялась картинка, как сделать чтобы не прописывать onmouseover и onmouseout в самом теге, а прописать функцию. Подскажите, пожалуйста
<li class="item-slider-item" onmouseover="document.getElementById('1').src='/2.jpg'" onmouseout="document.getElementById('1').src='/1.jpg'"></li> <img id="1" src="/1.jpg"/> <li class="item-slider-item" onmouseover="document.getElementById('2').src='/4.jpg'" onmouseout="document.getElementById('2').src='/3.jpg'"></li> <img id="2" src="/3.jpg" /> |
var li = document.querySelectorAll('li'); li[0].onmouseover = e => document.getElementById('1').src='/2.jpg'; li[0].onmouseout = e => document.getElementById('1').src='/1.jpg'; li[1].onmouseover = e => document.getElementById('2').src='/4.jpg'; li[1].onmouseout = e => document.getElementById('2').src='/3.jpg'; данную конструкцию можно будет сократить |
Андрей812,
:hover |
Спасибо!
|
С hover у меня как-то так получилось... Неизящно.
<style> li.item-slider-item:nth-child(1):after{ content:url(https://javascript.ru/cat/list/donkey.gif)} li.item-slider-item:nth-child(1):hover:after{ content:url(https://javascript.ru/cat/list/firefox.gif)} li.item-slider-item:nth-child(2):after{ content:url(https://javascript.ru/cat/list/jquery_54.png)} li.item-slider-item:nth-child(2):hover:after{ content:url(https://javascript.ru/cat/list/js.gif)} </style> <li class="item-slider-item"></li> <li class="item-slider-item"></li> |
вот так, похоже, лучше.
<style> </style> <li class="item-slider-item"></li> <li class="item-slider-item"></li> <script> var styles = '', images = [['https://javascript.ru/cat/list/donkey.gif','https://javascript.ru/cat/list/firefox.gif'],['https://javascript.ru/cat/list/jquery_54.png','https://javascript.ru/cat/list/js.gif']]; for (var i = 0; i < 2; i++) { styles += 'li.item-slider-item:nth-child(' + (i+1) + '):after{ content:url(' + images[i][0] + ')}'; styles += 'li.item-slider-item:nth-child(' + (i+1) + '):hover:after{ content:url(' + images[i][1] + ')}'; } document .querySelector('style').innerHTML = styles; </script> |
:write:
<style> li.item-slider-item{ width: 128px; height: 128px; background-size: cover; background-repeat: no-repeat; list-style: none; transition: .4s; } li.item-slider-item:nth-child(1){ background-image:url(https://javascript.ru/cat/list/donkey.gif)} li.item-slider-item:nth-child(1):hover{ background-image:url(https://javascript.ru/cat/list/firefox.gif)} li.item-slider-item:nth-child(2){ background-image:url(https://javascript.ru/cat/list/jquery_54.png)} li.item-slider-item:nth-child(2):hover{ background-image:url(https://javascript.ru/cat/list/js.gif)} </style> <ul> <li class="item-slider-item"></li> <li class="item-slider-item"></li> </ul> |
мои 5 копеек )
<style> /* debug purpose */ .item-slider-item { width: 30px; height: 30px; border: 1px solid #000; } </style> <li class="item-slider-item" data-destination="1" data-mouseover="/2.jpg" data-mouseout="/1.jpg"></li> <img id="1" src="/1.jpg" /> <li class="item-slider-item" data-destination="2" data-mouseover="/4.jpg" data-mouseout="/3.jpg"></li> <img id="2" src="/3.jpg" /> <script> document.querySelectorAll('.item-slider-item').forEach(item => { item.addEventListener('mouseover', function (e) { document.getElementById(e.target.dataset.destination).src = e.target.dataset.mouseover }) item.addEventListener('mouseout', function (e) { document.getElementById(e.target.dataset.destination).src = e.target.dataset.mouseout }) }) </script> |
Часовой пояс GMT +3, время: 09:00. |