Estoy trabajando en una página web y quiero etiquetas de estilo personalizado <button>
. Así que con CSS, dije: border: none
. Ahora funciona perfectamente en safari, pero en cromo, cuando hago clic en uno de los botones, pone un borde azul molesto a su alrededor. Pensé button:active { outline: none }
o button:focus { outline:none }
funcionaría, pero tampoco lo hago. ¿Algunas ideas?
Así es como se ve antes de hacer clic (y cómo quiero que se vea después de hacer clic):
Y esta es la frontera de la que estoy hablando:
Aquí está mi CSS:
button.launch {
background-color: #F9A300;
border: none;
height: 40px;
padding: 5px 15px;
color: #ffffff;
font-size: 16px;
font-weight: 300;
margin-top: 10px;
margin-right: 10px;
}
button.launch:hover {
cursor: pointer;
background-color: #FABD44;
}
button.change {
background-color: #F88F00;
border: none;
height: 40px;
padding: 5px 15px;
color: #ffffff;
font-size: 16px;
font-weight: 300;
margin-top: 10px;
margin-right: 10px;
}
button.change:hover {
cursor: pointer;
background-color: #F89900;
}
button:active {
outline: none;
border: none;
}
css
google-chrome
eshellborn
fuente
fuente
outline: none
esta manera a menos que esté listo para reemplazar la pérdida de accesibilidad. Ver este sitio web: outlinenone.comRespuestas:
No se recomienda hacer esto, ya que hace retroceder la accesibilidad de su sitio; Para más información, vea esta publicación .
Dicho esto, si insiste, este CSS debería funcionar:
Compruébalo o JSFiddle: http://jsfiddle.net/u4pXu/
O en este fragmento:
fuente
outline: none;
o no importa?button:focus{ outline-color: #A75000 }
... en lugar de ocultar el indicador, cámbielo a un naranja oscuro que se ajuste al estilo.¡Espere! ¡Hay una razón para ese esquema feo!
Antes de eliminar ese feo contorno azul, es posible que desee tener en cuenta la accesibilidad . Por defecto, ese contorno azul se coloca en elementos enfocables. Esto es para que los usuarios con problemas de accesibilidad puedan enfocar ese botón presionándolo. Algunos usuarios no tienen las habilidades motoras para usar un mouse y deben usar solo el teclado (o algún otro dispositivo de entrada) para la interacción con la computadora. Cuando elimina el contorno azul, ya no hay un indicador visual sobre qué elemento está enfocado. Si va a eliminar el contorno azul, debe reemplazarlo con otro tipo de indicación visual de que el botón está enfocado.
Posible solución: oscurecer los botones cuando está enfocado
Para los ejemplos a continuación, el contorno azul de Chrome se eliminó primero usando
button:focus { outline:0 !important; }
Estos son los botones básicos de Bootstrap tal como aparecen normalmente:
Aquí están los botones cuando reciben foco:
Aquí los botones cuando se presionan:
Como puede ver, los botones son un poco más oscuros cuando reciben el foco. Personalmente, recomendaría que los botones enfocados sean aún más oscuros para que haya una diferencia muy notable entre el estado enfocado y el estado normal del botón.
No es solo para usuarios discapacitados
Hacer que su sitio sea más accesible es algo que a menudo se pasa por alto, pero puede ayudar a crear una experiencia más productiva en su sitio web. Hay muchos usuarios normales que usan los comandos del teclado para navegar a través de sitios web con el fin de mantener las manos en el teclado.
fuente
Simplemente elimino el esquema de todas las etiquetas de la página seleccionando todas y aplicando el esquema: ninguno a todo :)
Como mencionó bagofcole, es posible que también deba agregar! Important, por lo que el estilo se verá así:
fuente
En mi caso de este problema tuve que especificar
box-shadow: none
fuente
box-shadow
No olvide la
!important
declaración, para un mejor resultado.Una regla que tiene la propiedad! Important siempre se aplicará sin importar dónde aparezca esa regla en el documento CSS.
fuente
outline:0 !important
es una mala experiencia de usuario y una mala práctica de desarrollo. Si está haciendo esto, asegúrese de hacer otra cosa para indicar la posición del foco (como cambiar el color de fondo del elemento).¡Eliminar
outline
es terrible para la accesibilidad! Idealmente, el anillo de enfoque aparece solo cuando el usuario tiene la intención de usar el teclado .Uso : foco-visible . Actualmente es una propuesta del W3C para diseñar el enfoque solo con teclado usando CSS, y es compatible con Firefox ( caniuse ). Hasta que otros navegadores principales lo admitan, puede usar este robusto polyfill .
También escribí una publicación más detallada en caso de que necesites más información.
fuente
outline
como tal, siempre y cuando el: enfoque del estado se hace claramente visible a través de otros medios, comoborder,
background-color
,box-shadow
, etc.:-moz-focusring
, pero al contrario de lo que dicen los documentos, no diferencia entre el clic y el foco de la pestaña. En Chrome, a partir de ahora debe habilitarAgregue esto en su archivo CSS.
fuente
Use esto:
o esto si eso no funciona:
Esto funciona para mí (FF y Chrome, al menos). En lugar de apuntar al
:focus
estado, solo apunte al:active
estado y eso eliminará el resaltado estéticamente molesto en su navegador cuando un usuario hace clic en un enlace. Pero aún conservará los estados de enfoque cuando un usuario con discapacidades pestañe o desplace las pestañas a través de una página. Ambas partes están felices. :)fuente
para este problema:
utilizar este:
resultado:
fuente
Para cualquiera que use Bootstrap y tenga este problema, usará: active: focus y solo: active y: focus, por lo que necesitará:
Con suerte, ahorré a alguien algo de tiempo para resolverlo, me golpeé la cabeza por preguntarme por qué algo tan simple no estaba funcionando.
fuente
La mayoría de las soluciones no funcionarán si está utilizando Bootstrap 4.1 y posiblemente otras versiones. Después de muchos golpes en la cabeza, descubrí que necesitas aplicar la clase shadow-none :
fuente
Esto es lo que funcionó para mí:
fuente
La solución para Chrome y otros navegadores.
fuente
pruebe este código para todos los elementos que tienen un problema de borde azul
o
fuente
Otra forma de resolver el problema de accesibilidad que aún no se ha mencionado aquí es a través de un poco de Javascript . Los créditos van a esta publicación de blog perspicaz de hackernoon: https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2
El enfoque aquí es realmente simple pero efectivo: agregar una clase cuando las personas comienzan a usar la tecla de tabulación para navegar por la página (y, opcionalmente, eliminarla cuando vuelva a cambiar al mouse. Luego puede usar esta clase para mostrar un esquema de enfoque o no) .
fuente
Me enfrenté al mismo problema, así que usé CSS simple
fuente
Si desea eliminar el mismo efecto en la entrada, puede agregar el siguiente código y el botón.
fuente
Hasta que todos los navegadores modernos comiencen a admitir css-selector : focus-visible ,
la forma más simple y posiblemente la mejor para guardar la accesibilidad es eliminar este enfoque complicado solo para los usuarios del mouse y guardarlo para los usuarios del teclado :
1.Utilice este pequeño polyfill (aproximadamente 10kb): https://github.com/WICG/focus-visible
2.Agregue el siguiente código en algún lugar de su css:
Soporte de navegador de css4-selector: foco-visible ahora muy débil:
https://caniuse.com/#search=focus-visible
fuente
Simplemente escribe
outline:none;
. No es necesario usar el pseudo elementofocus
fuente
Este es un problema en la familia Chrome y ha estado allí para siempre.
Se ha generado un error https://bugs.chromium.org/p/chromium/issues/detail?id=904208
Se puede mostrar aquí: https://codepen.io/anon/pen/Jedvwj tan pronto como agregue un borde a cualquier cosa como un botón (por ejemplo, se ha agregado role = "button" a una etiqueta) Chrome desordena y establece el estado de enfoque cuando hace clic con el mouse.
Recomiendo usar esta solución: https://github.com/wicg/focus-visible .
Solo haz lo siguiente
Agregue el script a su html:
o importar a su archivo de entrada principal si usa webpack o algo similar:
luego pon esto en tu archivo css:
Solo puedes configurar:
pero si tiene una gran cantidad de usuarios, está en desventaja para aquellos que no pueden usar ratones o para aquellos que solo quieren usar su teclado para mayor velocidad.
fuente
Tuve el mismo problema con bootstrap. Resolví con contorno y cuadro de sombra
fuente