讲师中心 微信公众号
AI工具推荐 视频效率加速

使用Flexbox创建响应式圆形与文本布局教程

雨辰大大_2640

雨辰大大_2640

发布时间:2025-12-14 09:00:27

|

415人浏览过

|

来源于php中文网

原创

使用Flexbox创建响应式圆形与文本布局教程

本教程详细介绍了如何利用css flexbox布局实现包含圆形元素和文本的响应式设计。通过设置容器的弹性属性、子项的排列方式以及媒体查询,可以轻松创建水平分布的圆形组件,并在不同屏幕尺寸下自动调整为垂直堆叠,确保布局的灵活性和适应性。

理解Flexbox基础布局

Flexbox(弹性盒子)是CSS3中一种强大的布局模块,旨在提供一种更有效的方式来布置、对齐和分配容器中项目空间,即使它们的大小未知或动态变化。在本教程中,我们将使用Flexbox来创建一个包含圆形图片或占位符以及相关文本的布局。

核心思路是:

  1. 外部容器 (.row) 使用 display: flex 使其子项水平排列。
  2. 内部包装器 (.circle-wrapper) 也使用 display: flex,但设置 flex-direction: column 使其内部元素垂直堆叠。

HTML结构

首先,我们需要构建基础的HTML结构。每个“圆形-文本”组合都将包含在一个 div.circle-wrapper 中,而多个这样的组合则放置在一个 div.row 容器内。

<div class="row">
  <div class="circle-wrapper">
    <img src="https://cdn.pixabay.com/photo/2022/07/08/20/39/boats-7309850_960_720.jpg" class="circle" alt="船只">
    <p>此处放置相关文本</p>
  </div>

  <div class="circle-wrapper">
    <img src="https://cdn.pixabay.com/photo/2022/07/03/22/00/cat-7300029_960_720.jpg" class="circle" alt="猫咪">
    <p>此处放置相关文本</p>
  </div>
</div>

<div class="row">
  <div class="circle-wrapper">
    <div class="circle"></div> <!-- 纯CSS圆形占位符 -->
    <p>此处放置相关文本</p>
  </div>
  <div class="circle-wrapper">
    <div class="circle"></div> <!-- 纯CSS圆形占位符 -->
    <p>此处放置相关文本</p>
  </div>
</div>

在这个结构中,我们展示了两种创建圆形的方式:一种是直接对 <img> 标签应用圆形样式,另一种是使用一个 <div> 元素作为纯CSS的圆形占位符。

html-to-pptx
html-to-pptx

将多页 HTML 演示文稿转换为美化的 PPTX 文件,便于分享和分发。

下载

CSS样式实现

接下来,我们将应用CSS样式来布局这些元素并创建圆形效果。

/* 通用样式 */
body {
  font-family: Arial, sans-serif;
  margin: 20px;
  background-color: #f0f2f5;
  color: #333;
}

/* 行容器样式 */
.row {
  display: flex; /* 启用Flexbox,子项水平排列 */
  justify-content: space-around; /* 子项之间均匀分布空间 */
  margin-bottom: 60px; /* 每行底部间距 */
  flex-wrap: wrap; /* 允许子项换行,为响应式做准备 */
  gap: 20px; /* 子项之间的最小间距 */
}

/* 单个圆形-文本组合的包装器 */
.circle-wrapper {
  display: flex; /* 启用Flexbox */
  flex-direction: column; /* 子项垂直堆叠 */
  align-items: center; /* 子项在交叉轴(水平方向)居中 */
  text-align: center; /* 文本居中 */
  max-width: 180px; /* 限制每个组合的最大宽度 */
  flex-shrink: 0; /* 防止项目过度缩小 */
}

/* 圆形元素样式 */
.circle {
  width: 100px; /* 圆形宽度 */
  height: 100px; /* 圆形高度 */
  background: red; /* 默认背景色,可替换为图片 */
  border-radius: 50%; /* 实现圆形效果 */
  overflow: hidden; /* 隐藏超出圆形的图片部分 */
  margin-bottom: 15px; /* 圆形下方间距 */
  display: flex; /* 如果内部有内容,可以居中 */
  justify-content: center;
  align-items: center;
}

/* 如果是图片,确保图片填充圆形 */
.circle img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* 裁剪图片以填充容器 */
  border-radius: 50%; /* 确保图片本身也是圆形 */
  display: block; /* 移除图片底部默认间隙 */
}

/* 文本段落样式 */
.row p {
  padding: 10px 15px; /* 文本内边距 */
  background: #ffffff; /* 文本背景色 */
  border-radius: 8px; /* 文本框圆角 */
  box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* 文本框阴影 */
  margin-top: 0; /* 移除默认上边距 */
  color: #333;
  font-size: 0.9em;
  line-height: 1.4;
}

代码解释:

  • .row:作为主容器,display: flex 使其子元素 .circle-wrapper 水平排列。justify-content: space-around 在这些子元素之间创建均匀的间距。flex-wrap: wrap 允许子项在空间不足时换行,这是响应式设计的关键一步。gap 属性则提供了子项之间统一的间距。
  • .circle-wrapper:每个独立的“圆形-文本”组合的容器。display: flex 配合 flex-direction: column 使其内部的圆形和文本垂直堆叠。align-items: center 确保圆形和文本在其容器内水平居中。max-width 限制了其最大宽度,防止在非常宽的屏幕上过度拉伸。
  • .circle:定义了圆形的基本样式,width 和 height 相等,border-radius: 50% 是创建圆形的秘诀。overflow: hidden 对于包含图片的圆形至关重要。
  • .circle img:当 <img> 标签作为圆形内容时,object-fit: cover 确保图片能完美填充圆形区域而不会变形,同时 border-radius: 50% 保证图片自身也被裁剪成圆形。
  • .row p:为文本段落添加了背景、内边距和圆角,使其更具视觉吸引力。

实现响应式布局

为了使布局在不同设备上都能良好显示,我们将使用媒体查询来调整布局。当屏幕宽度小于某个阈值时,我们希望将水平排列的 .row 容器变为垂直堆叠,使每个“圆形-文本”组合独占一行。

@media (max-width: 768px) {
  .row {
    flex-direction: column; /* 在小屏幕上,行容器的子项垂直堆叠 */
    align-items: center; /* 确保垂直堆叠时整个行内容居中 */
    margin-bottom: 40px;
    gap: 30px; /* 调整垂直堆叠时的间距 */
  }

  .circle-wrapper {
    width: 80%; /* 垂直堆叠时,每个组合占据大部分宽度 */
    max-width: 300px; /* 限制最大宽度,防止过宽 */
  }
}

@media (max-width: 480px) {
  .circle {
    width: 80px; /* 更小屏幕上,圆形尺寸可以适当缩小 */
    height: 80px;
  }

  .row p {
    font-size: 0.8em; /* 文本字体也可以适当缩小 */
    padding: 8px 12px;
  }

  .circle-wrapper {
    width: 90%; /* 在更小的屏幕上,占据更多宽度 */
  }
}

响应式代码解释:

  • @media (max-width: 768px):当屏幕宽度小于或等于768px时,应用以下样式。
  • .row { flex-direction: column; }:这是实现响应式关键的一步。它将主容器的子项从水平排列变为垂直排列。
  • align-items: center;:当 flex-direction 为 column 时,align-items 控制水平居中,确保整个列的内容在页面中居中。
  • .circle-wrapper 的 width 和 max-width 调整了在小屏幕上每个组合的宽度表现。
  • 更小的媒体查询 (max-width: 480px) 进一步调整了圆形大小和文本字体,以适应更小的移动设备屏幕。

注意事项与最佳实践

  • 语义化HTML:尽量使用有意义的HTML标签。例如,如果这些是服务或产品列表,可以考虑使用 <section>、<ul> 或 <figure> 等。
  • 图片优化:对于实际图片,务必进行压缩优化,并考虑使用响应式图片技术(如 srcset),以提高页面加载性能和用户体验。
  • 单位选择:在实际项目中,可以考虑使用 em 或 rem 等相对单位来替代 px,以更好地适应用户的字体大小设置和不同的屏幕密度。
  • Flexbox属性:Flexbox有许多强大的属性,如 align-content、flex-grow

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

相关专题

更多
css3教程
css3教程

php中文网为大家提供css3教程合集,CSS3的语法是建立在CSS原先版本基础上的,它允许使用者在标签中指定特定的HTML元素而不必使用多余的class、ID或JavaScript。php中文网还为大家带来css3的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

1740

2023.06.14

有哪些css3渐变属性
有哪些css3渐变属性

css3中渐变属性有linear-gradient、radial-gradient、conic-gradient、repeating-linear-gradient、repeating-radial-gradient等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2326

2023.11.01

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

4787

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2168

2023.08.10

overflow什么意思
overflow什么意思

overflow是一个用于控制元素溢出内容的属性,当元素的内容超出其指定的尺寸时,overflow属性可以决定如何处理这些溢出的内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3160

2024.08.15

html边框设置教程
html边框设置教程

本教程将带你全面掌握HTML/CSS边框设置,从基础的border属性讲起,涵盖所有边框样式、圆角设置及高级技巧,帮助你快速上手实现各种边框效果。

2013

2025.09.02

flex教程
flex教程

php中文网为大家带来了flex教程合集,Flex是采用Flex布局的元素,称为Flex容器(flex container),简称"容器",它的所有子元素自动成为容器成员,有三个核心概念: flex项,需要布局的元素;flex容器,其包含flex项;排列方向,这决定了flex项的布局方向。php中文网还为大家带来flex的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

8457

2023.06.14

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

160

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

80

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.7万人学习

CSS教程
CSS教程

共754课时 | 94.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn