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

如何对齐带边框li内左侧h1、居中p、右侧img三类子元素

解决方案

你已经给li元素设置了flex布局,完全可以通过flex原生能力实现动态适配的对齐效果,不需要硬算margin或者使用float属性,修改方案如下:

核心修改点

  • 删除所有硬编码的calc margin和无效的float属性:flex容器的子元素设置float不会生效,固定数值的margin计算无法适配动态内容宽度
  • 给三个子元素分配固定的布局权重,保证p元素始终处于li的正中间位置,不受左右两边元素内容宽度影响
  • 分别控制三个区域的内容对齐方式

修改后的完整CSS代码

html,
body {
  margin: 0;
  padding: 0;
  font-family: 'Poppins', sans-serif;
}

#container{
  display: block;
  margin: 0 auto;
  max-width: 40rem;
  padding: 1rem;
}

#raidList{
  list-style: none;
  margin: 0;
}

#raidList li{
  background: #ffffff;
  border-radius: 0.5rem;
  min-height: calc(1rem + 96px);
  margin: 1.75rem 0;
  box-shadow: 0.25rem 0.25rem 0.6rem rgba(0,0,0,0.05), 0 0.5rem 1.125rem rgba(75,0,0,0.05);
  display: flex;
  align-items: center;
}

/* 给三个子元素统一设置等宽布局权重 */
#raidList li h1,
#raidList li p,
#raidList li img {
  flex: 1;
  box-sizing: border-box;
  padding: 0 1rem;
}

#raidList li h1{
  text-align: left;
  font-size: 50px;
  margin: 0;
}

#raidList li p{
  text-align: center;
  margin: 0;
}

#raidList li img{
  display: block;
  margin-left: auto;
  max-width: 100%;
  height: auto;
}

可选适配方案

如果不需要三个区域严格等宽,希望左右元素仅占据自身内容所需宽度,可以改用以下方案:
给#raidList li添加justify-content: space-between属性,给p元素设置margin: 0 auto即可实现中间元素始终居中,左右元素分别贴靠左右边缘的效果,适合左右内容宽度差异较大的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:57:03