Issue #404✓ ResueltoAbierto el 11 de octubre de 2017por thecodefishReacciones 9

Cambiar las propiedades de CSS en un componente con una clase existente modifica esa clase en lugar de añadir una nueva

Respuesta rápidapor thecodefish5

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)

👍 Muy útilthecodefish11 de octubre de 2017

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
artf17 de noviembre de 2017

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).

artf11 de octubre de 2017

Diría que tienes dos opciones:

  1. Simplemente desactiva la clase, en este caso, el ámbito del gestor de estilos cambiará al componente y no a la regla
  2. 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.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

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 →
Opción premium

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.