在网页开发中,图文混排是非常常见的需求,比如文章列表、商品卡片、新闻摘要等。使用 css flexbox 可以让我们以更简洁的方式控制图片和文字的相对位置与对齐方式,不需要依赖浮动布局那些容易出问题的写法。

一、flexbox图文混排的基本结构
我们通常把外层容器设为 display:flex,然后将图片和文字块作为直接子元素。这样它们就会默认沿水平方向排列。
<div class="media">
<img src="https://ipipp.com/demo.jpg" alt="示例" />
<div class="text">
<h3>标题文字</h3>
<p>这里是描述内容,flexbox会让它和图片整齐排在一行。</p>
</div>
</div>
二、关键css属性设置
容器使用 flex 后,可以通过 align-items 控制垂直对齐,通过 gap 控制间距。
.media {
display: flex;
align-items: center; /* 图片与文字垂直居中 */
gap: 16px; /* 元素之间统一间距 */
}
.media img {
width: 120px;
height: auto;
border-radius: 8px;
}
1. 控制文字区域伸缩
为了让文字部分自动占满剩余空间,可对其设置 flex:1,这样图片定宽、文字自适应。
.text {
flex: 1;
}
2. 小屏幕下改为竖排
在移动端,图文往往更适合上下排列,使用媒体查询修改 flex-direction 即可。
@media (max-width: 600px) {
.media {
flex-direction: column;
align-items: flex-start;
}
}
三、常见排版问题处理
- 图片变形:给 img 固定宽度并设 height:auto 保持比例
- 文字过多撑破布局:给文字容器加 overflow 与省略号样式
- 多图混排:将图片组再包一层 flex 容器即可
四、完整示例
<style>
.card {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 12px;
border: 1px solid #eee;
}
.card img { width: 100px; height: auto; }
.card .info { flex: 1; }
.card .info h3 { margin: 0 0 8px; }
.card .info p { margin: 0; color: #666; }
</style>
<div class="card">
<img src="https://ipipp.com/a.jpg" alt="图" />
<div class="info">
<h3>卡片标题</h3>
<p>利用 flexbox 实现的图文卡片,结构清晰且易维护。</p>
</div>
</div>
通过上述方式,css flexbox 在图文混排布局中能够提供稳定、灵活且美观的解决方案,远比传统的浮动加清除浮动写法更值得在日常项目中推广。