Slide-in box

Realisiert mit HTML-Boxen. Hat CSS Media Query f. d. Box-Höhe, damit Content immer responsive in die Box passt.

Das umschließende DIV hat mit .item::after ein Overlay.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Für die Animation entscheidend:

.item__overlay {
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 100%;
  position: absolute;
  width: 100%;
  top: 0;
  transition: transform 300ms;
  background-color: #fefeff;
  transform: translate3d(0, 100%, 0);
  opacity: 0.8;
}

Die Animation kommt bei hover über den a tag des .item

.item a {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
.item a:hover ~ .item__overlay, .item a:focus ~ .item__overlay {
  transform: translate3d(0, 0, 0);
}

Verwendung Tilde-Symbol ~ , das auch als Subsequent-sibling Combinator bekannt ist. Dies bedeutet im Grunde, dass alle Geschwister (im Beispiel: .b) NACH einem bestimmten Selektor (im Beispiel: .a) ausgewählt werden.

Dies hier:

.a ~ .b
background: red

heißt: Wähle alle .b aus, die nach .a kommen

.item h3 {
  margin: 0;
  display: block;
  background-color: #03199082;
  padding: 1rem;
  transform: translate3d(0, -100%, 0);
  transition: transform 300ms;
  color: #fff;
  height: 40%;
}