PAYATHON 2026

React flex 容器中的 SVG 分隔线如何匹配输入框高度?

数据阿明

结论

将 SVG 分隔线的 height: auto 改为 height: 100%,并保留 align-self: stretch。SVG 是 flex 子项,设为 height: auto 时会根据自身尺寸计算高度,无法明确表示它应填满搜索框的可用高度。

.find-course-divider {
  display: block;
  width: 1px;
  height: 100%;
  flex: 0 0 1px;
  align-self: stretch;
}

.find-course-search-box 已设置 height: 50px、display: flex 和 align-items: stretch。搜索框有 4px 边框,因此内部可用高度为 42px。SVG 会填满内容区,不会覆盖边框。

检查输入框高度

align-items: stretch 会沿交叉轴拉伸 flex 子项。若要让输入框、下拉菜单和分隔线高度一致,可以明确设置输入框高度,并使用 box-sizing: border-box:

.find-course-input {
  flex: 1;
  min-width: 0;
  height: 100%;
  box-sizing: border-box;
  border: none;
}

如果浏览器默认样式或其他 CSS 规则影响了输入框高度,显式设置这些属性有助于保持高度一致。min-width: 0 还可以避免输入框内容挤压其他 flex 子项。

注意事项

height: 100% 需要父容器有明确高度。当前搜索框设置了 height: 50px,所以可以使用这个值。如果之后容器高度改为由内容决定,可以依靠 align-items: stretch 拉伸 flex 项,并检查 SVG 的固有尺寸是否会影响结果。

备注:内容仅供参考。