关联推荐专区必须紧贴主商品信息下方,置于 product-main 后、独立 section 中;须用语义化 article 包裹商品卡片,添加 itemprop、tabindex 和 lazy 加载;服务端仅输出骨架,客户端动态渲染;窄屏下采用可滚动 flex 布局确保单列展示。

关联推荐专区该放在商品详情页什么位置
必须紧贴主商品信息下方,但不能嵌在 product-description 或 price-section 的 DOM 内部。浏览器滚动锚点、SEO 抓取和移动端首屏加载都依赖这个结构顺序。常见错误是把它塞进 aside 或页面最底部,导致用户滑到底才看到,转化率直接掉 60% 以上。
推荐结构:
<main class="product-page"><section class="product-main">...</section><section class="related-products" aria-label="你可能还喜欢"><h2>猜你喜欢</h2>
<div class="product-grid"></div>
</section></main>
用语义化 HTML 实现可访问且 SEO 友好的商品卡片
每个推荐商品必须用 关键属性不能少: 如果前端用 React/Vue 渲染推荐区,而服务端已输出静态 HTML 卡片, 稳妥做法: 生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力:
- 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面;
- 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”;
- 提及位于 `apps/console/src/featur 很多团队用 正确解法是放弃纯 grid,改用带容器滚动的 flex 布局: 注意: 别忘了给卡片加 包裹,不能只用
itemprop="suggestedProduct"(配合 itemscope itemtype="https://schema.org/Product")提升结构化数据得分tabindex="0" 加在卡片根元素上,确保键盘用户能聚焦到整张卡片(不是只聚焦图片或链接)loading="lazy" 必须加在 上,否则首屏卡顿明显;但不要加在父容器上——loading 属性对 无效避免 SSR 和 CSR 混合时的 DOM 不一致报错
hydration 阶段极易报 Text content does not match server-rendered HTML。根本原因是服务端没渲染价格符号、库存状态等动态字段,而客户端补全后 DOM 对不上。
占位符 + ,不写任何真实文本replaceWith() 整个 .product-grid
${price} 元 这类字符串——统一由客户端格式化,保持两端逻辑一致响应式网格在窄屏下必须保证单列且可滑动
display: grid 写四列布局,但在 iPhone SE 上直接挤成两行、文字折行、CTA 按钮被切掉。这不是 CSS 问题,是 HTML 结构没预留滑动能力。<div class="product-grid" style="overflow-x: auto; -webkit-overflow-scrolling: touch;">
<div style="display: flex; gap: 12px; padding: 8px 0;">
<article class="product-card">...</article><article class="product-card">...</article><!-- 更多卡片 -->
</div>
</div>
-webkit-overflow-scrolling: touch 在 iOS Safari 上影响巨大,缺了它滑动会卡顿;gap 不能设在容器上(旧版 Safari 不支持),必须设在子容器 flex 内部。flex-shrink: 0,否则小屏下会被压缩变形。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










