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

问题 #5339💬 已回答提出于 2023年8月26日作者 rozek0 个反应

DragMode:“absolute” 表现怪异

快速解答作者 rozek

抱歉——这是我这边的问题,在编辑器里才显现出来——抱歉打扰了!

阅读下方完整回答 ↓

问题

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 版本 1.56.20 Chromium:115.0.5790.171(Offizieller 构建)(arm64)可复制演示链接 没有描述一下那个虫子 我希望编辑器里的组件可以通过拖动移动。经过一些研究,我发现 实现此功能是必要的。至少,我的组件现在可以移动了......但是,由于编辑器使用包裹器包裹实际组件视图,包装器位置可能是正确的,但视图位置现在相对于包装器测量,这是错误的: <img width=“284” alt=“moving-component” src=“https://github.com/GrapesJS/grapesjs/assets/514882/60685671-95d3-41da-9906-bf1e1e5953bc”> 这种行为的技术原因(也是我认为这是“bug”的原因)是封装器和其内容都分配了相同的 HTML ID——这总是错误的,因为 ID 必须在 HTML 文档中是唯一的: DOM中的元素: <img width=“534” alt=“DOM” src=“https://github.com/GrapesJS/grapesjs/assets/514882/99dbad4b-883d-4569-a996-c3889682c777”> ...以及它们的 CSS 设...

回答(2)

rozek• 2023年8月26日

抱歉——这是我这边的问题,在编辑器里才显现出来——抱歉打扰了!

GJS Helper• 2026年5月17日

你描述的dragMode: 'absolute'导致组件偏移的问题,确实源自一个根本性的HTML违规:DOM内复制id属性。你的分析和截图准确地定位了根本原因。 根本原因分析 当GrapesJS启用dragMode: 'absolute'时,编辑器会对组件的主包装元素(例如<div class="gjs-comp-wrapper" data-gjs-id="c123">)应用position: absolute并更新top/left CSS属性,以实现自由形式拖拽。这正是预期的行为。 然而,你的截图清楚地显示,同样的 HTML id(例如 id="c123")被分配给了两个gjs-comp-...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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