Combina: dopo con: passa il mouse


176

Voglio combinare :aftercon :hoverin CSS (o qualsiasi altro pseudo-selettore). Fondamentalmente ho un elenco e l'elemento con la selectedclasse ha una forma di freccia applicata usando :after. Voglio che lo stesso sia vero per gli oggetti che vengono sospesi, ma non riesco a farlo funzionare. Ecco il codice

#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>

Hai provato ad aggiungere la regola #alertlist li: hover: after?
Andrea,

Risposte:


225

Basta aggiungere :afteral #alertlist li:hoverselettore nello stesso modo in cui lo fai con il #alertlist li.selectedselettore:

#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: "";
}

29
@ Chris, quello che probabilmente hai provato in precedenza era :after:hover al contrario :hover:after. Questo è quello che ho fatto inizialmente, che frustrantemente non funziona
WickyNilliams,

3
@WickyNilliams: Quella di progettazione (pseudo-elementi vs pseudo-classi) - vedere stackoverflow.com/questions/5777210/...
BoltClock

3
Questo non sembra funzionare per la decorazione del testo in Chrome (v43) né in FF (v38).
geoidesic,

@geoidesic: le decorazioni del testo sono un problema completamente diverso. Soprattutto non giocano bene con il posizionamento assoluto. Niente a che fare con gli pseudo-elementi o la :hoverpseudo-classe.
BoltClock

@BoltClock Non sto usando il posizionamento assoluto ma mentre posso cambiare il colore del mio: dopo il contenuto usando la sintassi del selettore sopra, non sono in grado di cambiare la decorazione del testo per lo stato hover di un elemento: after su un collegamento . Altrimenti la decorazione del testo funziona bene.
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);
    }
}

8
 #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


li: hover: afte aggiungi questo nella stessa classe selezionata
Kishore Kumar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.