Css не исчезает плавно после ухода при наведении - PullRequest
0 голосов
/ 28 апреля 2020

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

Возможно, я перебил css, но моя главная цель - чтобы первый div был изображением, а второй - фоном с информацией о нем.

.imageInfo {
  display: block;
  position: absolute;
  bottom: 5px;
  left: 15px;
  color: black;
  font-style: italic !important;
  font-size: smaller;
}

.imageContainer {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  margin-left: 15px;
  margin-bottom: 20px;
  min-width: 330px;
  height: 150px;
}

.cImage {
  max-width: 400px;
  min-height: 130px;
  width: 100%;
  height: 100%;
  padding: 5px;
  vertical-align: middle;
}

imageContainer.img {
  width: auto;
  display: inline-block;
}

.imageContainer img.play,
.imageContainer img.picture,
.imageContainer img.fade {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  transition: ease-in-out 0.6s;
}

.imageContainer img.play {
  opacity: 1;
  visibility: visible;
}

.imageContainer:hover img.play {
  opacity: 0;
  visibility: hidden;
}

.imageContainer div.picture {
  opacity: 0;
  visibility: hidden;
}

.gradient {
  background-image: linear-gradient(to top, orange, red);
}

.imageContainer div.picture .fade {
  opacity: 0;
  visibility: hidden;
}

.imageContainer:hover div.picture {
  opacity: 1;
  visibility: visible;
}

.imageContainer:hover div.picture .fade {
  opacity: 1;
  visibility: visible;
}
<span class="imageContainer">
        <img  [src]="https://www.w3schools.com/images/w3schools_green.jpg"
          class="play cImage">   
            <div class="picture cImage gradient">
              <a class="fade">Baby Yoda</a>
              <div class="imageInfo fade">
               <strong>Date:</strong><span>"01/01/1999"</span>
</div>
</div>
</span>

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Используйте src вместо [src]. Измените <img [src]="https://www.w3schools.com/images/w3schools_green.jpg" class="play cImage" /> на <img src="https://www.w3schools.com/images/w3schools_green.jpg" class="play cImage" />

.imageInfo {
  display: block;
  position: absolute;
  bottom: 5px;
  left: 15px;
  color: black;
  font-style: italic !important;
  font-size: smaller;
}

.imageContainer {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  margin-left: 15px;
  margin-bottom: 20px;
  min-width: 330px;
  height: 150px;
}

.cImage {
  max-width: 400px;
  min-height: 130px;
  width: 100%;
  height: 100%;
  padding: 5px;
  vertical-align: middle;
}

imageContainer.img {
  width: auto;
  display: inline-block;
}

.imageContainer img.play,
.imageContainer img.picture,
.imageContainer img.fade {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}

.imageContainer img.play {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}

.imageContainer:hover img.play {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}

.imageContainer div.picture {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}

.gradient {
  background-image: linear-gradient(to top, orange, red);
}

.imageContainer div.picture .fade {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}

.imageContainer:hover div.picture {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}

.imageContainer:hover div.picture .fade {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.6s linear, visibility 0.6s linear;
}
<span class="imageContainer">
        <img src="https://www.w3schools.com/images/w3schools_green.jpg" class="play cImage">   
            <div class="picture cImage gradient">
              <a class="fade">Baby Yoda</a>
              <div class="imageInfo fade">
               <strong>Date:</strong><span>"01/01/1999"</span>
</div>
</div>
</span>

После ваших комментариев, если я правильно понимаю, вам нужен тот же эффект перехода on mouse in и on mouse leave. Тогда transition-timing-function будет linear вместо easy-in-out | easy-in | ease-out et c. Вы должны прочитать больше о transition-timer-function . И вы должны отделить transition-propery как (opacity, visibility). Вы должны прочитать больше о transition-property .

Вы написали переход только для :hover или mouse in. Теперь вам нужно написать переход для mouse leave. Вы CSS будете выглядеть следующим образом.

.imageContainer img.play{
    opacity: 1;
    visibility: visible;
    transition: opacity 0.6s linear, visibility 0.6s linear;
}

.imageContainer:hover img.play{
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.6s linear, visibility 0.6s linear;
}

Проверьте приведенный выше фрагмент кода: mouse in и mouse out.

0 голосов
/ 28 апреля 2020

К сожалению, нет реального способа (по крайней мере, я знаю), чтобы заставить его исчезать просто, когда ваша мышь уходит, но не когда она загружается. Итак, я просто загрузил его с помощью анимации шоу и поместил в «загрузку ...», которая исчезает при появлении изображений. Извините, но я не смог адаптировать его с вашим кодом, потому что я не мог понять его полностью, поэтому я создал свой собственный код. Адаптируйте его, чтобы заполнить свой код:

img{
  position: absolute;
  width: 100%
  height: 100%;
  z-index: 1;
  animation-name: show;
  animation-duration: 1s;
}

img:hover{
  animation-name: fade;
  animation-duration: 1s;
  opacity: 0;
}

#hi{
  background-color: green;
}

#loading{
  opacity: 0;
  position: absolute;
  z-index: 2;
  font-size: 20px;
  text-align: center;
  animation-name: fade;
  animation-duration: 1s;
}

@keyframes fade{
  from{opacity: 1;}
  to{opacity: 0;}
}

@keyframes show{
  from{opacity: 0;}
  to{opacity: 1;}
}
    
<p>Opacity Animation Test</p>
<div>
  <p id="loading">Loading...</p>
  <img src="https://via.placeholder.com/150">
  <div id="hi">
    <a href="#">HI</a>
    <p><b>Date:</b>1/1/10</p>
  </div>
</div>

Важнейшими частями являются атрибуты z-index (держит изображение перед текстом), абсолютное положение, анимация (по очевидным причинам), анимация -name и animation-duration (они запускают анимацию, но не стесняйтесь редактировать продолжительность) и непрозрачность.

Надеюсь, это ответило на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...