问题 #391✓ 已解决提出于 2017年10月7日作者 tomichal7 个反应

命名空间CSS?

快速解答作者 danfitz363

你觉得可以直接在 Grapejs 生成的所有类名前缀吗?如果不是用.row,而是用.grape-row之类的(我可能会把前缀设为变量),你大多能得到@tomichal想要的效果。

阅读下方完整回答 ↓

问题

你好, 有没有办法设置 grapesjs 编辑器,让为 HTML 内容生成的 CSS 带有命名空格?换句话说,如何避免编辑器中为创建/编辑内容定义的样式规则泄露到网站页面的其他部分?

以我的网站为例,用户可以编辑页面的大部分内容,但不能全部编辑——其余部分、HTML 内容和 CSS 由服务器动态生成(这是一个 Rails + Angular 网站)。

我发现如果我用带列的行,grapesjs 编辑器生成的 CSS 会有一个“行”类的定义(例如 “.row { ... }”)。不过,我用的是一个CSS库,它为“行”类提供了自己的定义,所以grapesjs的定义和我全站CSS的定义冲突了。

感谢大家对这个问题的任何帮助和建议!

回答(3)

👍 最有帮助danfitz362017年10月10日

你觉得可以直接在 Grapejs 生成的所有类名前缀吗?如果不是用.row,而是用.grape-row之类的(我可能会把前缀设为变量),你大多能得到@tomichal想要的效果。

artf2018年5月24日

实际上,你可以在新选择器上添加一个监听器,并在上面添加一个前缀 “''js const 前缀 = 'myprefix-'; editor.on('selector:add', selector => { const name = selector.get('name'); 如果 (selector.get('type') === 编辑器。SelectorManager.Selector.TYPE_CLASS && name.indexOf(前缀) !== 0) { selector.set('name',前缀 + name); } }); ```

devmohitagarwal2019年11月4日

你好, 想做沙盒设计的人可以试试导出的CSS前缀,我们也有同样的使用场景,采取了Sas的方式。

为此,我使用了sass.js(https://github.com/medialize/sass.js/)

步骤:

  1. 将css字符串与你的自定义类一起包裹。比如说MyCustomClass。
  2. 从上述库运行 sass.compile,将 scss 转换为 css,后者已与 gaten() 类沙箱化,

这样你就不会遇到冲突的问题。

这个回答是从另一个问题中复制来的。#2363

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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