CSS3流式布局
1316 字
7 分钟
CSS3流式布局
前言
在学习CSS的布局之前,需要知道的一点是,不是一种布局,一个测量单位从头用尾,而是视情况使用,结合使用才是最终方案,每个布局和测量单位都有不同应用场景,而非谁淘汰谁,当然这其中会存在一些新方案和旧方案,比如rem和vw布局,在以前的项目中,可能会用到rem,但是现在新项目推荐使用vw,因为rem需要使用js动态计算,而vw是相对于视口计算,少了js,页面性能就更好,所以rem布局可以了解认识使用,但是新项目采用vw方案,理清思路之后,学习第一个布局流式布局,流体布局并不是一个完全独立新知识,所以这里会用一个demo演示,再后续的布局中,也会基于这个修改
仿慕课网首页
页面结构布局
基础骨架和reset.css
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>仿慕课网首页-流体布局</title> <link rel="stylesheet" href="../../../styles/reset.css"></head><body> <!-- 头部 --> <header class="header-layout">头部</header> <!-- 主体 --> <div class="main-layout"> <!-- 幻灯片 --> <div class="slider-layout"></div> <!-- 免费课程 --> <div class="course-layout">免费课程</div> <!-- 实战课程 --> <div class="course-layout">实战课程</div> </div> <!-- 标签栏 --> <div class="tabbar-layout">标签栏</div></body></html>* { padding: 0; margin: 0; /* 防止盒子溢出 */ box-sizing: border-box; outline: 0; /* 取消点击的时候高亮 */ -webkit-tap-highlight-color: transparent;}a { text-decoration: none;}li { list-style: none;}img { /* display: block; */ /* 图片铺满容器 */ vertical-align: top;}布局layout样式
.header-layout { position: fixed; left: 0; top: 0; width: 100%; height: 48px; background-color: red; border-bottom: 1px solid #e8e8e8;}
.main-layout { padding: 48px 0 48px 0;}
.slider-layout { height: 134px; background-color: green; margin-bottom: 20px;}
.course-layout { height: 382px; background-color: gray; margin-bottom: 10px;}
.tabbar-layout { position: fixed; left: 0; bottom: 0; width: 100%; height: 48px; background-color: yellow; box-shadow: 0 -4px 4px rgba(0, 0, 0, 0.15);}头部
<!-- 头部 --> <header class="header-layout"> <div class="header"> <!-- logo --> <a href="" class="header-logo"> <img src="../../../public/images/logo.png" alt="logo" class="header-logo-img"> </a> <!-- 下拉框按钮 --> <button id="header-toggle" class="header-toggle"> <span class="header-toggle-bar"></span> <span class="header-toggle-bar"></span> <span class="header-toggle-bar"></span> </button> </div> </header>.header { width: 100%; height: 100%; background-color: #fff; padding: 0 20px;}
.header-logo { float: left; height: 100%;}
.header-logo-img { height: 30px; /* 居中=48-9-9-30,总高度48,图30,上外边距9,下外边距刚好也是9 */ margin-top: 9px;}
.header-toggle { float: right; padding: 10px; background-color: transparent; border: none; border-radius: 4px; margin-top: 4px;}
.header-toggle-bar { display: block; width: 24px; height: 4px; background-color: #363636; border-radius: 2px;}
.header-toggle-bar + .header-toggle-bar { margin-top: 4px;}主体部分
幻灯片部分
<!-- 幻灯片 --> <div class="slider-layout"> <img src="../../../public/images/slider/1.jpg" alt=""> </div> .slider-layout img { width: 100%; }实战免费课程部分
<!-- 免费课程 --> <div class="course-layout"> <div class="course"> <h2 class="course-title">免费课程</h2> <ul class="course-list"> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_free/1.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">免费</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_free/2.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">免费</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_free/3.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">免费</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_free/4.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">免费</p> </a> </li> </ul> </div> </div> <!-- 实战课程 --> <div class="course-layout"> <div class="course"> <h2 class="course-title">实战课程</h2> <ul class="course-list"> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_coding/1.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">实战</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_coding/2.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">实战</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_coding/3.jpg" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">实战</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_coding/4.png" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">实战</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_coding/5.png" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">实战</p> </a> </li> <li class="course-item"> <a href="javascript:;"> <p class="course-pic"> <img src="../../../public/images/course_coding/6.png" alt="" class="course-img"> </p> <p class="course-name">初始HTML5+CSS3 - 2026升级版</p> <p class="course-price">实战</p> </a> </li> </ul> </div> </div> .course { /* 清除浮动 */ overflow: auto; font-size: 14px; }
.course-title { width: 100%; padding: 0 0 10px 20px; color: #191919; font-size: 16px; }
.course-list { padding-right: 20px; }
.course-item { float: left; width: 50%; padding: 0 0 10px 20px; }
.course-pic { margin-bottom: 6px; }
.course-img { /* 相对于父容器的100% */ width: 100%; }
.course-name { height: 40px; line-height: 20px; margin-bottom: 4px; color: #4d4d4d; /* 多行文字省略 */ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; white-space: normal !important; word-wrap: break-word; }
.course-price { color: #e93b3b; }标签栏
标签栏部分
<!-- 标签栏 --> <div class="tabbar-layout"> <div class="tabbar"> <a href="javascript:;" class="tabbar-item tabbar-item-active"> <i class="iconfont icon-home"> </i> <span>首页</span> </a> <a href="javascript:;" class="tabbar-item "> <i class="iconfont icon-search"> </i> <span>搜索</span> </a> <a href="javascript:;" class="tabbar-item "> <i class="iconfont icon-personal"> </i> <span>我的</span> </a> </div> </div>.tabbar { width: 100%; height: 100%; background-color: #f6f6f6; font-size: 14px;}
.tabbar-item { float: left; width: 33.333333%; height: 100%; color: #c2cfcc; text-align: center; padding-top: 3px;}
.tabbar-item-active { background-color: #e7f3f0; color: #00b38a;}
.tabbar-item .iconfont { display: block; font-size: 20px;}layout样式
.header-layout { position: fixed; left: 0; top: 0; width: 100%; height: 48px; background-color: red; border-bottom: 1px solid #e8e8e8;}
.main-layout { padding: 48px 0 48px 0;}
.slider-layout { /* height: 134px; background-color: green; */ margin-bottom: 20px;}
.course-layout { /* height: 382px; background-color: gray; */ margin-bottom: 10px;}
.tabbar-layout { position: fixed; left: 0; bottom: 0; width: 100%; height: 48px; background-color: yellow; box-shadow: 0 -4px 4px rgba(0, 0, 0, 0.15);}总结
流体布局主要使用%单位布局,不是只能使用%单位布局,也可以使用其他单位,比如px;图片一般只设置宽度或者高度,不要同时设置,这样可以等比例缩放,不失真
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
响应式布局
前端工程师2026-10-16
2
Flex弹性布局
前端工程师2026-10-14
3
CSS3定位属性
前端工程师学习CSS3定位属性
4
CSS3浮动属性
前端工程师学习CSS 浮动:从基本原理到 BFC 与清除浮动
5
CSS3盒模型
前端工程师学习CSS3盒模型
随机文章随机推荐














