0Pricing
CSS Academy · Lección

@scope para estilos con ámbito

Limite el alcance de las reglas CSS a subárboles específicos mediante la at-rule @scope.

@scope para estilos con ámbito es una lección gratuita de CSS Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CSS Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CSS Academy incluye 4 lecciones en total.

¿Qué es @scope?

La regla at @scope (Chrome 118+, Safari 17.4+) limita las reglas CSS a un subárbol específico del DOM. Las reglas dentro de @scope solo se aplican a los elementos que están dentro de la raíz del ámbito declarada, lo que evita que los estilos se filtren entre componentes.

Sintaxis básica

Declare un ámbito con un selector de raíz del ámbito. Todas las reglas que contiene se aplican únicamente a los descendientes de las raíces del ámbito coincidentes, no a todo el documento.

<div class="card">
  <div class="title">Scoped Title</div>
  <div class="body">Scoped body text &mdash; styles only apply inside .card.</div>
</div>

Raíz del ámbito

La raíz del ámbito (@scope (.card)) define el punto de entrada. Los elementos dentro del ámbito que coincidan con .title reciben estilos. Los elementos fuera de .card que tengan la clase .title no se ven afectados: es una verdadera encapsulación de estilos sin Shadow DOM.

Límite del ámbito (frontera del ámbito)

Puede definir opcionalmente una frontera del ámbito con to: @scope (.card) to (.nested-card). Las reglas se aplican dentro de .card, pero se detienen en los descendientes .nested-card, lo que limita los estilos a un nivel de anidamiento de componentes y excluye las instancias más profundas.

Pseudoclase :scope dentro de @scope

Dentro de un bloque @scope, :scope hace referencia al propio elemento raíz del ámbito. @scope (.card) { :scope { border-radius: 8px; } } aplica estilos directamente al elemento .card, no a sus descendientes.

Especificidad por proximidad

@scope introduce una especificidad basada en la proximidad: cuando varios ámbitos coinciden con un elemento, gana la raíz del ámbito antecesora más cercana, independientemente de la especificidad del selector. Esto evita que los estilos de componentes profundamente anidados sean sobrescritos por estilos de ámbitos antecesores lejanos.

@scope frente a CSS Modules

CSS Modules generan nombres de clase únicos mediante hashes para lograr el ámbito en tiempo de compilación: una cuestión del empaquetador de JavaScript. @scope logra el ámbito de forma nativa en el navegador, sin herramientas de compilación, nombres con hash ni sintaxis específica de un framework: CSS puro.

@scope frente a Shadow DOM

Shadow DOM crea un aislamiento completo de estilos: los estilos externos no pueden atravesarlo. @scope crea un aislamiento parcial: los estilos externos todavía pueden llegar a los elementos dentro del ámbito si su especificidad es suficientemente alta. @scope es una alternativa más ligera para aplicar ámbitos a los componentes sin un aislamiento total.

Capas con @scope

Combine @scope con @layer para obtener un control preciso de la cascada: defina los estilos con ámbito del componente dentro de una capa del componente. De este modo, puede gestionar tanto el orden de la cascada (mediante capas) como el ámbito de los estilos (mediante @scope) de forma componible y sin complicaciones al nombrar clases.

Casos de uso prácticos

Componentes de un sistema de diseño: limite todos los estilos de los botones a @scope (.button-group) para que los estilos de los botones internos nunca se propaguen fuera. Aislamiento de widgets: limite los estilos de un widget de terceros a su contenedor para evitar conflictos con los estilos globales de la página.

Compatibilidad de navegadores y alternativa

@scope es compatible con Chrome 118+, Safari 17.4+ y Firefox 128+. En navegadores que no son compatibles, los estilos dentro de @scope se ignoran y la cascada recurre a los estilos globales. Use @scope como mejora progresiva cuando aplicar ámbitos a los componentes sea útil, pero no esencial.

Compruebe sus conocimientos

¿Qué problema resuelve @scope que resulta difícil abordar únicamente con los selectores CSS tradicionales?

Resumen

@scope limita la aplicación de las reglas CSS a un subárbol del DOM declarado, lo que permite encapsular estilos de forma nativa sin Shadow DOM ni nombres de clase generados mediante hash por una herramienta de compilación. Los límites del ámbito, la especificidad basada en la proximidad y la integración con @layer convierten a @scope en un recurso fundamental para crear sistemas de diseño con ámbitos por componente usando únicamente CSS.

Preguntas frecuentes

¿La lección «@scope para estilos con ámbito» es gratis?

Sí — el texto completo de «@scope para estilos con ámbito» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CSS Academy, actualiza a CoddyKit PRO. El curso de CSS Academy incluye 4 lecciones en total.

¿Qué aprenderé en «@scope para estilos con ámbito»?

Limite el alcance de las reglas CSS a subárboles específicos mediante la at-rule @scope. Practicas CSS Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar CSS Academy?

No se requiere experiencia previa. CSS Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «@scope para estilos con ámbito»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de CSS Academy?

Sí. Cada lección de CSS Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Anidamiento nativo de CSS
  2. Pseudo-clase relacional :has()
  3. @scope para estilos con ámbito
  4. API View Transitions
← Volver a CSS Academy