Setting background image results in duplicate style rules
Question
Hi @artf,
I have one strange little problem. I have a custom trait which has an implementation for setting images and background images. When I set the background image a second time by using the code below I'm getting duplicated styling rules on the element Id.
var style = self.target.getStyle();
// style is empty even though the stylemanager shows the default background image from the class style rule
style['background-image'] ='url("' + newUrl + '")';
self.target.setStyle(style);
I already played around a bit with the forceClass and avoidInlineStyle but it doesn't really help with this problem. Maybe related to this problem: The element also has a class with a default background image. When I open the StyleManager I only see that background image in there. Not the images from the Id style rules. Looks like it doesn't really use them at all?
Thanks in advance!
Answers (3)
Hi, i have same problem. In preview https://jsfiddle.net/szLp8h4n/77/ When I change the background of the box in the preview it changes, but in the code it generates another id. If you save the template in this way and try to display it on the page it does not change the background.
Thanks for the example @samuelmattos currently the only workaround I can give you is starting to use this option:
grapesjs.init({
// Usually when you update the `style` of the component this changes the
// element's `style` attribute. Unfortunately, inline styling doesn't allow
// use of media queries (@media) or even pseudo selectors (eg. :hover).
// When `avoidInlineStyle` is true all styles are inserted inside the css rule
avoidInlineStyle: true,
})
Probably in some next release I'll set it to true by default. Unfortunately, this will not gonna fix the bug of duplicated rules but at least the rule will be placed in the way to guarantee its override. I've started to investigate the bug
First of all, I suggest using self.target.addStyle({'background-image': 'url(...)'}) for your case which is less verbose.
Maybe related to this problem: The element also has a class with a default background image. When I open the StyleManager I only see that background image in there. Not the images from the Id style rules. Looks like it doesn't really use them at all?
Well if the Style Manager sees the class on the selected component you will get its styles, try to deselect the class (by using the checkbox)
Related Questions and Answers
Continue research with similar issue discussions.
Issue #933
Setting backgroud image results in duplicate style rules
Hi @artf, I have one strange little problem. I have a custom trait which has an implementation for setting images and background images. Wh...
Issue #582
background image issue
Hi @artf one more issue when using custom manager , what do we set on background images? editor.getSelected().set('src', url) not working o...
Issue #1258
Style is not copying after cloning the element after Save
Hi @artf. At the first time before saving the template, When I make one element and clone it, the style is coming in the clonned element. T...
Issue #771
Image src is not updating
Hi @artf, I have updated the image src using below code: editor.getSelected().set('attributes', {'src': image_Url}); but when i set all the...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.