No se puede añadir AtRule personalizado (@container, @font-face)
Gracias por informar de esto, @uncldrw. El problema con No se puede añadir AtRule personalizado (@container, @font-face) parece ser una condición de carrera o un problema de sincronización de gestión de estado. Esto suele ocurrir cuando los eventos del ciclo de vida de los componentes y las modificaciones del DOM se s...
Lee la respuesta completa abajo ↓Pregunta
Versión GrapesJS
- Confirmo que se debe usar la última versión de GrapesJS
¿Qué navegador usas?
Windows, Chrome, React
Enlace de demo reproducible
/
Describe el bicho
Al intentar añadir una atRules personalizada como @container o @font-face, el CSS se compila consistentemente a @media en su lugar. He probado varios métodos, incluyendo Css.setRules y Css.addRules, así como insertar una cadena HTML, pero sin éxito.
Este es el código que he asignado:
importar { useEffect } de "react";
importar uvas de "uvasjs";
importación "grapesjs/dist/css/grapes.min.css";
importación "grapesjs/dist/grapes.min.js";
importar { bloques } de ".. /src/Uva/Bloques";
function WebBuilder() {
useEffect(() => {
const editor = grapesjs.init({
contenedor: "#gjs",
Altura: "100VH",
storageManager: false,
blockManager: {
bloques,
// },
});
editor. DomComponents.addType("component-css", {
modelo: {
Predeterminados: {
Componentes: '
<div class="container-portable"><div class="teaser-paa"><div class="teaser-paa__container"><div class="teaser-paa__wrapper"></div></div></div></div>
`,
Estilos: '
.gjs-cv-canvas{top:0; ancho:100%; altura:100%}.contenedor-portátil{width:100%; tipo de contenedor: tamaño en línea; nombre-contenedor:portable}.teaser-paa{color:#262626; width:-webkit-calc(100% - 24px); ancho:cálculo (100% - 24px); Altura: 504px; radio de frontera: 9px; Ancho máximo: 1296px; margen-izquierda:auto; margen-derecha:auto; desbordamiento:oculto}.teaser-paa__container{posición:relativo; marje:0 auto; ancho:100%; altura: 100%; posición-antecedente:50%; repetición-fondo:no-repetición; Background-size:cover}@media (min-width: 768px) { .teaser-paa{ height: 300px } }
`,
},
},
});
editor. Css.addRules(
"@container portátil (ancho-min: 768px) { .teaser-paa{ height: 300px } }"
);
}, []);
regreso (
<main>
<div id="gjs"></div>
</main>
);
}
exportar WebBuilder por defecto;
Código de conducta
- Acepto seguir el Código de Conducta de este proyecto
Respuestas (1)
Gracias por informar de esto, @uncldrw.
El problema con No se puede añadir AtRule personalizado (@container, @font-face) parece ser una condición de carrera o un problema de sincronización de gestión de estado. Esto suele ocurrir cuando los eventos del ciclo de vida de los componentes y las modificaciones del DOM se superponen, creando un estado inconsistente.
Qué probar:
- Añadir un envoltorio setTimeout para asegurar que el DOM se ha asentado: '''javascript setTimeout(() => { Tu operación aquí }, 0);
2. **Comprobar el orden de inicialización** — asegúrate de que los componentes estén completamente cargados antes de interactuar con ellos
3. **Utilizar el sistema de eventos del editor** — escuchar los eventos de finalización:
'''javascript
editor.on('component:mount', (component) => {
Es seguro interactuar con el componente aquí
});
Recomendaciones de siguientes pasos:
- Prueba con la última versión de GrapesJS si no lo has hecho
- Proporcionar un ejemplo mínimo reproducible (CodeSandbox) — esto ayuda al equipo a identificar la causa raíz más rápido
- Incluir errores de GrapesJS, de navegador y de consola en tu informe
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #4196
El IDS cambia al intentar configurar componentes en el lienzo usando json
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Chrome Enlace de demo reproducible sin en...
Issue #5990
Cuando eliminas un componente, las clases duplicadas entre componentes se eliminan.
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Chrome 126.0.6478.127 (Windows) Enlace de...
Issue #5229
Textnode con contenido "null" se representa como "null", no como espacio en blanco
Versión GrapesJS[X] Confirmo que se debe usar la última versión de GrapesJS¿Qué navegador usas? Versión de Chrome 114.0.5735.199 (Versión o...
Issue #4573
ParseStyle no es una función
Versión GrapesJS[X] Confirmo que se debe usar la última versión de GrapesJS¿Qué navegador usas? Firefox 104.0.1Enlace de demo reproducible...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.