Herramientas CSS

Gratis Constructor de reglas CSS @scope

Genere reglas CSS @scope para estilizar subarboles DOM sin BEM ni CSS Modules.

Cargando herramienta...

Qué es Constructor de reglas CSS @scope?

La regla @scope CSS permite a los desarrolladores definir un límite para las reglas de estilo, limitando su efecto a un subárbol DOM específico. Esto resuelve el problema clásico de ámbito en CSS sin BEM, CSS Modules o Shadow DOM. La regla @scope toma un selector de límite superior (la raíz del ámbito, requerido) y un selector de límite inferior opcional (el límite del ámbito). Los estilos dentro de @scope no se filtran fuera del subárbol, y los estilos fuera de @scope no sobrescriben las reglas con ámbito sin una coincidencia de selector intencional. Las reglas con ámbito tienen menor especificidad que las reglas globales sin ámbito, lo que hace que las sobrescrituras sean predecibles e intencionales.

Respuesta rápida

CSS @scope limita las reglas de estilo a un subárbol DOM, previniendo fugas de estilo sin BEM o Shadow DOM. Configure un límite superior (raíz del ámbito) y un límite inferior opcional (límite del ámbito). Las reglas con ámbito tienen menor especificidad que las reglas sin ámbito para sobrescrituras predecibles. Chrome 118+, Safari 17.4+, Firefox 128+ (Baseline 2025).

Last updated: 2026-06-02

Limitaciones

  • @scope no crea un nuevo contexto de apilamiento, aislamiento de z-index o contención: solo limita la coincidencia de selectores. Propiedades como z-index, contadores CSS y propiedades personalizadas aún interactúan a través de los límites del ámbito.
  • Los selectores de raíz de ámbito demasiado amplios (como una clase común usada en muchos lugares) pueden causar aplicación de estilo inesperada. Cada regla @scope se evalúa para cada elemento que coincide con la raíz del ámbito, por lo que los árboles de ámbito complejos pueden afectar el rendimiento en páginas con muchos elementos DOM.
  • En navegadores que no soportan @scope, las reglas dentro de la regla se ignoran completamente, no se des-ambitan. Si se requiere soporte amplio de navegadores, duplique las reglas con ámbito como reglas sin ámbito fuera del bloque @scope como respaldo.

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

Cómo usar esta herramienta

  1. Ingrese el selector de raíz del ámbito: el elemento que define el límite superior. Todas las reglas de estilo dentro del bloque @scope se aplican solo dentro del subárbol de este elemento.
  2. Añada opcionalmente un selector de límite del ámbito: el límite inferior que restringe la profundidad de aplicación de los estilos con ámbito. Las reglas de estilo no se aplican a elementos dentro del límite del ámbito o más profundos.
  3. Escriba las reglas de estilo CSS dentro del bloque @scope usando sintaxis CSS estándar. Estas reglas tienen menor especificidad que las reglas globales sin ámbito que se dirigen a los mismos elementos.
  4. Copie el CSS @scope generado y añádalo a su hoja de estilos. Coloque las reglas @scope después de los valores predeterminados globales pero antes de las sobrescrituras específicas de componentes para la cascada más predecible.

Para qué puedes usarla

  • Limitar los estilos de un widget a su elemento contenedor para que no se filtren al resto de la página, eliminando la necesidad de nomenclatura BEM en cada elemento.
  • Aplicar diferentes estilos de enlace dentro de una barra lateral versus el área de contenido principal sin escribir selectores de mayor especificidad ni usar !important.
  • Restringir los estilos de embebidos de terceros a su div contenedor para que el CSS interno del embebido no afecte el diseño de la página circundante.

Casos de uso

Ejemplos prácticos

Ejemplo

Widget de barra lateral con estilos aislados

Un sitio de noticias tiene un widget de barra lateral que necesita colores de enlace y tamaños de fuente distintos. Usando @scope (.sidebar) { a { color: #555; font-size: 14px; } }, los estilos de enlace se aplican solo dentro de .sidebar. Los enlaces en el área de contenido principal no se ven afectados, y no se requiere renombramiento de clases BEM en los elementos de la barra lateral.

Ejemplo

Estilos de tarjeta con ámbito con límite inferior

Una biblioteca de componentes tiene un componente de tarjeta que debe estilizar sus hijos inmediatos pero no modificar elementos dentro de instancias de tarjeta anidadas. Usando @scope (.card) to (.card-inner) { ... }, los estilos con ámbito se aplican dentro de .card pero se detienen antes de .card-inner, previniendo conflictos de estilo en diseños de tarjeta anidados.

Errores comunes

  • Usar @scope sin entender que las reglas con ámbito tienen menor especificidad que las reglas globales: si una regla global y una regla con ámbito se dirigen al mismo elemento, la regla global gana. Esto es intencional para sobrescrituras fáciles pero puede ser sorprendente si espera que las reglas con ámbito siempre se apliquen.
  • Olvidar que @scope no crea un nuevo contexto de apilamiento o contención: a diferencia de Shadow DOM, @scope no aísla contadores CSS, z-index o contención de pintura. Solo limita la coincidencia de selectores dentro del subárbol DOM.
  • Aplicar @scope con un selector de raíz de ámbito demasiado amplio (como div o *): esto contradice el propósito del ámbito y puede causar un impacto en el rendimiento ya que el navegador debe evaluar la raíz del ámbito contra muchos elementos.

Verificación

  1. En Chrome 118+, aplique el CSS @scope generado a una página con múltiples secciones. Verifique que los estilos dentro de @scope solo se apliquen a elementos dentro del subárbol de la raíz del ámbito y no a elementos idénticos fuera de él.
  2. Añada una regla global sin ámbito que se dirija a los mismos elementos que la regla con ámbito. Verifique que la regla global tenga prioridad, confirmando que las reglas con ámbito tienen menor especificidad que las reglas globales.

FAQ

Preguntas sobre Constructor de reglas CSS @scope

¿En qué se diferencia @scope de Shadow DOM para el aislamiento de estilos?

Shadow DOM proporciona encapsulación completa: los estilos dentro de una shadow root no pueden afectar la página anfitriona, y los estilos de la página anfitriona no pueden penetrar en el shadow tree. @scope solo limita la coincidencia de selectores a un subárbol DOM pero no previene la herencia de propiedades heredables (como font-family o color), no crea un nuevo fragmento de documento y no aísla contadores CSS, z-index o propiedades personalizadas. @scope es más ligero y no requiere reestructuración DOM, mientras que Shadow DOM proporciona garantías más fuertes a costa de cambios DOM más significativos.

¿Reemplaza @scope a BEM o CSS Modules?

@scope reduce pero no reemplaza completamente a BEM o CSS Modules. Para ámbito simple de componentes dentro de un único árbol DOM, @scope puede eliminar la necesidad de la nomenclatura bloque-elemento-modificador de BEM dentro de un límite de ámbito. Sin embargo, para componentes profundamente anidados, ámbitos múltiples o límites de componentes entre frameworks, BEM o CSS Modules siguen proporcionando una nomenclatura más clara y un comportamiento más predecible. @scope se usa mejor como complemento de metodologías existentes, no como reemplazo total.

¿Qué sucede si anido reglas @scope?

Las reglas @scope anidadas son compatibles. Una regla @scope interna se evalúa en relación con la raíz de su ámbito externo. Las reglas de estilo en el ámbito interno se aplican a elementos que coinciden con ambos límites de ámbito. Esto es útil para jerarquías de componentes donde el ámbito de un componente hijo debe evaluarse dentro del contexto del ámbito padre. La menor especificidad de las reglas con ámbito se aplica a cada nivel de ámbito independientemente.

¿Qué navegadores soportan CSS @scope?

@scope es Baseline 2025, compatible con Chrome 118+, Edge 118+, Safari 17.4+ y Firefox 128+. Esto cubre más del 90% del uso global de navegadores a mediados de 2026. @scope puede usarse de forma segura en producción con estilos de respaldo para navegadores no compatibles: las reglas dentro de @scope simplemente se aplican globalmente sin ámbito en navegadores que no soportan la regla.

Herramientas relacionadas

Más herramientas css

Prueba también

Prueba también