Diseñar una entrada deshabilitada solo con css

3 minutos de lectura

Tengo una especie de situación extraña. Estoy tratando de diseñar un botón de entrada deshabilitado porque tengo un molesto desplazamiento que convierte el texto en blanco. Esto lo hace confuso para el usuario porque actúa como un botón normal.

He probado algunas cosas, principalmente css y algunas cosas jQuery. Me gustaría mantener esto en css si es posible.

Este es mi html, lo siento, está en un asistente de forma larvel.

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

y esto es lo que genera el navegador

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

y yo estaba trabajando en algo como esto

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

¡Cualquier ayuda sería maravillosa!

  • ¿Puedes publicar el HTML generado, por favor?

    – ComFreek

    26 de agosto de 2013 a las 13:38

  • @Vector ¿El texto cambia de color a verde si pasa el mouse sobre el botón?

    – ComFreek

    26 de agosto de 2013 a las 13:43

Avatar de usuario de ComFreek
ComFreek

Utilice este CSS (js Ejemplo de violín):

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

Tienes que escribir el elemento más exterior a la izquierda y el elemento más interior a la derecha.

.btn:hover input:disabled seleccionaría cualquier elemento de entrada deshabilitado contenido en un elemento con una clase btn que está actualmente sobrevolado por el usuario.

Yo preferiría :disabled encima [disabled]vea esta pregunta para una discusión: ¿Debo usar CSS: pseudo-clase deshabilitada o [disabled] selector de atributos o es una cuestión de opinión?


Por cierto, Laravel (PHP) genera el HTML, no el navegador.

  • Gracias, esto funcionó perfectamente para mí. ¡Yo y mis espacios tontos! 🙂

    – zazvorniki

    26 de agosto de 2013 a las 13:46

  • ¿Hay algún motivo de preferencia entre usar [disabled] y :disabled ? (que también es encadenable → css-tricks.com/almanac/selectors/d/disabled )

    – Frank N.

    14 de mayo de 2017 a las 7:38

  • @FrankNocke De hecho, :disabled parece ser más preferible, mira mi edición.

    – ComFreek

    14 de mayo de 2017 a las 8:42

avatar de usuario de saad arshad
saad arshad

Digamos que tienes 3 botones:

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

Para diseñar el botón deshabilitado, puede usar el siguiente css:

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

Esto solo afectará al botón que está deshabilitado.

Para detener el cambio de color al pasar el mouse, también puede usar esto:

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

También puede evitar esto usando css-reset.

  • ¿Por qué fue votado negativo? Es una solución perfectamente válida para los navegadores modernos.

    – bandolero

    26 de agosto de 2013 a las 13:50

  • gracias amigo. estaba a punto de empezar a pensar que toda mi carrera de CSS es una mentira 🙂

    – saad arshad

    26 de agosto de 2013 a las 13:52

  • @thesaadarshad Acabo de recibir un voto positivo en mi respuesta a esta pregunta. Por accidente también vi tu respuesta, la cual rechacé por una razón que ya no recuerdo. Hice una edición para poder revertir el voto negativo. +1!

    – ComFreek

    01/07/2014 a las 16:00


  • :disabled no parece funcionar en IE9. [disabled] obras.

    – Víctor Zajarov

    24 de enero de 2017 a las 14:57

Un espacio en un selector de CSS selecciona elementos secundarios.

.btn input

Esto es básicamente lo que escribiste y seleccionaría <input> elementos dentro de cualquier elemento que tenga el btn clase.

creo que estas buscando

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

Esto seleccionaría <input> elementos con la disabled atributo y el btn clase en los tres diferentes estados de hover, active y focus.

¿Ha sido útil esta solución?