问题 #1058💬 已回答提出于 2018年4月21日作者 tommedema1 个反应

CSS 解析器会无效地解析某些重复声明

快速解答作者 artf1

浏览器本身已经有DOM树,且所有样式信息等都可以在选中组件后按需检索 这大概是我在 grapesjs 之前尝试过做的东西,说实话,经过几周的努力,我意识到结果就是一台大而难维护、不可靠、慢的垃圾。相信我,Tom,把这么大的应用状态放在DOM里,根本不是选项。[又一次](https://github.com/artf/grapesjs/issues/1032#issuecomment-380964323),我用的是浏览器的解析器,但问题在于构建规则的CSS状态。 顺便说一句,GrapesJS 在创建新样式规则之前,会检查 [https://github.com/artf/grapesjs/blob/dev/src/css_compo...

阅读下方完整回答 ↓

问题

在最新的开发分支提交 39be1e0 上测试过。这个问题发生在我的一个模板上,所以是现实世界的问题。我花了大约半天时间制作这个缩小版测试用例,希望对你有帮助。 如果你有一个包含以下CSS的模板: 浏览器会正确地这样渲染: <img width=“609” alt=“截图 2018-04-20 下午3:14:01” src=“https://user-images.githubusercontent.com/331833/39075971-8307bb60-44ad-11e8-89ed-355801ac3c33.png”> JSFiddle:https://jsfiddle.net/szLp8h4n/192/ 但葡萄的表现是错误的: <img width=“863” alt=“截图 2018-04-20 下午3:16 04” src=“https://user-images.githubusercontent.com/331833/39076015-c52c0726-44ad-11e8-8469-c6f0f327c3d9.png”> JSFiddle:https://jsfiddle.net/szLp8h4n/194/ @artf这又是一个例子,我建议不要自己创建解析器(虽然你称它为“遍历器”),而是直接依赖浏览器的解析器。例如,当浏览器本身已有DOM树,且选中组件后可以按需检索所...

回答(3)

artf2018年4月22日

浏览器本身已经有DOM树,且所有样式信息等都可以在选中组件后按需检索 这大概是我在 grapesjs 之前尝试过做的东西,说实话,经过几周的努力,我意识到结果就是一台大而难维护、不可靠、慢的垃圾。相信我,Tom,把这么大的应用状态放在DOM里,根本不是选项。[又一次](https://github.com/artf/grapesjs/issues/1032#issuecomment-380964323),我用的是浏览器的解析器,但问题在于构建规则的CSS状态。 顺便说一句,GrapesJS 在创建新样式规则之前,会检查 [https://github.com/artf/grapesjs/bl...

tommedema2018年4月22日

@artf让我惊讶的是,这个项目变慢,因为我以为浏览器会为此高度优化,但你在这个项目上经验丰富,我相信你的判断;)

我绝对支持无条件添加所有规则的选项。这对我来说很合理,因为对我来说,浏览器才是真实的,不需要在浏览器告诉你的信息之外还做额外的检查。

你想这么做还是我应该创造个人最佳记录?如果是后者,你能告诉我这些检查是在哪里进行的吗?你之前链接的这个[getter](https://github.com/artf/grapesjs/blob/dev/src/css_composer/index.js#L223-L230)真的是吗?我预计这些检查应该是在getter之外完成的。

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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