Fundamentos del CSS con Svelte

Comenzamos el módulo de CSS hablando de lo más simple: cómo haríamos para incorporar estilos a una aplicación de Svelte. El resultado probablemente no te sorprenda: dentro de la etiqueta style de cada componente de Svelte se pueden insertar estilos CSS y usarlos localmente en el componente como se ha hecho toda la vida.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Cuando trabajamos con Svelte, una de las grandes ventajas que encontramos es la forma en que podemos manejar los estilos CSS directamente dentro de cada componente. Esto nos permite modificar la apariencia de nuestra aplicación web sin tener que depender de hojas de estilo globales extensas y difíciles de mantener. En lugar de eso, cada componente se encarga de declarar sus propios estilos, lo que facilita la personalización y el mantenimiento visual.

Para aplicar estilos locales en Svelte, utilizamos la etiqueta style dentro del componente. Allí podemos escribir CSS como lo haríamos normalmente, usando selectores de clases, identificadores o cualquier otro selector válido. Por ejemplo, si tenemos un párrafo que actúa como etiqueta y queremos que destaque, podemos asignarle una clase y definir su estilo dentro del mismo componente:

.label {
  color: lightblue;
  font-size: 1.3rem;
  text-decoration: underline;
}

Este estilo solo afectará a los elementos con la clase .label dentro de ese componente, sin interferir con otros elementos que puedan tener la misma clase en otros componentes.

Un aspecto muy interesante es cómo Svelte maneja internamente la encapsulación de estilos para evitar conflictos entre componentes. Aunque asignemos la misma clase a elementos en diferentes componentes, Svelte añade automáticamente un sufijo único a cada clase cuando compila la aplicación. Esto significa que, aunque dos componentes tengan una clase llamada .label, internamente se transforman en algo como .label.xsem y .label.j5pf, donde xsem y j5pf son identificadores únicos generados para cada componente.

Gracias a este mecanismo, podemos reutilizar nombres de clases sin preocuparnos por que los estilos se mezclen o se sobrescriban accidentalmente. Cada componente mantiene sus estilos aislados, lo que mejora la modularidad y la escalabilidad de la aplicación.

Además, no estamos limitados a usar solo clases para los estilos. Podemos aplicar selectores directos a etiquetas HTML dentro del componente, como input, y también utilizar pseudoclases como :hover para definir comportamientos interactivos. Por ejemplo, para cambiar el color del borde de un input cuando el usuario pasa el ratón por encima, podemos escribir:

input {
  font-family: Arial, sans-serif;
  font-size: 1.1rem;
}

input:hover {
  border-color: black;
}

Estos estilos también se aplican de forma local, gracias al mismo sistema de encapsulación, asegurando que no afecten a otros inputs fuera del componente.

En resumen, la forma más sencilla y efectiva de manejar estilos en Svelte es declarar la etiqueta style dentro de cada componente y escribir allí los estilos que necesitemos. Esto nos permite tener un control preciso sobre la apariencia de cada parte de nuestra aplicación, evitando conflictos y facilitando el mantenimiento a medida que el proyecto crece.

Lista de reproducción
  1. 1
    ¿Qué es Svelte?
    9 minutos
  2. 2
    ¿Cómo crear un proyecto de Svelte?
    7 minutos
  3. 3
    Creando nuestro primer componente
    7 minutos
  4. 4
    Datos dinámicos y props
    7 minutos
  5. 5
    Anidando componentes
    7 minutos
  6. 6
    Capturando eventos
    7 minutos
  7. 7
    Eventos y reactividad
    8 minutos
  8. 8
    Atributos condicionales e IF
    9 minutos
  9. 9
    Bucles
    11 minutos
  10. 10
    Bloques await
    7 minutos
  11. 11
    Bind
    8 minutos
  12. 12
    bind:this
    6 minutos
  13. 13
    ¿Para qué nos sirve un evento personalizado?
    6 minutos
  14. 14
    createEventDispatcher
    6 minutos
  15. 15
    Eventos con detalles
    7 minutos
  16. 16
    Reenviando eventos
    6 minutos
  17. 17
    Ejemplo de eventos (primera parte)
    12 minutos
  18. 18
    Ejemplo de eventos (y segunda parte)
    16 minutos
  19. 19
    Modificadores de eventos
    6 minutos
  20. 20
    Fundamentos del CSS con Svelte
    9 minutos
  21. 21
    Clases condicionales
    7 minutos
  22. 22
    Estilos en línea y variables CSS
    8 minutos
  23. 23
    Estilos globales
    6 minutos
  24. 24
    Importar hojas de estilo externas
    5 minutos
  25. 25
    Reactividad experta con el operador $
    8 minutos
  26. 26
    Slots (parte 1 de 2)
    5 minutos
  27. 27
    Slots (parte 2 de 2)
    7 minutos
  28. 28
    Directivas svelte:window, svelte:head, svelte:body
    4 minutos
  29. 29
    Actualizar de Rollbar a Vite 3
    11 minutos
  30. 30
    Exportar a Web Components
    10 minutos
  31. 31
    Integrar TypeScript, SCSS, PostCSS...
    8 minutos
  32. 32
    Hasta aquí (por ahora)
    3 minutos
  33. 33
    Lo que se viene con Svelte 5
    13 minutos