Botón de estilo deshabilitado con CSS

216

Estoy tratando de cambiar el estilo de un botón con una imagen incrustada como se ve en el siguiente violín:

http://jsfiddle.net/krishnathota/xzBaZ/1/

En el ejemplo no hay imágenes, me temo.

Estoy tratando de:

  1. Cambie el background-colorbotón cuando está deshabilitado
  2. Cambia la imagen en el botón cuando está desactivado
  3. Deshabilita el efecto de desplazamiento cuando está deshabilitado
  4. Cuando hace clic en la imagen en el botón y la arrastra, la imagen se puede ver por separado; Quiero evitar eso
  5. Se puede seleccionar el texto en el botón. Quiero evitar eso también.

Traté de hacerlo button[disabled]. Pero algunos efectos no se pudieron desactivar. Me gusta top: 1px; position: relative;e imagen.

Krishna Thota
fuente

Respuestas:

315

Para los botones deshabilitados puede usar el :disabledpseudo-elemento. Funciona para todos los elementos.

Para los navegadores / dispositivos que solo admiten CSS2, puede usar el [disabled]selector.

Al igual que con la imagen, no coloque una imagen en el botón. Use CSS background-imagecon background-positiony background-repeat. De esa manera, no se producirá el arrastre de la imagen.

Problema de selección: aquí hay un enlace a la pregunta específica:

Ejemplo para el selector deshabilitado:

button {
  border: 1px solid #0066cc;
  background-color: #0099cc;
  color: #ffffff;
  padding: 5px 10px;
}

button:hover {
  border: 1px solid #0099cc;
  background-color: #00aacc;
  color: #ffffff;
  padding: 5px 10px;
}

button:disabled,
button[disabled]{
  border: 1px solid #999999;
  background-color: #cccccc;
  color: #666666;
}

div {
  padding: 5px 10px;
}
<div>
  <button> This is a working button </button>
</div>

<div>
  <button disabled> This is a disabled button </button>
</div>

Beerwin
fuente
1
Aplicable a CSS 2 o 3 (o ambos)?
ViniciusPires
3
Hasta donde yo sé, el :disabledselector es un selector CSS3. El background-image, background-repeat, background-positionestán trabajando en el CSS 2.
beerwin
3
Entonces, ¿quizás hacer un: disabled, [disabled] funcionaría en CSS2 y 3?
ViniciusPires
3
Solo para tener en cuenta, la ="true"parte de disabled="true"no es lo que lo está deshabilitando. Podrías usar disabled="false"o disabled="cat"y aún estaría deshabilitado. O simplemente tener disabledsin valor. Esa propiedad solo puede estar presente / omitida en Html, o agregada a través de JavaScript con verdadero / falso
Drenai
86

Creo que debería poder seleccionar un botón deshabilitado utilizando lo siguiente:

button[disabled=disabled], button:disabled {
    // your css rules
}
Billy Moat
fuente
¿Puedo desactivar el Hover? y escuché que no funcionará en IE6?
Krishna Thota
No creo que puedas pero no estoy 100% seguro. Si también pudiera agregar una clase de botones deshabilitados en deshabilitados, entonces probablemente podría hacerlo a través de esa clase.
Billy Moat
35

Agregue el siguiente código en su página. Confía en mí, no se realizan cambios en los eventos de botón, para deshabilitar / habilitar el botón simplemente agrega / elimina la clase de botón en Javascript.

Método 1

 <asp Button ID="btnSave" CssClass="disabledContent" runat="server" />

<style type="text/css">
    .disabledContent 
    {
        cursor: not-allowed;
        background-color: rgb(229, 229, 229) !important;
    }

    .disabledContent > * 
    {
        pointer-events:none;
    }
</style>

Método 2

<asp Button ID="btnSubmit" CssClass="btn-disable" runat="server" />

<style type="text/css">
    .btn-disable
        {
        cursor: not-allowed;
        pointer-events: none;

        /*Button disabled - CSS color class*/
        color: #c0c0c0;
        background-color: #ffffff;

        }
</style>
Tamilselvan K
fuente
2
Exactamente lo que estaba buscando. ¡El botón está deshabilitado pero parece habilitado!
Domi
Para sentir que el botón está deshabilitado, agregue el siguiente código de color CSS: # c0c0c0; color de fondo: #ffffff;
Tamilselvan K
9

Para aplicar CSS de botón gris para un botón deshabilitado.

button[disabled]:active, button[disabled],
input[type="button"][disabled]:active,
input[type="button"][disabled],
input[type="submit"][disabled]:active,
input[type="submit"][disabled] ,
button[disabled]:hover,
input[type="button"][disabled]:hover,
input[type="submit"][disabled]:hover
{
  border: 2px outset ButtonFace;
  color: GrayText;
  cursor: inherit;
  background-color: #ddd;
  background: #ddd;
}
Nishanthi Grashia
fuente
7

Por CSS:

.disable{
   cursor: not-allowed;
   pointer-events: none;
}

Luego puedes agregar cualquier decoración a ese botón. Para cambiar el estado, puede usar jquery

$("#id").toggleClass('disable');
Alvargon
fuente
6

Para todos los que usamos bootstrap, puede cambiar el estilo agregando la clase "deshabilitada" y usando lo siguiente:

HTML

<button type="button"class="btn disabled">Text</button>

CSS

.btn:disabled,
.btn.disabled{
  color:#fff;
  border-color: #a0a0a0;
  background-color: #a0a0a0;
}
.btn:disabled:hover,
.btn:disabled:focus,
.btn.disabled:hover,
.btn.disabled:focus {
  color:#fff;
  border-color: #a0a0a0;
  background-color: #a0a0a0;
}

Recuerde que agregar la clase "deshabilitado" no necesariamente deshabilita el botón, por ejemplo, en un formulario de envío. Para deshabilitar su comportamiento, use la propiedad deshabilitada:

<button type="button"class="btn disabled" disabled="disabled">Text</button>

Un violín de trabajo con algunos ejemplos está disponible aquí .

c-chavez
fuente
4

Cuando su botón está desactivado, establece directamente la opacidad. Entonces, antes que nada tenemos que establecer su opacidad como

.v-button{
    opacity:1;    
}
Kushal Baldev
fuente
2
input[type="button"]:disabled,
input[type="submit"]:disabled,
input[type="reset"]:disabled,
{
  //  apply css here what u like it will definitely work...
}
Chetan
fuente
2

considere la siguiente solución

.disable-button{ 
  pointer-events: none; 
  background-color: #edf1f2;
}
Sahil Ralkar
fuente
Esta solución aumentará la debilidad de la aplicación / servicio que se está construyendo.
Franco Gil
1
@FrancoGil tiene razón, pero esta puede ser una forma de lograr el botón de desactivación
Sahil Ralkar
1

Y si cambias al uso de scss:

button {
  backgroud-color: #007700
  &:disabled {
    backgroud-color: #cccccc
  }
}
Akostha
fuente
0

Necesita aplicar css como se muestra a continuación:

button:disabled,button[disabled]{
    background-color: #cccccc;
    cursor:not-allowed !important;
  }
Nagnath Mungade
fuente