как создать анимацию наведения на div

#css

#css

Вопрос:

Я хотел создать div, у которого есть фоновое изображение и прозрачный цвет фона поверх него с некоторым текстом. При наведении прозрачный цвет фона должен смещаться к нижней части div, как показано на рисунке:

https://i.ibb.co/pJFPvFB/Screenshot-2019-03-26-Zeplin-Project.png

По умолчанию используется левый блок. Правый блок — это состояние наведения.

Я изменил этот фрагмент:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_image_overlay_fade

Я изменил предоставленный стиль на:

 <style>
.container {
  position: relative;
  width: 50%;
}

.image {
  display: block;
  width: 100%;
  height: auto;
}

.overlay {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  width: 100%;
  opacity: 0;
  transition: .5s ease;
  background-color: #008CBA;
}

.container .overlay {
  opacity: 0.75;
}

.container:hover .overlay {
  opacity: 0;
}

.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;
}
</style>

  

Отредактировано:
Моя проблема

Я попытался добиться простой анимации скольжения на моем, как показано на предоставленном мной изображении. Смотрите это: https://i.ibb.co/pJFPvFB/Screenshot-2019-03-26-Zeplin-Project.png

Я пробовал что-то подобное — https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_image_overlay_fade

Я отредактировал css, который они предоставили, в css, который я предоставил выше.

Пожалуйста, посмотрите на изображение, которое я предоставил. Я хотел добиться этого.

Комментарии:

1. Привет, не могли бы вы объяснить в вопросе, с какой проблемой вы столкнулись в данный момент?

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

3. @DKyleo Я отредактировал вопрос

Ответ №1:

Попробуйте это.

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

.image {
  display: block;
  width: 100%;
  height: auto;
}

.overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  width: 100%;
  transition: .5s ease;
  background-color: #008CBA;
}

.container:hover .overlay {
  transition: .5s ease;
  height: 0;
}

.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;
}  
 <div class="container">
  <img src="https://i.ibb.co/pJFPvFB/Screenshot-2019-03-26-Zeplin-Project.png" alt="Avatar" class="image">
  <div class="overlay">
    <div class="text">Hello World</div>
  </div>
</div>  

Надеюсь, этот код может вам помочь.

Комментарии:

1. Привет @Pullata, это работает. Но я не хочу, чтобы весь оверлей выпадал. Около 5 пикселей наложения все еще должно оставаться внизу. Если вы посмотрите на предоставленное мной изображение, вы поймете, что я имею в виду. Спасибо.

2. Я это исправил. Спасибо. высота: 15 пикселей;

Ответ №2:

Привет, надеюсь, это то, что вы ищете

Попробуйте эту скрипку

 .container:hover .overlay {
 animation-name: slideDown;
-webkit-animation-name: slideDown;
 animation-duration: 1s;    
-webkit-animation-duration: 1s;
 animation-timing-function: ease;   
-webkit-animation-timing-function: ease;
opacity: 1 !important;              
}
  

Комментарии:

1. Измените фон наложения на «background-color: rgba(0, 140, 186, .6);» в приведенной выше скрипке

2. это прямо противоположно тому, чего я хочу. Состояние наведения и состояние по умолчанию должны поменяться местами. т.Е. по умолчанию наложение будет на месте. При наведении наложения исчезнет.

Ответ №3:

надеюсь, это то, что вы ищете

 .box {
width: 200px; height: 100px;
background-size: 100% 200%;
background-image: linear-gradient(to bottom, red 50%, black 50%);
-webkit-transition: background-position 1s;
-moz-transition: background-position 1s;
transition: background-position 1s;}
  

http://jsfiddle.net/jxgrtmvy