Ambos son perfectamente válidos, y el que use depende de lo que desee hacer.
Si va a crear una clase genérica que desea ser capaz de utilizar a lo largo de todo su sitio sin tener en cuenta los elementos y donde el elemento es, usted debe única uso .class
. Un buen ejemplo de esto es algo como .icon
que puede utilizar en enlaces, artículos de lista, encabezados, etc. Y desea poder usarlos en todas partes.
Si está creando una clase que es específica de/solo funciona en un elemento de cierto tipo, también es mejor usar el elemento en el selector.Un ejemplo de esto sería una lista de viñetas que desea mostrar en una línea, ya que esta clase requiere que el HTML sea un <ul>
, debe especificarlo también en el CSS; ul.inline
. De esta forma, puede usar el nombre de clase "en línea" para otros elementos, sin que el estilo afecte a ambos.
Si solo está utilizando la clase para seleccionar el elemento pero no debe tener ningún estilo genérico, debe ser específico. Por ejemplo, es posible que desee que el primer párrafo de su elemento #blog-post
sea más grande, luego debe especificar #blog-post
y la clase; #blog-post p.first
(tenga en cuenta que estos tipos de clases raramente se necesitan más gracias a los selectores avanzados como :first-of-type
, h2 + p
, etc.).
Diciendo que ".link
es el mejor, a.link
es el segundo mejor y un selector largo es malo" es simplemente incorrecto. Todo depende de la situación.
Esto puede llevar a un caso muy grave de classitis, que IMO no vale la pena tratar de reducir los milisegundos que ni siquiera suman el tiempo dedicado a escribir un solo carácter. – BoltClock