¿Cuál es la mejor manera de definir una regla global en CSS?

El selector “cualquiera” es una opción

Como se ha mencionado por algunas personas aquí, el selector “any” o “asterisk” apunta a todo . Tenga en cuenta que no tiene especificidad, por lo que se puede sobrescribir muy fácilmente:

* {
esquema: ninguno;
}

Pero esto no es una buena práctica [1]

No solemos utilizar el selector de asterisco de esta manera porque es muy amplio. Y porque tiene una especificidad de 0,0,0,0; Se sobrescribe fácilmente.

El Meyer Reset no usa este selector [2], ni el Normalizar [3]. Debido a que el selector “cualquiera” apunta a cada elemento, esto podría afectar el rendimiento de la página a largo plazo porque el navegador tiene que aplicar esta regla a todo . Cuanto más grande sea tu HTML, más trabajo tendrá que hacer el motor de renderizado debido a tu selector “any”

Adopta el enfoque Normalizar [4]

Si observa cómo se escribe Normalizar, contiene esto;

/ **
* Eliminar el esquema en los enlaces enfocados cuando también están activos o suspendidos
* en todos los navegadores (con opiniones).
* /
a: activo,
a: desplazarse {
ancho de contorno: 0;
}

/ **
* Eliminar el borde interior y el relleno en Firefox.
* /
botón :: – moz-focus-inner,
[type = “button”] :: – moz-focus-inner,
[type = “reset”] :: – moz-focus-inner,
[type = “submit”] :: – moz-focus-inner {
estilo de borde: ninguno;
relleno: 0;
}

/ **
* Restaurar los estilos de enfoque sin establecer por la regla anterior.
* /
botón: -moz-focusring,
[type = “button”]: – moz-focusring,
[type = “reset”]: – moz-focusring,
[type = “submit”]: – moz-focusring {
esquema: 1px ButtonText punteado;
}

En lugar de apuntar a todo , solo apunta a cosas que podrían tener un esquema para comenzar (enlaces, botones, entradas).

Apunte solo a lo que necesita apuntar

No todos los elementos mostrarán un esquema por defecto. Por lo general, los únicos que muestran uno son los que se pueden enfocar: ancla, botón, entrada, área de texto, detalles / resumen

Apunte a los elementos que son enfocables, elimine el contorno de esos. No use el selector *.

Notas al pie

[1] (¿por qué) se considera perjudicial el selector de estrellas CSS?

[2] Eric Meyer “Restablecer CSS” 2.0

[3] necolas / normalize.css

[4] necolas / normalize.css

El selector * funciona, pero generalmente es mejor ser más específico. No sabe qué cambiará en el futuro, por lo tanto, seleccione un selector específico o un grupo de selectores. Por ejemplo:

input, textarea {esquema: 0; }

apuntará a todas las entradas y áreas de texto en el sitio y establecerá sus contornos en 0.

use * para seleccionar todos los elementos

Puede establecer una regla predeterminada utilizando un asterisco:

* {
estilo de borde: ninguno;
}

Sin embargo, ningún borde es el predeterminado de todos modos, por lo que no sería necesario.