Hover Увеличение и уменьшение фона не работает должным образом - PullRequest
0 голосов
/ 31 марта 2019

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

.container {
  overflow: hidden;
  position: relative;
  width: 50%;
}

.image {
  display: block;
  width: 100%;
  height: auto;
  background-size: cover;
  background-position: center;
  transition: all 0.5s ease;
}

.overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: black;
  overflow: hidden;
  width: 100%;
  height: 0;
  transition: .5s ease;
  opacity: 0.5;
}

.container:hover .overlay {
  height: 100%;
}

.text {
  color: white;
  font-size: 20px;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  text-align: center;
}

.image:hover {
  transform: scale(1.5);
  transition: .5s ease;
}
<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
  <h2>Slide in Overlay from the Bottom</h2>
  <p>Hover over the image to see the effect.</p>
  <div class="container">
    <img src="https://www.activeconnections.org/wp-content/uploads/avatar-1.png" alt="Avatar" class="image">
    <div class="overlay">
      <div class="text">Hello World</div>
    </div>
  </div>
</body>

</html>

На самом деле я хочу добавить эффект наведения на изображение, которое при наведении курсора мыши на изображение будет плавно увеличиваться, а при наведении курсора мыши на изображение - уменьшаться.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

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

.container {
  overflow: hidden;
  position: relative;
  width: 50%;
}

.image {
  display: block;
  width: 100%;
  height: auto;
  background-size: cover;
  background-position: center;
  transition: all 0.5s ease;
}

.overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: black;
  overflow: hidden;
  width: 100%;
  height: 0;
  transition: .5s ease;
  opacity: 0.5;
}

.container:hover .overlay {
  height: 100%;
}

.text {
  color: white;
  font-size: 20px;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  text-align: center;
}

.container:hover .image {
  transform: scale(1.5);
  transition: .5s ease;
}
<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
  <h2>Slide in Overlay from the Bottom</h2>
  <p>Hover over the image to see the effect.</p>
  <div class="container">
    <img src="https://www.activeconnections.org/wp-content/uploads/avatar-1.png" alt="Avatar" class="image">
    <div class="overlay">
      <div class="text">Hello World</div>
    </div>
  </div>
</body>

</html>

Проблема была в том, что вы отреагировали на :hover из .image, и, поскольку было наложение, после того, как наложение затенило изображение, механизм css удаляет :hover с изображения. Изменение цели :hover на .container гарантирует, что она будет присутствовать, даже если наложение затеняет изображение.

0 голосов
/ 01 апреля 2019

Уменьшается, когда оверлей достигает вашего указателя.Когда наложение достигает указателя, на самом деле это наложение, которое получает эффект наведения, а не изображение.

Этого можно избежать, добавив .pointer-events: none к .container:hover .overlay css, например:

.container:hover .overlay {
  height: 100%;
  pointer-events: none;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...