Eine Karte kann beim Berühren oder beim Tastaturfokus mehrere Veränderungen
gleichzeitig ausführen. In diesem Beispiel wird das Bild leicht vergrößert,
abgedunkelt und ein zusätzlicher Text eingeblendet.
Bild innerhalb der Karte vergrößern
Bewege den Mauszeiger über die Karte oder wähle den Link mit der
Tab-Taste aus. Das Bild wird vergrößert und gleichzeitig
abgedunkelt.
Moderne Webentwicklung
Mit Transitionen lassen sich Bilder, Texte und Bedienelemente
innerhalb einer Karte gemeinsam hervorheben.
Beispiel ansehen
.image-card {
position: relative;
overflow: hidden;
}
.image-card img {
width: 100%;
height: 100%;
object-fit: cover;
filter: brightness(0.75);
transform: scale(1);
transition:
filter 0.5s ease,
transform 0.5s ease;
}
.image-card:hover img,
.image-card:focus-within img {
filter: brightness(0.5);
transform: scale(1.1);
}
overflow: hidden verhindert, dass das vergrößerte Bild über
den Rand der Karte hinausragt.
Zusätzlichen Text einblenden
Der Beschreibungstext ist im Ausgangszustand verborgen. Beim Berühren oder
Fokussieren wird seine Höhe erweitert und der Text bewegt sich nach oben.
.image-card-text {
max-height: 0;
margin: 0;
overflow: hidden;
opacity: 0;
transform: translateY(20px);
transition:
max-height 0.5s ease,
margin 0.5s ease,
opacity 0.4s ease,
transform 0.5s ease;
}
.image-card:hover .image-card-text,
.image-card:focus-within .image-card-text {
max-height: 120px;
margin-bottom: 18px;
opacity: 1;
transform: translateY(0);
}
Der Wert height: auto kann nicht direkt von
height: 0 aus animiert werden. Für eine einfache Lösung wird
deshalb max-height verwendet.
Link zeitversetzt anzeigen
Der Link erscheint etwas später als der Beschreibungstext. Dafür wird bei
der Transition eine kurze Verzögerung angegeben.
.image-card-link {
opacity: 0;
transform: translateY(20px);
transition:
background-color 0.2s ease,
opacity 0.4s ease 0.1s,
transform 0.5s ease 0.1s;
}
.image-card:hover .image-card-link,
.image-card:focus-within .image-card-link {
opacity: 1;
transform: translateY(0);
}
Der letzte Wert 0.1s ist die
transition-delay. Die Bewegung beginnt dadurch erst nach
einer kurzen Verzögerung.
Kleine zeitliche Abstufungen können mehrere Bewegungen übersichtlicher
wirken lassen. Zu lange Verzögerungen erschweren jedoch die Bedienung.
Hover-Effekt mit der Tastatur auslösen
Der Link in der Karte kann mit der Tastatur erreicht werden. Sobald er den
Fokus erhält, wird :focus-within für die gesamte Karte aktiv.
.image-card:hover img,
.image-card:focus-within img {
filter: brightness(0.5);
transform: scale(1.1);
}
.image-card:hover .image-card-text,
.image-card:focus-within .image-card-text {
max-height: 120px;
opacity: 1;
transform: translateY(0);
}
Die sichtbare Beschriftung und der Link müssen auch ohne Animation
verständlich und mit der Tastatur erreichbar bleiben.