Wie kann ich bei folgender CSS-Animation den Text sichtbar lassen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Hi Robin808,

dein Code sieht sehr interessant aus und bietet noch an einigen Potenzial. Ich habe auch dein Problem beim zweiten mal durchlesen und testen gefunden. Dein Problem liegt darin, das dein ::after-Pseudoelement das deine Hintegrundfarbe animieren soll, einen zu niedrigen z-index-Wert als der Text hat. Normalerweise überlagert es aber trotzdem, da du keinen z-index-Wert für das .box-Element geschrieben hast.

Du kannst für den ::after den z-index auf -1 setzen und den für die .box auf 1. Dann müsste es klappen.

Viel Erfolg

Woher ich das weiß:Berufserfahrung – Ich bin gelernter Mediengestalter Digital und Print(IHK)

Ich habe gerade selber eine Lösung gefunden: Man kann einfach noch in dem <div> ein <span>-Element erstelle, bei dem man dann z-index einstellen kann.

Woher ich das weiß:Hobby

Du setzt bei Hover keine Hintergrundfarbe. Du setzt einfach nur die Textfarbe auf Weiß.

Eine Lösung könnte so aussehen, dass du ein Pseudoelement mit einer Hintergrundfarbe ausstattest und bei Hover über die Fläche seines Containers ziehst. Der Buttontext selbst sollte in einem eigenen Element liegen, welches relativ zu seinem Container positioniert wird.

HTML:

<div class="btn" role="button" tabindex="0">
  <span>Hover Me</span>
</div>

Um die Box als Schaltfläche auszuzeichnen, gebe ich ihr eine entsprechende Rolle und mache sie zugänglich für die Bedienung via Tastatur (tabindex).

CSS:

.btn {
  background: white;
  color: white;
  display: inline-block;
  position: relative;
}

.btn::before {
  background: linear-gradient(to right, #ff758c, #ff7eb3);
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  transition: width 0.5s ease-in-out;
  width: 0;
}

.btn:hover::before,
.btn:focus::before /* for keyboard control */ {
  width: 100%;
}

.btn span {
  position: relative;
}