Kombinieren Sie: nach mit: schweben

176

Ich möchte :aftermit :hoverin CSS (oder einem anderen Pseudo-Selektor) kombinieren . Ich habe im Grunde eine Liste und das Element mit der selectedKlasse hat eine Pfeilform, die mit angewendet wird :after. Ich möchte, dass das Gleiche für Objekte gilt, über die man schwebt, die ich aber nicht zum Laufen bringen kann. Hier ist der Code

#alertlist
{
    list-style:none;
    width: 250px;
}
#alertlist li
{
    padding: 5px 10px;
    border-bottom: 1px solid #e9e9e9;
    position:relative;
}
#alertlist li.selected, #alertlist li:hover
{
    color: #f0f0f0;
    background-color: #303030;
}

#alertlist li.selected:after
{
    position:absolute;
    top: 0;
    right:-10px;
    bottom:0;

    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid #303030;
    content: "";
}

<ul id="alertlist">
    <li>Alert 123</li>
    <li class="selected">Alert 123</li>
    <li>Alert 123</li>
</ul>
Chris
quelle
Haben Sie versucht, die Regel #alertlist li: hover: after hinzuzufügen?
Andrea

Antworten:

225

Einfach anhängen :afterzu Ihrem #alertlist li:hovermit Ihrem Selektor auf die gleiche Weise tun #alertlist li.selectedSelektor:

#alertlist li.selected:after, #alertlist li:hover:after
{
    position:absolute;
    top: 0;
    right:-10px;
    bottom:0;

    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid #303030;
    content: "";
}
BoltClock
quelle
29
@ Chris, was Sie wahrscheinlich vorher versucht haben, war :after:hover im Gegensatz zu :hover:after. Dies ist, was ich anfangs getan habe, was frustrierend nicht funktioniert
WickyNilliams
3
@ WickyNilliams: Das ist beabsichtigt (Pseudo-Elemente vs Pseudo-Klassen) - siehe stackoverflow.com/questions/5777210/…
BoltClock
3
Dies scheint weder für die Textdekoration in Chrome (v43) noch in FF (v38) zu funktionieren.
Geoidesic
@geoidesic: Textdekorationen sind ein ganz anderes Thema. Sie spielen besonders gut nicht mit absoluter Positionierung. Nichts mit Pseudoelementen oder der :hoverPseudoklasse zu tun .
BoltClock
@BoltClock Ich verwende keine absolute Positionierung, aber während ich die Farbe meines: after-Inhalts mithilfe der obigen Selektorsyntax ändern kann, kann ich die Textdekoration für den Schwebezustand eines: after-Elements auf einem Link nicht ändern . Ansonsten funktioniert die Textdekoration einwandfrei.
Geoidesic
22

in scss

&::after{
content: url(images/RelativeProjectsArr.png);
margin-left:30px;
}

&:hover{
    background-color:$turkiz;
    color:#e5e7ef;

    &::after{
    content: url(images/RelativeProjectsArrHover.png);
    }
}
Erez Lieberman
quelle
7
 #alertlist li:hover:after,#alertlist li.selected:after
{
    position:absolute;
    top: 0;
    right:-10px;
    bottom:0;

    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid #303030;
    content: "";
}​

jsFiddle Link

Kishore Kumar
quelle
li: hover: afte füge dies in derselben Klasse wie ausgewählt hinzu
Kishore Kumar