Показать div при наведении курсора на изображение JQuery

Я потратил добрых 30 минут на S.O, чтобы найти решение, но все еще не могу его найти. Наверное, из-за того, что я точно не знаю, что искать.

В основном у меня есть div, который содержит изображение и текст. Текст должен появиться на изображении только после того, как я наведу на него курсор. Все структуры HTML и CSS хороши, и у меня проблема с функцией JQuery для hover, в основном из-за того, что я знаю, как выбрать внутренний div (а не как использовать саму функцию hover).

То, что я пытаюсь сделать, - это когда я нахожу изображение div (img-container), он показывает текст (hover-img) на этом изображении.

Ниже мой код:

HTML

<div id = "content" class = "col-12">
  <!-- Image Gallery -->
  <div class = "col-lg-4 col-md-6 col-xs-12 img-container">
    <img class = "img-gal" src = "#" />


    <div class = "hover-img">
      <p class = "img-text">Text on Hover</p>
    </div>
  </div>
</div

CSS

.img-container{
  float:left;
  margin: 0;
  padding: 0;
  cursor: pointer;
  position: relative;
}

.img-gal{
  width: 100%;
  height: auto;
  position: relative;
}

.hover-img{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index:10;
  color: #fff;
  display: none;
}

.img-text{
  text-align: center;
  position: relative;
  top: 50%;
  font-weight: 300;
  font-size: 1em;
  letter-spacing: 2px;
}

JS

//Hover Image. Need to show the Text when hovering on an image
$('.img-container').hover(function(){
  //Stuck here. How to show the text? fadeIn()? But what?
},function(){
  //Stuck here. How to show the text? fadeOut()? But what ?
});

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
265
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете добиться этого с помощью чистого CSS:

.hover-img {
  display: none;
  position: absolute;
  top: 0;
}

.img-gal:hover ~ .hover-img, .hover-img:hover {
  display: block;
}
<div id = "content" class = "col-12">
  <!-- Image Gallery -->
  <div class = "col-lg-4 col-md-6 col-xs-12 img-container">
    <img class = "img-gal" src = "https://www.gravatar.com/avatar/0104050baad43a135d1084a1b3ec35d4?s=32&d=identicon&r=PG&f=1" />


    <div class = "hover-img">
      <p class = "img-text">Text on Hover</p>
    </div>
  </div>
</div

Этот чистый CSS работает, но текст продолжает мигать как сумасшедший при наведении курсора.

nTuply 02.05.2018 05:45

Что значит «мигает как сумасшедший»? Кажется, что появляется при наведении курсора на изображение и исчезает при наведении курсора.

CertainPerformance 02.05.2018 05:47

Я имею в виду, что когда я использую здесь ваш CSS, он в принципе работает, появляется текст. Но мерцает очень быстро, как будто мигает. Я не знаю, как это объяснить. Текст не остается неподвижным, но продолжает быстро мигать. Я не знаю, может ли это быть абсолютное положение или что-то в этом роде?

nTuply 02.05.2018 05:48

.hover-img появляется прямо над изображением? Если это так, то если мышь окажется над .hover-img при срабатывании .img-gal:hover, правило display: block перестанет применяться - до тех пор, пока текст не исчезнет и .hover-img не начнет снова зависать. Вы можете добавить правило, чтобы .hover-img продолжал отображаться при наведении курсора. См. Править

CertainPerformance 02.05.2018 05:54

Это именно то, что я пытаюсь. .hover-img появляется прямо над изображением. Теперь я понимаю, что именно поэтому он мерцает. Ваше редактирование работает отлично! Спасибо. Просто хотите знать, как работает эта штука ~ в CSS? Как это называется? Никогда не видел этого раньше

nTuply 02.05.2018 05:57

Это общий комбинатор братьев и сестер developer.mozilla.org/en/docs/Web/CSS/General_sibling_select‌ ors

CertainPerformance 02.05.2018 06:05

Вы делаете это только с помощью CSS. Добавьте эту строку в свой css

.img-gal:hover + .hover-img {
    display:block;
}

если вы хотите сгладить эффект, добавьте эту строку в .hover-img. и удалите display:none

  .hover-img {
    visibility: hidden;
    opacity: 0;
    transition: opacity 0.5s ease-in-out;
  }

и на изображении наведите курсор на это

.img-gal:hover + .hover-img {
        visibility: visible;
        opacity: 1;
}

Работает лучше с переходом, но все еще мигает при отключении мыши. Также он не работает идеально, пока я меняю div, не знаю почему.

nTuply 02.05.2018 05:55

Сейчас я использую мобильный телефон, поэтому я не могу правильно тестировать. Я покажу вам демо через некоторое время.

patelarpan 02.05.2018 05:56

CertainPerformance первой нашла решение. Я даю вам положительный голос, потому что ваше решение работает, и я применю вашу технику перехода к приведенному выше ответу. Спасибо за вашу помощь :)

nTuply 02.05.2018 05:59

Это нормально, @nTuply. Я здесь, чтобы помочь тебе. Не за голосование :)

patelarpan 02.05.2018 06:01

Как уже упоминалось, здесь нет необходимости в jQuery, вы можете добиться этого только с помощью html / css, используя переход css и изменив непрозрачность и положение текстового слоя.

https://jsfiddle.net/86bjzedh/

проверьте эту скрипку для рабочего примера

CSS:

.gallery li {
  overflow: hidden;  
  background-size: 100% 100%;
  float: left;
  display: block;
  width: 200px;
  height: 200px;
  margin: 5px;
}

.gallery span {
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0;
  transform: translateY(100%);
  transition: .3s linear all;
  text-align: center;
  color: #000;
  font-size: 15px;
  font-family: tahoma;
  background-color: rgba(255, 255, 255, .8);
  padding-top: 30px;
  box-sizing: border-box;
}

.gallery li:hover span {
  transform: translateY(0);
  opacity: 1;
}

HTML:

<ul class = "gallery">
  <li style = "background-image:url(https://cdn.pixabay.com/photo/2018/01/17/10/22/key-3087900__180.jpg)">
    <span>Style 1</span>
  </li>
    <li style = "background-image:url(https://cdn.pixabay.com/photo/2018/02/16/02/03/pocket-watch-3156771__180.jpg">
    <span>Style 2</span>
  </li>
      <li style = "background-image:url(https://cdn.pixabay.com/photo/2018/04/20/02/47/hong-kong-3334945__180.jpg)">
    <span>Style 2</span>
  </li>
<li style = "background-image:url(https://cdn.pixabay.com/photo/2018/01/17/10/22/key-3087900__180.jpg)">
    <span>Style 1</span>
  </li>
    <li style = "background-image:url(https://cdn.pixabay.com/photo/2018/02/16/02/03/pocket-watch-3156771__180.jpg">
    <span>Style 2</span>
  </li>
      <li style = "background-image:url(https://cdn.pixabay.com/photo/2018/04/20/02/47/hong-kong-3334945__180.jpg)">
    <span>Style 2</span>
  </li>  
</ul>

Другие вопросы по теме