HTML gradient in nav bar?

2 Antworten

Ihr aktueller Ansatz ist tatsächlich schon fast korrekt, aber die Tatsache, dass die Farbe auch zwischen den `li`-Elementen angezeigt wird, liegt daran, dass Sie den Hintergrund für das gesamte `ul`-Element gesetzt haben. Das `ul`-Element enthält nicht nur die `li`-Elemente, sondern auch den Platz dazwischen.

Anstatt den Hintergrund auf das gesamte `ul`-Element anzuwenden, können Sie den Hintergrund auf die `li`-Elemente anwenden und dann beim Hovern die Hintergrundfarbe der Links transparent machen.

Hier ist ein überarbeiteter Codeausschnitt:

HTML bleibt unverändert.

CSS:

body {
    background-color: black;
}
  
ul {
    border-radius: 12px;
    overflow: hidden;
    display: flex;
    justify-content: center;
    padding: 0;
    gap: 1rem; /* Fügt Abstand zwischen den li Elementen hinzu */
    background-color: black; /* Setzt die Hintergrundfarbe des gesamten ul-Elements auf schwarz */
}


li {
    background: linear-gradient(90deg, rgba(0, 3, 36, 1) 0%, rgba(121, 9, 118, 1) 47%, rgba(56, 134, 188, 1) 100%); 
    display: inline-flex;
    border-radius: 12px;
}
  
li a {
    display: block;
    color: rgb(255, 255, 255);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    background: black;
}


li a:hover {
    background: transparent;
}


Mit diesem Code wird der Hintergrund auf jedes `li`-Element angewendet und die Hintergrundfarbe wird transparent, wenn Sie mit der Maus über einen Link fahren. Der Abstand zwischen den `li`-Elementen bleibt schwarz, da die Hintergrundfarbe des `ul`-Elements auf schwarz gesetzt ist. Sie können den Abstand zwischen den `li`-Elementen mit der `gap`-Eigenschaft anpassen.

random1755 
Fragesteller
 16.06.2023, 01:14

An diesem Punkt war ich auch bereits, nur möchte ich nicht hinter jedem ‘li’ einen eigenen gradient haben, sondern einen großen hinter allen, so dass sich dieser beim hovern durch alle ‘li’s zieht…

0
MeoseK  16.06.2023, 02:02
@random1755

Versuch statt li a:hover sagst du ul:has(a:hover) li {background: transparent;}

1

Klar sind die Abstände zwischen den LI auch gefärbt, du hast ja einen Hintergrund über die ganze Liste UL und nicht nur im LI

Ist also alles korrekt