
本文旨在提供一个纯CSS解决方案,用于创建一个具有`flex-wrap`特性的容器,使其能够在其父容器内自适应大小、保持固定尺寸、内容可滚动,并且不超出父容器边界,同时尊重指定的边距。我们将通过`position`、百分比尺寸和`overflow`等CSS属性的巧妙组合,实现一个无需J*aScript或硬编码尺寸的弹性布局。
在构建响应式和动态网页布局时,我们经常面临以下挑战:
我们将通过一个具体的例子来演示如何解决这些问题:一个“蓝色容器”作为flex-wrap布局的父级,其中包含多个子元素(“白色瓷砖”),而蓝色容器本身又被一个“红色容器”所包裹。
要实现上述目标,我们需要理解并运用以下关键CSS属性:
我们将以一个典型的HTML结构为例,其中一个红色容器包含一个蓝色容器,蓝色容器又包含多个白色瓷砖。
HTML 结构示例:
<div class="red-container">
<div class="blue-container">
<!-- 假设这里有多个白色瓷砖(div.tile) -->
<div class="tile">Tile 1</div>
<div class="tile">Tile 2</div>
<div class="tile">Tile 3</div>
<!-- 更多瓷砖... -->
<div class="tile">Tile N</div>
</div>
</div>CSS 配置:
Magician
Figma插件,AI生成图标、图片和UX文案
412
查看详情
父容器需要设置为相对定位,以便其子元素可以相对于它进行绝对定位。它的尺寸可以根据需求设定,这里使用视口单位作为示例。
.red-container {
background-color: red;
height: 80vh; /* 示例高度,可根据实际需求调整 */
width: 100vw; /* 示例宽度,可根据实际需求调整 */
position: relative; /* 关键:使子元素可以绝对定位到它 */
/* overflow: hidden; // 可选,如果父容器也需要裁剪超出内容 */
}蓝色容器是实现所有目标的核心。它将是一个可滚动的、自适应的、尊重边距的Flex容器。
.blue-container {
display: flex; /* 关键:使其成为弹性容器 */
flex-wrap: wrap; /* 关键:允许子元素换行 */
background-color: blue;
position: absolute; /* 关键:相对于 .red-container 定位 */
/* 关键:使其填充父容器,同时尊重 1vh 的边距 */
/* 这比 height: 100%; width: 100%; margin: 1vh; 更准确,
因为后者会导致容器超出父级并产生外部边距 */
top: 1vh;
bottom: 1vh;
left: 1vh;
right: 1vh;
overflow: scroll; /* 关键:使内容可滚动 */
/* 注意:如果需要水平和垂直都滚动,使用 overflow: scroll;
如果只需要垂直滚动,使用 overflow-y: scroll; */
}这些是蓝色容器内的可换行项。
.tile {
width: 100px; /* 示例宽度 */
height: 100px; /* 示例高度 */
margin: 10px; /* 瓷砖之间的间距 */
background-color: white;
border: 1px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
flex-shrink: 0; /* 防止瓷砖在空间不足时缩小 */
}将上述CSS与HTML结合,您将得到一个完整的解决方案:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Scrollable Flex Wrap Container</title>
<style>
body {
margin: 0;
font-family: sans-serif;
}
.red-container {
background-color: red;
height: 80vh; /* 80% of viewport height */
width: 100vw; /* 100% of viewport width */
position: relative; /* Establish positioning context for children */
}
.blue-container {
display: flex; /* Make it a flex container */
flex-wrap: wrap; /* Allow items to wrap to the next line */
background-color: blue;
position: absolute; /* Position relative to .red-container */
/* Fill the parent container while respecting 1vh margin on all sides */
top: 1vh;
bottom: 1vh;
left: 1vh;
right: 1vh;
overflow: scroll; /* Enable scrolling for content that overflows */
}
.tile {
width: 150px; /* Example fixed width for tiles */
height: 100px; /* Example fixed height for tiles */
margin: 10px; /* Spacing between tiles */
background-color: white;
border: 1px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
flex-shrink: 0; /* Prevent tiles from shrinking */
box-sizing: border-box; /* Ensure padding/border are included in width/height */
}
</style>
</head>
<body>
<div class="red-container">
<div class="blue-container">
<div class="tile">Tile 1</div>
<div class="tile">Tile 2</div>
<div class="tile">Tile 3</div>
<div class="tile">Tile 4</div>
<div class="tile">Tile 5</div>
<div class="tile">Tile 6</div>
<div class="tile">Tile 7</div>
<div class="tile">Tile 8</div>
<div class="tile">Tile 9</div>
<div class="tile">Tile 10</div>
<div class="tile">Tile 11</div>
<div class="tile">Tile 12</div>
<div class="tile">Tile 13</div>
<div class="tile">Tile 14</div>
<div class="tile">Tile 15</div>
<div class="tile">Tile 16</div>
<div class="tile">Tile 17</div>
<div class="tile">Tile 18</div>
<div class="tile">Tile 19</div>
<div class="tile">Tile 20</div>
<div class="tile">Tile 21</div>
<div class="tile">Tile 22</div>
<div class="tile">Tile 23</div>
<div class="tile">Tile 24</div>
<div class="tile">Tile 25</div>
<div class="tile">Tile 26</div>
<div class="tile">Tile 27</div>
<div class="tile">Tile 28</div>
<div class="tile">Tile 29</div>
<div class="tile">Tile 30</div>
<!-- Add more tiles to demonstrate scrolling -->
</div>
</div>
</body>
</html>让我们回顾一下最初的目标,并看看我们的CSS如何实现它们:
以上就是生成可滚动、自适应且不超出父容器边界的Flex布局的详细内容,更多请关注其它相关文章!
# 其父
# 广州公司网站推广多少钱
# 营销推广营业执照
# 汕尾网站建设技术
# 商丘全域营销推广平台
# 株洲网站优化工作室
# 公司网站建设价格明细表
# 镇江网站建设开发团队
# 江苏seo营销方案
# 小型购物网站建设思路
# 抖查查怎么查关键词排名
# 而不是
# 应用于
# 中文网
# 换行
# 滚动条
# css
# 多个
# 相对于
# 自适应
# 使其
# 绝对定
# css属性
# 网页布局
# flex布局
# 弹性布局
# ai
# 编码
# js
# html
# java
# javascript
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
win11如何运行chkdsk命令 Win11检查和修复磁盘逻辑错误教程【修复】
Python实时数据流中高效查找最大最小值
192.168.1.1路由器后台入口 192.168.1.1默认登录入口
c++类和对象到底是什么_c++面向对象编程基础
键盘声音异常怎么回事_键盘异响怎么处理
使用AI在VS Code中将代码从一种语言翻译成另一种
铁路12306官网登录入口 铁路12306在线购票官方平台
Sublime怎么格式化HTML代码_Sublime前端代码美化插件使用指南
《星露谷物语》克林特好感度事件介绍
Python测试中模块导入路径解析的最佳实践
J*a里如何处理ArithmeticException并防止除零_算术异常防护策略解析
12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化
电脑开不了机怎么办 电脑无法开机的解决方法
使用VS Code调试Python代码:从入门到精通
房产|直播|视频号怎么认证开通?|直播|需要什么资质?
《小宇宙》标记不友善评论方法
Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改
263企业邮箱如何设置邮件转发功能
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
知乎APP怎么查看自己被邀请的问题_知乎APP邀请回答记录查看与参与方法
《via浏览器》强制缩放网页设置方法
铁路12306入口 铁路12306官网版入口登录网址
《王者荣耀世界》英雄获取攻略
《图怪兽》退出登录方法
SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱
CSS如何在页面中引入重置样式_使用Normalize.css或Reset.css统一浏览器默认样式
cad视图选项卡不见了怎么办_cad视图标签恢复显示方法
VS Code中的Tailwind CSS IntelliSense插件使用技巧
胃动力不足?试试这5个调理方法
申通快件单号查询平台 申通包裹物流动态跟踪
TikTok视频播放不流畅怎么办 TikTok视频播放优化方法
如何发挥新媒体矩阵作用?新媒体矩阵怎么搭建?
路由器DNS怎么设置最快 优化DNS提升上网速度教程
家里的小飞虫总是不断,用什么方法可以彻底根除?
奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧
铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明
Dash应用多值文本输入处理与类型转换教程
QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航
vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足
MongoDB聚合管道:高效统计列表中各项的文档数量
《咸鱼之王》新版孙坚技能解析
电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】
《杖剑传说》食谱大全
解决C#跨线程访问XML对象的异常 安全的并发XML处理模式
《健康大兴》注册方法介绍
优酷官网登录入口电脑版 优酷官网网址入口
解决VS Code中Python版本冲突与输出异常的指南
《气泡星球》兑换码礼包大全
TikTok搜索结果不显示怎么办 TikTok搜索刷新与优化方法
Win10共享文件夹设置方法 Win10局域网文件共享全攻略【教程】
2025-12-07
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。