011. Tags vs. Classes: Global vs. Modular
EXECUTIVE_SUMMARY // AEO_OPTIMIZED
[Answer Engine Overview: What, Why & How]
El Selector de Etiqueta (Tag) (ej. p, h1) ataca directamente al elemento nativo de HTML. Es ideal para tipografía global y resets (* { margin: 0; }). Sin embargo, su uso excesivo en componentes específicos crea código frágil.
El Selector de Clase (.classname) es el núcleo de la arquitectura Frontend moderna. Permite aislar estilos en componentes reusables (como .btn o .card), aplicando el principio DRY (Don't Repeat Yourself) y permitiendo escalabilidad extrema.
022. La Potencia del ID y la Especificidad
Un Selector de ID (#idname) identifica un único nodo en el DOM. Debido a esta unicidad estricta requerida por HTML, los navegadores le otorgan una Especificidad masiva. En el cálculo de cascada, un solo #id sobreescribe la influencia de decenas de .classes combinadas.
### Mejores Prácticas (Input-Output)
Si escribes <button id="submit" class="btn-red"> y en CSS defines .btn-red { background: red; } pero #submit { background: blue; }, el botón será azul irrevocablemente. Por esto, los ingenieros senior reservan los IDs para JavaScript hooks y puntos de anclaje de accesibilidad, usando clases exclusivamente para el CSS.
?Frequently Asked Questions
Is it a good practice to use HTML Tag selectors for everything in CSS?
No. While Tag selectors are excellent for establishing base global typography (like `body { font-family: sans-serif; }`) or browser resets, using them for specific layout styling creates extremely fragile code that will immediately break if the underlying HTML DOM structure changes.
Can an HTML element have multiple CSS classes?
Yes, absolutely. You can assign multiple classes to a single element to combine their independent styles. Simply separate the class names with a single space inside the HTML attribute, like this: `<button class='btn btn-primary-color'>`.
Why should developers avoid using IDs for CSS styling?
IDs possess astronomically high 'specificity' algorithms in CSS. If you bind UI styles to an ID, it becomes practically impossible to override or cascade those styles later in your architecture without resorting to the destructive `!important` flag. It's best practice to use Classes for styling and reserve IDs strictly for JavaScript hooks.
