#javascript #html #css
#javascript #HTML #css
Вопрос:
я пытаюсь сделать так, чтобы изображение появлялось при наведении курсора мыши на текст. Изображение не обязательно должно появляться вместо текста, но в другом месте.
Идея заключается в следующем: при наведении курсора мыши на слово «Google» логотип Google должен отображаться в красном поле, при наведении курсора мыши на слово «OneNote» логотип OneNote должен отображаться в красном поле. Шаг 1
Я попытался сделать это, следуя этой логической :
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<img id="img1" onmouseover="setImg()" onmouseout="unSetImg()" src="https://i1.wp.com/www.grapheine.com/wp-content/uploads/2015/09/nouveau-logo-google.gif?fit=1950,1200amp;quality=90amp;strip=allamp;ssl=1" width="300">
</body>
<script type="text/javascript">
function setImg(){
document.getElementById("img1").src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSU48ifXX9Kar3IFVrlfwx6UFLqaQno8rCebFvGtwk6yWky9_mz";
}
function unSetImg(){
document.getElementById("img1").src="https://i1.wp.com/www.grapheine.com/wp-content/uploads/2015/09/nouveau-logo-google.gif?fit=1950,1200amp;quality=90amp;strip=allamp;ssl=1";
}
</script>
</html>
Тогда это работает, но только когда мы заменяем изображение другим изображением, но если я адаптирую свой код, заменяющий изображение google текстом, это не сработает!
Может кто-нибудь сказать мне, что использовать, потому что я не нашел ничего, что соответствовало бы тому, что я хочу!
Спасибо
Лукас
Комментарии:
1. Можно ли вместо этого использовать CSS? Вы должны быть в состоянии сделать это без JS, в зависимости от структуры и цели.
2. «но если я заменю изображение текстом, это не сработает» -> что вы имеете в виду под этим? какое изображение вы заменяете текстом?
3. @KrishnaPrashatt хороший вопрос .
4. Ваш HTML неверен. Исправьте это в первую очередь.
5. Да, извините, я изменил это предложение. Я имею в виду, я пытался заменить логотип Google текстом, и это не сработало, текст не меняется на логотип onenote!
Ответ №1:
Вы могли бы сохранить img src в атрибуте данных элемента, на который будет наведен указатель мыши. Затем при наведении курсора установите для img.src значение data-logo
наведенного элемента.
var elems = document.querySelectorAll("#thing li");
var logo = document.querySelector("#thing .logo");
elems.forEach(function(elem) {
elem.addEventListener("mouseover", function() {
logo.src = elem.getAttribute("data-logo");
});
elem.addEventListener("mouseout", function() {
logo.src = "";
});
});
img.logo {
border: 2px dotted red;
height: 50px;
min-height: 50px;
min-width: 50px;
}
<div id="thing">
<img class="logo" />
<ul>
<li data-logo="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png">Google</li>
<li data-logo="https://learn.microsoft.com/en-us/graph/images/onenotelogobgs.png">OneNote</li>
</ul>
</div>
Комментарии:
1. Идеально, ты такой замечательный!
Ответ №2:
.hovercontainer {
width: 500px;
margin: 0 auto;
position: relative;
height: 170px;
}
.hovercontainer p{
position:absolute;
top:50%;
text-align: center;
left:0;
right:0;
margin:0 auto;
z-index:10;
}
.hovercontainer img{
width:90%;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
opacity:0;
position: relative;}
.hovercontainer p:hover ~ img{
opacity:1
}
.hovercontainer p:hover{
opacity:0;
}
<div class="hovercontainer">
<p>Text</p>
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSU48ifXX9Kar3IFVrlfwx6UFLqaQno8rCebFvGtwk6yWky9_mz" alt="" />
</div>
Комментарии:
1. Это не совсем то, чего я ожидал, но спасибо за ваше время!