2013-08-26 17 views
20

Ho una specie di strana situazione. Sto provando a modellare un pulsante di input disabilitato perché ho un passaggio del mouse fastidioso che trasforma il testo in bianco. Questo lo rende confuso all'utente perché agisce come un normale pulsante.Styling di un input disabilitato con css solo

Ho provato alcune cose, principalmente css e alcune cose jQuery. Mi piacerebbe tenerlo in css se non del tutto possibile.

Questo è il mio html, mi dispiace è in una forma di aiuto larvel.

{{ Form::submit('Change', array_merge($design_project->is_locked ? ['disabled' => 'disabled'] : [], ['class' => 'btn btn-blue span3'])) }} 

e questo è ciò che il browser genera

<input disabled="disabled" class="btn btn-blue span3" type="submit" value="Change"> 

e stavo lavorando a qualcosa di simile

.btn:hover input[disabled], .btn:active input[disabled], .btn:focus input[disabled]{ 
    color:green 
} 

Qualsiasi aiuto sarebbe meraviglioso!

+1

Puoi pubblicare l'HTML generato, per favore? – ComFreek

+0

@Vector Il testo cambia in verde se si passa il mouse sopra il pulsante? – ComFreek

risposta

44

Utilizzare questa CSS (jsFiddle example):

input:disabled.btn:hover, 
input:disabled.btn:active, 
input:disabled.btn:focus { 
    color: green 
} 

Dovete scrivere l'elemento più esterno a sinistra e l'elemento più interno sulla destra.

.btn:hover input:disabled selezionare qualsiasi elemento di input disabilitato contenuto in un elemento con una classe btn attualmente al passaggio del mouse da parte dell'utente.

preferirei :disabled sopra [disabled], vedere questa domanda per una discussione: Should I use CSS :disabled pseudo-class or [disabled] attribute selector or is it a matter of opinion?


A proposito, laravel (PHP) genera il codice HTML - non il browser.

+0

Grazie, questo ha funzionato perfettamente per me. Io e i miei stupidi spazi! :) – zazvorniki

+0

Ottimo, funziona in IE9! – Neolisk

+0

Ci sono motivi di preferenza tra l'uso di '[disabled]' e ': disabled'? (che è anche concatenabile → https://css-tricks.com/almanac/selectors/d/disabled/) –

1

Uno spazio in un selettore CSS seleziona elementi figlio.

.btn input 

Questo è fondamentalmente ciò che hai scritto e sarebbe selezionare <input> elementi all'interno di ogni elemento che possiede la classe btn.

Penso che tu sia alla ricerca di

input[disabled].btn:hover, input[disabled].btn:active, input[disabled].btn:focus 

Questo sarebbe selezionare <input> elementi con l'attributo disabled e la classe btn nei tre diversi stati di hover, active e focus.

17

Diciamo solo che si dispone di 3 pulsanti:

<input type="button" disabled="disabled" value="hello world"> 
<input type="button" disabled value="hello world"> 
<input type="button" value="hello world"> 

per lo stile il pulsante disabilitato è possibile utilizzare il seguente CSS:

input[type="button"]:disabled{ 
    color:#000; 
} 

Questo avrà effetto solo il pulsante che è disabilitato.

Per fermare il cambiamento di colore quando si libra si può usare anche questo:

input[type="button"]:disabled:hover{ 
    color:#000; 
} 

È inoltre possibile evitare questo utilizzando un CSS-reset.

+1

Perché è stato downvoted? È una soluzione perfettamente valida per i browser moderni. – FakeRainBrigand

+4

grazie amico. Stavo per iniziare a pensare che tutta la mia carriera in CSS è una bugia :) –

+0

@thesaadarshad Ho appena ricevuto un upvote sulla mia risposta a questa domanda. Per caso ho visto anche la tua risposta, che ho downvoted per una ragione che non ricordo più. Ho apportato una modifica per poter ripristinare il downvote. +1! – ComFreek