每个转换工具都有其边界。提前了解这些边界,能把令人沮丧的意外变成五分钟就能完成的有计划任务。
脚本与交互性
所有 script 标签都会被移除。这是出于安全考虑——通过粘贴操作将任意 JavaScript 导入你的网站会很危险,而且它在编辑器中本来也无法可靠运行。任何由自定义 JS 驱动的功能(滑块、选项卡、计数器、折叠面板)都会以静态标记的形式到达。
应对方法:用对应的 Elementor 组件重建交互。选项卡、折叠面板、轮播、计数器和进度条都有原生组件,并且比导入的脚本更易于维护。
表单
表单的提交 action 和 method 会被移除,可见字段会保留。会向某处提交数据的表单是一种集成,而不是标记——如果把提交端点一并带过来,就会悄悄把你访客的数据发送到别人的服务器。
应对方法:将它映射到 Elementor 表单组件,并在你自己的网站上配置各项操作(电子邮件、webhook、集成)。
导航菜单
导航可以生成“导航菜单”组件,但该组件必须指向一个真实的 WordPress 菜单。无法从别人的标记中推断出你网站的菜单结构。
伪元素
::before 和 ::after 伪元素不是 DOM 节点。以这种方式绘制的装饰形状、引号、渐变叠加层和下划线强调根本不会作为元素存在,也无法成为组件。如果转换后缺少某个设计细节,伪元素是首先要怀疑的对象。
动画、过渡和粘性行为
关键帧动画、滚动效果、过渡和粘性定位都不会被保留。Elementor 有自己的动态效果和粘性控制,而且它们与编辑器的集成更好。
第三方嵌入
只保留 YouTube 和 Vimeo 的 iframe——其他所有内容都会被移除,而不是导入未知的框架。object 和 embed 标签也会被移除。
悬停和聚焦状态
只能读取元素的基础状态。悬停颜色、聚焦环和激活状态都需要在 Elementor 中重新应用。
Base64 图片和本地路径
Data URL 图片和相对文件路径无法成为媒体库附件,因此会被转换为空的图片占位——同时保留原始 alt 文本作为说明文字,以便你知道哪张图片应放在哪里。
CSS 自定义属性会被扁平化处理
如果你的源页面使用设计令牌——--brand-500、--space-4 等等——这些变量本身不会保留。转换器读取的是计算后的样式,而当样式被计算出来时,浏览器已经把每个 var() 引用解析成了字面值。例如背景为 var(--brand-500) 的按钮,转换后得到的是该变量当时所对应的颜色,而不是对这个变量的引用。
之后看起来没有任何问题,这正是它容易让人踩坑的原因:页面渲染正确,但使设计系统具备可维护性的属性已经消失了。之后要更改品牌颜色时,你就得手动编辑三十个组件。
应对方法:在 Elementor 一侧重建令牌层。在粘贴之前,先在全局颜色中定义你的调色板,在全局字体中定义你的字号阶梯,然后将导入的组件重新分配给这些全局设置。这件事只需做一次,你就能找回单一可信来源的行为。转换器正好为此提供了网站颜色和网站字体模式——它不会给导入的组件写入颜色和排版,而是让它们继承你的 Elementor 全局设置,而不是以硬编码形式出现。
命名的网格区域
网格布局会通过列和间距设置进行转换:grid-template-columns 会映射到 Elementor 网格容器,分数单位也会保留。无法映射的是 grid-template-areas——这种命名区域语法让你像画一幅小型 ASCII 图一样绘制布局,并为每个子项指定名称。
Elementor 的网格容器没有与命名区域等价的功能,因此以这种方式构建的布局会丢失其位置安排,子项会回退到正常的源代码顺序。结果不会错乱,但那也不是你的布局。
应对方法:如果你能控制源页面,请使用 grid-template-columns 加上明确的跨度来表达布局,而不是使用命名区域。如果不能,就要准备在进入 Elementor 后重新放置这些子项。
固定定位会被有意降级
任何带有 position: fixed 的元素在转换过程中都会被改写为 position: absolute,安全报告会告诉你发生过这一改动。这是少数几个工具会有意改变你的设计而不是原样重现的地方之一。
原因是为了将其限制在容器内。固定定位元素是相对于浏览器视口定位的,而不是相对于其父元素——因此,从别人页面导入的固定页头、粘性 Cookie 栏或浮动聊天气泡会脱离你粘贴到的那个区块,漂浮到你的整个网站上,出现在使用该模板的每个页面中。降级为绝对定位会把它保留在导入的区块内部,让你能够看到它并决定如何处理。
应对方法:如果你确实希望该元素固定,请在导入后使用 Elementor 自己的粘性控制进行设置。它们了解编辑器、管理栏和你的页头,而原始 CSS 规则不会。
Web 字体:名称会带过来,文件不会
排版会以值的形式转换——字体家族名称、字号、字重、行高、字母间距——这些都会进入 Elementor 的排版控件。但字体文件是另一回事。@font-face 规则指向托管在源网站上的 woff2 文件;不会有任何内容把这些文件复制到你的服务器,也不会有任何内容向 WordPress 注册该字体家族。
因此,从一个使用自托管字体的页面转换而来的标题,会带有正确的字体家族名称,但会回退到你网站上实际存在的字体。通常看起来足够接近,直到你并排对比时才会注意到。
应对方法:先在你自己的网站上安装该字体——可以通过 Elementor 的自定义字体、Google Fonts 选择或你的主题——然后再进行转换。如果该字体家族已经可用,导入的排版会立即匹配。
如何判断你碰到了哪种限制
你不必猜测。结果视图中有两项内容能直接回答这个问题:
- 安全报告会列出被移除或改写的内容——被剥离的脚本、被清理的表单操作、被丢弃的嵌入内容、由 fixed 改写为 absolute 的定位、被丢弃的 Base64 图片。如果有某个细节消失了,通常都会在这里被点名。
- 结构图会在实时预览旁边显示 Elementor 树,并且两者在悬停时会相互高亮。任何显示为红色 HTML 组件块的内容都没有原生对应项——悬停它,你就会确切看到它来自页面的哪个部分。
有了这两者,问题就不再是“为什么看起来不一样”,而变成“这个特定元素是以这种特定方式处理的”,于是修复只需两分钟,而不是一个下午。
诚实的总结
结构、文本、图片、图标、颜色、间距和排版都能很好地转换。行为、集成、任何不在 DOM 中的内容,以及任何依赖于源服务器上文件或数据的内容,都无法转换。请为导入后的简短处理环节做好计划,涵盖表单、菜单、悬停状态、动画和字体,这样整个过程就会变得可预期,而不是令人意外。