Issue #2536💬 RespondidoAbierto el 29 de enero de 2020por andy-awareReacciones 3

Imagen de fondo en línea

Respuesta rápidapor pouyamiralayi1

Hola @awaredigital StyleManager se dirige tanto a Componentes como a CssRules, así que hazlo como abajo: ¡Salud!

Lee la respuesta completa abajo ↓

Pregunta

Hola,

Leyendo la documentación, no encuentro ningún sitio que explique qué quiero hacer.

Actualmente, Grapes coge la imagen de fondo y la pone en el estilo, pero quiero tomar esta imagen y no añadirla a un estilo de fondo, quiero ponerla en un elemento de datos en el elemento seleccionado.

He estado mirando:

editor.on('component:styleUpdate', function(e, i){});

Pero dentro de esto, no encuentro los atributos correctos que necesito para activar el cambio, tampoco parece actualizarse cuando se añaden nuevos elementos al lienzo. Puedo estar equivocado, pero estoy dando vueltas en círculos.

Respuestas (3)

pouyamiralayi30 de enero de 2020

Hola @awaredigital StyleManager se dirige tanto a Componentes como a CssRules, así que hazlo como abajo:

editor.on('component:styleUpdate:background-image', component => {
        const sm = editor. StyleManager
        const model = sm.getModelToStyle(component)
        el modelo puede ser un Componente o una CssRule
        const bg = model.getStyle()['imagen-fondo']
        const idx = bg.toString().indexOf('url(')
        const newBg = bg.substr(idx + 'url'.length, bg.length - 1)
        si (newBg != '(ninguno)') {
            component.addAttributes && component.addAttributes({'data-element': newBg})
        }
    })

¡Salud!

andy-aware30 de enero de 2020

Eso es genial. ¿Cómo detengo los datos de

model.getStyle()['imagen-fondo']

¿ser aprobado por el CSS? Solo la imagen de fondo.

Gracias

pouyamiralayi30 de enero de 2020

@awaredigital he probado el código anterior y funcionaba bien. Pero para el error, puedes marcar ''BG'' antes de seguir procesando porque, después de actualizar el estilo de componentes, puede que la llamada vuelva a aparecer, que es tu caso aquí:

si (bg != nulo) {
    const idx = bg.toString().indexOf('url(')
    //...
}

¡Salud!

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.