Cos'è il selettore del mouse in CSS?


114

Ho notato che i pulsanti e altri elementi hanno uno stile predefinito e si comportano in 3 passaggi: visualizzazione normale, visualizzazione al passaggio del mouse / messa a fuoco e visualizzazione del mouse / clic, in CSS posso modificare lo stile della visualizzazione normale e della visualizzazione al passaggio del mouse in questo modo:

button{
  background:#333;
  color:#FFF;
}

button:hover{
  background:#000;
  color:#EEE;
}

ma come posso selezionare il mousedown? Voglio qualcosa di simile:

button:mousedown{
  //some styling
}

Grazie



@ x4vier: non credo. Inoltre, in questo caso è difficile dire cosa si intende per "mouse premuto".
BoltClock

Risposte:


160

Penso che intendi lo stato attivo

 button:active{
  //some styling
 }

Questi sono tutti i possibili pseudo stati che un collegamento può avere in CSS:

a:link {color:#FF0000;}    /* unvisited link, same as regular 'a' */
a:hover {color:#FF00FF;}   /* mouse over link */
a:focus {color:#0000FF;}   /* link has focus */
a:active {color:#0000FF;}  /* selected link */
a:visited {color:#00FF00;} /* visited link */

Vedi anche: http://www.w3.org/TR/selectors/#the-user-action-pseudo-classes-hover-act


2
Non voglio collegamenti, ho bisogno di pulsanti, specialmente perché nei dispositivi mobili il passaggio del mouse crea un brutto problema tecnico. Grazie
multimediaxp

Aggiungi in tal caso lo stile del pulsante in modo più completo. Aggiungendo un bordo: 0; perdi la cornice attorno al pulsante e il problema che stai riscontrando.
jansmolders86

@ jansmolders86 Sai se c'è mouseover, mouseleave, mousedown, selettore mouseup per un'immagine o un pulsante in CSS?
Ng2-Fun

@ J.Fun non proprio, potresti provare a ottenere l'effetto desiderato utilizzando lo stato: hover per over / leave e: active per down / up. Ma non puoi distinguere tra i due senza javascript.
jansmolders86

50

Ho capito che questo si comporta come un evento mousedown:

button:active:hover {}

33

Pro-punta Nota: per qualche ragione, la sintassi CSS ha bisogno del:activeframmento dopo la:hoverper lo stesso elemento al fine di essere efficace

http://www.w3schools.com/cssref/sel_active.asp


2
CSS viene valutato in ordine, quindi ha senso; un elemento non può diventare :activeprima di esserlo :hover.
InTheZone

2
Inoltre, :activedeve essere dopo :focusperché funzioni. Grazie per averlo sottolineato, mi stavo davvero grattando la testa sul motivo per cui il mio CSS non aveva alcun effetto!
Michael

1
@InTheZone Ovviamente può diventare: attivo prima di essere: hover'ed. Puoi attivarlo con la tastiera, che non oscilla.
ANeves

2

Recentemente ho scoperto che :active:focusfa la stessa cosa in CSS come :active:hoverse avessi bisogno di sovrascrivere una libreria CSS personalizzata, potrebbero usare entrambi.

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.