#javascript #html #css
#javascript #HTML #css
Вопрос:
Итак, у меня есть этот класс div:
<div id="object1">
<div class="title" onmouseover="hoverImage(event)">SPT 3</div>
</div>
И за пределами этого div у меня есть другой div с изображением:
<div class="hover_img" id="hover_img">
<img src="img/sptgoal.PNG">
</div>
CSS-код для центрирования изображения:
.hover_img {
position:relative;
height: 100%;
width:100%;
z-index: 99;
}
.hover_img img {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display:none;
}
Я хочу, чтобы изображение было видно только при наведении курсора мыши на div. Это код Javascript, который у меня есть:
function hoverImage() {
var x = document.getElementById("hover_img");
x.style.display = "block";
}
Но при наведении курсора мыши ничего не отображается. Что я здесь делаю не так?
Ответ №1:
При document.getElementById("hover_img")
этом отображается не изображение, а контейнер вокруг него ( hover_img
). Но вы скрыли изображение ( .hover_img img
) в своем CSS.
Используется document.querySelectorAll("#hover_img>img")
для выбора вашего изображения. querySelectorAll вернет список узлов, поэтому вы должны использовать x[0]
для выбора первого элемента в списке.
function hoverImage(event) {
var x = document.querySelectorAll("#hover_img>img");
var sDisplay = (event.type === "mouseout") ? "none" : "block";
x[0].style.display = sDisplay;
}
.hover_img {
position:relative;
height: 100%;
width:100%;
z-index: 99;
}
.hover_img img {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display:none;
}
<div id="object1">
<div class="title" onmouseover="hoverImage(event)" onmouseout="hoverImage(event)">SPT 3</div>
</div>
<div class="hover_img" id="hover_img">
<img src="https://picsum.photos/200/300">
</div>
Комментарии:
1. Потрясающе! Но почему изображение не исчезает, когда больше не зависает?
2. Нет события для скрытия изображения. Проверьте мой ответ, я его отредактировал. Теперь в теге div есть событие onmouseout, и в функции hoverImage проверяется, какое событие вызывается
Ответ №2:
проблема в том, что при выборе элемента вам нужно выбрать элемент изображения для изменения свойства отображения, а не тега div.
я надеюсь, что это полная помощь
Blockquote
function hoverImage() {
var x = document.getElementById("hover_img");
x.children[0].style.display = "block";
}
.hover_img {
position:relative;
height: 100%;
width:100%;
z-index: 99;
}
.hover_img img {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display:none;
}
<div id="object1">
<div class="title" onmouseover="hoverImage(event)">SPT 3</div>
</div>
<div class="hover_img" id="hover_img">
<img src="img/sptgoal.PNG">
</div>
Ответ №3:
вы должны выбрать другой идентификатор для img:
<div class="hover_img" id="hover_img">
<img src="img/sptgoal.PNG" id="image1">
</div>
и используйте этот идентификатор в вашем Java-скрипте:
function hoverImage() {
var x = document.getElementById("image1");
x.style.display = "block";
}