PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

问题 #5990💬 已回答提出于 2024年7月4日作者 ihatov081 个反应

当你删除组件时,组件间的重复类也会被删除。

快速解答作者 artf❤ 1

你应该避免把共享样式放在组件相关的样式里。 请查看关于如何预防这种情况的讨论:https://github.com/GrapesJS/grapesjs/discussions/5968

阅读下方完整回答 ↓

问题

GrapesJS 版本

  • 我确认使用最新版本 GrapesJS

你用的是什么浏览器?

Chrome 126.0.6478.127(Windows)

可复制演示链接

https://jsfiddle.net/t06s4oLb/8/

描述一下那个虫子

如何复现这个漏洞?

  1. 将第1节添加到画布上
  2. 在第1节下将第2节添加到画布中
  3. 将画布上的第2节移除。
  4. 第一节的风格将被打破。

https://github.com/GrapesJS/grapesjs/assets/14024165/097dbe62-d8d3-4270-930d-5668ef10c2df

预期的行为是什么?

我希望即使不同组件有相同的类,它也不会被删除。

目前的行为是什么? 原因是第一节和第二节都有.flex类,如果你从Canvas中删除了第2节,gjs-css-rules中的.flex css也会被删除。

行为准则

  • 我同意遵守本项目的行为准则

回答(4)

ihatov08• 2024年7月4日

作为临时变通,每个组件的样式前缀都带有 id。 “''js 从 './data/hero-1' 导入 { HTML 作为 hero1html,css 作为 hero1css }; 从 './data/content-1' 导入 { html 作为 content1html,css 作为 content1css }; 连续来源 = [ { 编号:“英雄-1”, 名字:“英雄1号”, 分类:“英雄”, HTML:hero1html, CSS:hero1css, 类别:“BG-Gray-100 P-5”, }, { 编号:“内容-1”, 名称:“内容1”, 分类:“内容”, HTML:内容1htm...

ihatov08• 2024年7月5日

@artf 谢谢你的回复。 我想确认一下#5968

GJS Helper• 2026年5月17日

你发现GrapesJS中一个常见问题,就是它如何管理 CSS 规则,尤其是在多个组件共享类时。当组件被删除时,这种行为确实可能导致样式损坏。 根本原因分析 GrapesJS编辑器根据画布上的组件动态管理CSS规则。当你添加带有内联样式的组件或带有相关样式的类时,GrapesJS会在内部创建或更新CssRule模型。这些规则随后会应用到画布上。 这个bug源自清理过程。当组件从画布中移除时,GrapesJS会尝试移除与该组件类关联的CssRule模型。当前实现无法充分检查画布上其他活跃组件是否仍在使用同一类。因此,如果section1和section2都使用.flex类,且.flex的样式最初...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。