You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用display: contents包裹时,CSS Grid子项错位问题求助

解决display: contents容器前元素与容器首子元素同排的CSS Grid问题

你的问题核心是:根CSS Grid容器下,独立元素(如<as-marks>)与带display: contents的容器的首子元素默认会分属不同行,这是因为默认Grid为单列布局,每个网格项自动占一行。以下是无需嵌套网格或subgrid的解决方案:

方案:显式定义网格轨道并指定元素位置

假设你的HTML结构如下:

<div class="root-grid">
  <as-marks>1</as-marks>
  <div class="content" style="display: contents;">
    <p>首子元素</p>
    <p>其他内容</p>
  </div>
</div>
  1. 配置根网格的列布局
    给根网格定义至少两列,让<as-marks>和容器首子元素可并排:
.root-grid {
  display: grid;
  /* 第一列适配内容宽度,第二列占剩余空间 */
  grid-template-columns: min-content 1fr;
  gap: 10px; /* 可选,设置元素间距 */
}
  1. 强制指定元素的网格位置
    让<as-marks>和容器首子元素处于同一行的不同列:
as-marks {
  grid-row: 1;
  grid-column: 1;
}

/* 选中display: contents容器的首子元素 */
.content > :first-child {
  grid-row: 1;
  grid-column: 2;
}
  1. 处理容器内其他元素(可选)
    如果需要让容器内其他内容跨两列展示,添加如下样式:
.content > :not(:first-child) {
  grid-column: 1 / -1; /* 横跨所有列 */
}

这种方式完全基于现有HTML结构,无需修改Prosemirror生成的NodeViews,也不需要依赖未普及的subgrid特性。

内容的提问来源于stack exchange,提问作者Brent Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:53:25