Вот вызов:
У меня есть два div, наложенных друг на друга в файле HTML. Верхний div в основном прозрачен с использованием CSS, а нижний div имеет изображение в качестве фона. В mouseenter я хочу, чтобы верхний div исчез, а на mouseleave я хочу, чтобы верхний div вернулся.
$(document).ready(function() {
$('.dimmer').on('mouseenter', event => {
$(this).hide();
}).on('mouseleave', event => {
$(this).show();
});
});.experience {
background: url("cmu-110.png") no-repeat center;
height: 110px;
width: 110px;
z-index: 2;
}
.dimmer {
background: rgba(238, 238, 238, .25);
position: relative;
top: -128px;
z-index: 3;
}<div>
<div class = "experience"></div>
<div class = "dimmer"></div>
</div>Приведенный выше фрагмент кода jquery находится в отдельном файле и вызывается в заголовке HTML.
<head>
<!--- Some head stuff like title, meta, calling css in separate file, etc --->
<!--jquery-->
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src = "interaction.js"></script>
</head>Полная прозрачность: я новичок в jquery и впервые пытаюсь его использовать. Несмотря на то, что я проработал полный учебник по jquery codecademy, прочитал учебник w3C для школы, поискал другие сообщения stackoverflow и потратил более чем разумное количество времени, я не могу заставить это работать - вероятно, из-за глупой ошибки.
Спасибо за помощь!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я считаю, что jquery '.on ("mouseout", handler)' в нижнем div должно быть достаточно, чтобы сделать верхний div видимым / плавным.
Этот пост должен вам помочь: jquery .mouseover () и .mouseout () с исчезновением
Если нет (если это не сработает), я бы сделал / предложил:
Вы можете найти на этом форуме информацию о том, как написать функцию опроса setTimeout и т. д. Если у меня будет немного времени на выходных, я попробую ...
Поверьте, это помогает.
Вы можете установить свойство видимости css как скрытое и видимое в mouseenter и mouseleave. Я поставил некоторое пространство между двумя div, чтобы эффект был отчетливо виден.
$(document).ready(function() {
$('.dimmer').on('mouseenter', () => {
$('.dimmer').css("visibility","hidden");
}).on('mouseleave', () => {
$('.dimmer').css("visibility","visible");
});
});.experience {
background: red;
height: 110px;
width: 110px;
z-index: 0;
}
.dimmer {
background: blue;
position: absolute;
top: -10px;
height: 110px;
width: 110px;
z-index: 1;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<div class = "experience"></div>
<div class = "dimmer"></div>
</div>jQuery(document).ready(function(){
jQuery(".dimmer").on({
mouseenter: function () {
jQuery(this).css('opacity', '0');
},
mouseleave: function () {
jQuery(this).css('opacity', '1');
}
});
});.experience {
background: url("http://lorempixel.com/400/200/") no-repeat center;
height: 110px;
width: 110px;
z-index: 2;
}
.imparant{
position:relative;
height: 110px;
width: 110px;
}
.dimmer {
background: rgba(238, 238, 238, .25);
position: absolute;
top: 0;
left:0;
right:0;
bottom:0;
z-index: 3;
transition:opacity 320ms;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div class = "imparant">
<div class = "experience"></div>
<div class = "dimmer"></div>
</div>Для этого совсем не обязательно использовать jQuery или javascript. Вы можете сделать это с помощью одного div, псевдоэлемента и стиля наведения:
.container{
position:relative;
height: 110px;
width: 110px;
background-image: url("https://randomuser.me/api/portraits/men/41.jpg");
}
.container::before{
content: '';
display: block;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0,0,0,0.5);
transition: opacity 0.4s;
}
.container:hover::before{
opacity: 0;
}<div class = "container"></div>Если по какой-то причине вы хотите сохранить лишние div, вы все равно можете это сделать, но вам нужно немного изменить правило наведения CSS. Если у вас все в порядке, перемещая .dimmer до .experience, вы можете просто навести курсор мыши непосредственно на элемент .dimmer:
.dimmer:hover { opacity: 0 }
В противном случае вам нужно будет использовать селектор потомков:
.outerDiv:hover .dimmer { opacity: 0 }
Вы специально спросили, как это сделать с помощью jQuery, и упомянули, что изучаете его, так что, возможно, вы уже знаете, как это сделать только в CSS, и в этом случае я приношу свои извинения.