Cambiar las propiedades de CSS en un componente con una clase existente modifica esa clase en lugar de añadir una nueva
Pensaba que el comportamiento podría ser algo así: Configuración por defecto (configuración actual):Si el elemento no tiene clases, crear una clase única basada en cid y aplicar estilosSi el elemento tiene clases, aplicar estilos a la unión de esas clases (o a las clases seleccionadas en la interfaz) Comportamiento al...
Lee la respuesta completa abajo ↓Pregunta
Puedes ver esto en acción en la demo (http://grapesjs.com/demo.html). Selecciona uno de los elementos de navegación (por ejemplo, 'Web'); ten en cuenta que ya existe una clase de 'elemento de menú'. Si ahora cambias algunas propiedades, como la alineación del texto, se aplican esos cambios a la clase de elemento del menú, que afecta a las otras instancias ('Plantilla', 'Constructor').
¿Es posible forzar a GrapesJS a aplicar una nueva clase 'única' y aplicar los cambios allí, similar a cómo funciona si haces cambios en un componente sin clases existentes (por ejemplo, 'c1234')?
En última instancia, quiero que cualquier cambio de estilo solo se aplique al objeto seleccionado, nunca a otras instancias del mismo tipo.
Gracias
Respuestas (3)
Pensaba que el comportamiento podría ser algo así:
Configuración por defecto (configuración actual):
- Si el elemento no tiene clases, crear una clase única basada en cid y aplicar estilos
- Si el elemento tiene clases, aplicar estilos a la unión de esas clases (o a las clases seleccionadas en la interfaz)
Comportamiento alternado
- Probar si un elemento tiene una clase existente basada en el cid; si no existe, crear uno
- Aplicar siempre estilos personalizados solo a la clase cid
Hola @thecodefish ¿qué opinas de este enfoque? https://codepen.io/artf/pen/jaaKvq
Allí verás cómo hacer que los selectores sean privados (no estilizables por el usuario) y el uso de la nueva opción 'avoidInlineStyle', que permite estilizar componentes (no selectores de clase) sin perder la respuesta ni el uso de estados (por ejemplo: hover).
Diría que tienes dos opciones:
- Simplemente desactiva la clase, en este caso, el ámbito del gestor de estilos cambiará al componente y no a la regla
- Añade una nueva clase al componente, en lugar de la regla '.menu-item' obtendrás '.menu-item.tu-nuevo-clase'
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #3663
Las propiedades de estilo predeterminadas no se vuelven a seleccionar al deslizar dispositivos
Hola, No se seleccionan las propiedades de estilo predeterminadas al cambiar de dispositivo. Pasos para reproducirse: Abrir [http://grapesj...
Issue #1621
Pregunta sobre los nombres de clase CSS usados en la demo
En la página de demostración https://grapesjs.com/demo.html, veo que los elementos están centrados usando una clase llamada 'ancho de conte...
Issue #568
¿Redimensionar los bloques con ratón?
He notado que en la demo actual solo es posible redimensionar la mayoría de los bloques usando el editor de propiedades, no arrastrando anc...
Issue #4859
Editar la propiedad CSS establece un estilo a una clase común en lugar de elemento
Versión GrapesJS[X] Confirmo que se debe usar la última versión de GrapesJS¿Qué navegador usas? Chrome v108Enlace de demo reproducible http...
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.