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

仅用CSS如何让不同父级的元素与另一元素保持相同宽高?

解答

可以实现,目前有多个纯CSS方案满足需求,无需JavaScript、无需空白占位结构、无固定尺寸、完全响应式,代码简洁:

方案1:anchor-size() 锚点尺寸绑定(最贴合需求)

兼容版本:Chrome 125+、Edge 125+、Safari 17.4+
这个方案可以直接绑定任意DOM元素的尺寸,完全不受父层级限制,不需要计算比例,源元素尺寸变化时目标元素会自动同步。
实现代码如下:

<div class="parent1">
    <div id="child1-width">a</div>
    <div>b</div>
    <div>c</div>
</div>
<div class="parent2">
    <div></div>
</div>
.parent1 {
  display: flex;
}
.parent1 > div {
  flex: 1; /* 三个子元素等分父容器宽度 */
}
/* 给源元素定义锚点名 */
#child1-width {
  anchor-name: --child1-ref;
}
/* 目标元素直接引用锚点的宽度 */
.parent2 > div {
  width: anchor-size(--child1-ref width);
}

方案2:容器查询单位(兼容性更好)

兼容版本:Chrome 105+、Firefox 110+、Safari 16+
如果需要兼容更旧的浏览器,可以用容器查询单位实现,核心是把源元素的父容器声明为查询容器,之后任意位置的元素都可以引用该容器的尺寸单位计算对应宽度。
实现代码如下:

/* 声明parent1为行内尺寸查询容器,自定义容器名避免冲突 */
.parent1 {
  display: flex;
  container-type: inline-size;
  container-name: child1-container;
}
.parent1 > div {
  flex: 1;
}
/* 目标元素宽度为容器宽度的1/3,和child1-width的等分宽度完全一致 */
.parent2 > div {
  width: 33.333cqw;
  container: child1-container;
}

方案3:Subgrid 轨道同步(适合父元素同级的场景)

兼容版本:Chrome 117+、Firefox 71+、Safari 16+
如果两个父元素.parent1和.parent2是同一个顶级Grid容器的直接子元素,可以用Subgrid同步列轨道,自动实现内部元素宽度对齐:

/* 顶级容器定义3列等宽Grid */
.top-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
.parent1, .parent2 {
  /* 继承顶级容器的列轨道 */
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: subgrid;
}

这种场景下.parent2里的第一个子元素会自动和.parent1里的第一个子元素宽度完全一致,不需要额外定义尺寸。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:27:04