flex实现pc端三列布局;
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
/ 清除样式 /
{
margin: 0;
padding: 0;
box-sizing: border-box;
}
/ 设置a标签默认 /
a {
text-decoration: none;
color: #666;
}
/ 将整个body转为flex元素 /
body {
display: flex;
flex-flow: column nowrap;
}
/ 设置header高度为50个像素将其转为flex元素垂直居中对齐/
header {
height: 50px;
display: flex;
align-items: center;
}
/ 设置不允许放大允许放大宽度100像素,字体居中,内边距上下10像素 左右自适应 /
header a {
flex: 0 1 100px;
text-align: center;
padding: 10px auto;
}
/ 设置第一个a标签LOGO右外边框50像素 /
header a:first-of-type {
margin-right: 50px;
}
/ 设置最后一个a标签左外边框自动计算剩余空间 /
header a:last-of-type {
margin-left: auto;
}
/ 设置除第一个a标签指针效果 /
header a:hover:not(:first-of-type) {
color: #f00;
}
/ 转为flex元素最小高度500像素水平两端对齐 /
.container {
display: flex;
min-height: 500px;
justify-content: space-evenly;
}
/ 设置不允许放大不允许缩小宽度200像素 /
.container aside {
flex: 0 0 200px;
}
/ 设置不允许放大不允许缩小宽度600像素 /
.container main {
flex: 0 0 600px;
}
/ 设置高度65像素边框1像素实线转为flex元素主轴垂直居中文本居中 */
footer {
height: 65px;
border: 1px solid;
display: flex;
flex-flow: column nowrap;
text-align: center;
}
</style>
</head>
<body>
<header>
<a href="">LOGO</a>
<a href="">首页</a>
<a href="">视频教程</a>
<a href="">入门教程</a>
<a href="">社区问答</a>
<a href="">技术文章</a>
<a href="">资源下载</a>
<a href="">工具下载</a>
<a href="">PHP培训</a>
<a href="">登陆</a>
</header>
<div class="container">
<aside>左</aside>
<main>主</main>
<aside>右</aside>
</div>
<footer>
<p>php中文网:公益在线php培训,帮助PHP学习者快速成长!</p>
<p>
Copyright 2014-2020 https://www.php.cn/ All Rights Reserved |
皖B2-20150071-9 皖公网安备 34010402701654号
</p>
<p>座机号码:0551-64933227 安徽省合肥市政务新区置地广场D座2101</p>
</footer>
</body>
</html>
效果截图:
![](https://img.php.cn/upload/image/755/950/302/1597979270298035.png)
2. flex实现(m.php.cn)首页
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="0821.css" />
</head>
<body>
<div class="space"></div>
<header>
<span class="iconfont"><a href="#"></a></span>
<div class="logo">
<a href="#"><img src="images/logo.png" alt="" /></a>
</div>
<span class="iconfont"><a href="#"></a></span>
</header>
<div class="banner">
<a href=""></a><img src="images/banner.jpg" alt="" /></a>
</div>
<nav>
<li>
<a href="#"><img src="images/html.png" alt="" /></a>
<a href="#">html/css</a>
</li>
<li>
<a href="#"><img src="images/JavaScript.png" alt="" /></a>
<a href="#">JavaScript</a>
</li>
<li>
<a href="#"><img src="images/code.png" alt="" /></a>
<a href="#">服务器</a>
</li>
<li>
<a href="#"><img src="images/sql.png" alt="" /></a>
<a href="#">数据库</a>
</li>
<li>
<a href="#"><img src="images/app.png" alt="" /></a>
<a href="#">移动端</a>
</li>
<li>
<a href="#"><img src="images/manual.png" alt="" /></a>
<a href="#">手册</a>
</li>
<li>
<a href="#"><img src="images/tool2.png" alt="" /></a>
<a href="#">工具</a>
</li>
<li>
<a href="#"><img src="images/live.png" alt="" /></a>
<a href="#">直播</a>
</li>
</nav>
<main>
<h3>推荐课程</h3>
<ul>
<div class="curriculum">
<a href="#"><img src="images/5d2426f409839992.jpg" alt="">
</a>
<a href="#"><img src="images/5d242759adb88970.jpg" alt=""></a>
</div>
<div class="recommend">
<a href="#"><img src="images/5d2941e265889366.jpg" alt="">
<li>CI框架30分钟极速入门<p><span>中级</span><span>67790次播放</span></p></li></a>
<a href=""><img src="images/5aa23f0ded921649.jpg" alt="">
<li>2018前端入门_HTML5<p><span>初级</span><span>353557次播放</span></p></li></a>
</div>
</ul>
</main>
<main>
<h3>最新更新</h3>
<div class="update">
<a href="#"><img src="images/5f155b2f296de744.png" alt="">
<li>《我的十年撸码生涯》公益直播课
<p>主题:《十年撸码生涯:…</p>
<p><span>初级</span><span>1989次播放</span></p>
</li>
</a>
<a href=""><img src="images/5f0e62e427845643.png" alt="">
<li>2天速成VueJS免费公益直播课
<p>php中文网免费公益…</p>
<p><span>初级</span><span>5039次播放</span></p>
</li>
</a>
<a href=""><img src="images/5f3de03eaf461163.png" alt="">
<li>PHP进阶篇-函数(玉女心经版)
<p>函数就是实现特…</p>
<p><span>初级</span><span>644次播放</span></p>
</li>
</a>
<a href=""><img src="images/5eeb3345b206d506.jpg" alt="">
<li>PHP代码整洁之道
<p>"本课程参考自…</p>
<p><span>中级</span><span>5039次播放</span></p>
</li>
</a>
<a href=""><img src="images/5f36356fc6fb6293.png" alt="">
<li>PHP字符串处理(玉女心经版)
<p>字符串的处理…</p>
<p><span>初级</span><span>970次播放</span></p>
</li>
</a>
<a href=""><img src="images/5f36339d51421830.png" alt="">
<li>PHP基本语法(玉女心经版)
<p>PHP是在服务…</p>
<p><span>初级</span><span>1069次播放</span></p>
</li>
</a>
</div>
</main>
<main>
<h3>最新文章</h3>
<div class="article">
<a href="#">
<li>如何使用JavaScript lastIndexOf()方法
<p>发布时间:2020-08-20</span></p></li>
<li><img src="images/2020082014393865760.jpg" alt="">
</li>
</a>
<a href="#">
<li>java idea实现类快捷生成接口方法
<p>发布时间:2020-08-21</span></p></li>
<li><img src="images/5f3f95799dcfa120.jpg" alt="">
</li>
</a>
<a href="#">
<li>js实现滑动进度条
<p>发布时间:2020-08-21</span></p></li>
<li><img src="images/2020082117330680098.jpg" alt="">
</li>
</a>
<a href="#">
<li>docker network命令详解
<p>发布时间:2020-08-21</span></p></li>
<li><img src="images/5f3f91881804b920.jpg" alt="">
</li>
</a>
<a href="#">
<li>一起看看vue实现打地鼠小游戏
<p>发布时间:2020-08-21</span></p></li>
<li><img src="images/2020082117235954205.jpg" alt="">
</li>
</a>
</div>
</main>
<div class="space"></div>
<footer>
<li>
<a href="#"><span class="iconfont"></span></a>
<a href="#">首页</a>
</li>
<li>
<a href="#"><span class="iconfont"></span></a>
<a href="#">视频</a>
</li>
<li>
<a href="#"><span class="iconfont"></span></a>
<a href="#">社区</a>
</li>
<li>
<a href="#"><span class="iconfont"></span></a>
<a href="#">我的</a>
</li>
</footer>
</body>
</html>
CSS:
/*阿里云图标格式文件*/
@font-face {
font-family: "iconfont";
src: url("/iconfont/iconfont.eot");
src: url("/iconfont/iconfont.eot?#iefix") format("embedded-opentype"),
url("/iconfont/iconfont.woff2") format("woff2"),
url("/iconfont/iconfont.woff") format("woff"),
url("/iconfont/iconfont.ttf") format("truetype"),
url("/iconfont/iconfont.svg#iconfont") format("svg");
}
/*图标默认样式*/
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #fff;
}
/* 清除样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 设置a标签默认样式 */
a {
text-decoration: none;
color: #666;
}
/* 把整个视图分为宽高各一百份 */
html {
width: 100vw;
height: 100vh;
}
/* 将整个页面转为flex格式并直线轴显示不换行,最小宽度360个像素,背景色灰色 */
body {
display: flex;
flex-flow: column nowrap;
min-width: 360px;
background: #edeff0;
}
/* 页头取100份宽度,高度50像素,背景色黑色,转为flex,内边框上下0像素左右15像素,对齐方式平均对齐,交叉轴对齐方式居中,将页头设为浮动视图在顶部0 */
header {
width: 100vw;
height: 50px;
background: #000;
display: flex;
padding: 0 15px;
justify-content: space-between;
align-items: center;
position: fixed;
top: 0;
}
/* 转为弹性盒,2倍rem大小,主轴和交叉轴居中,外边距距左2% */
header .iconfont {
display: flex;
font-size: 2rem;
align-items: center;
justify-content: center;
margin-left: 2%;
}
/* 图标颜色 */
header .iconfont a {
color: #fff;
}
/* 图片70% */
header .logo img {
width: 70%;
}
/* 高度自适应 */
.banner {
height: auto;
}
/* 图片100% */
.banner img {
width: 100%;
}
/* 导航高度200像素,转为弹性盒,主轴水平显示可换行,交叉轴平均对齐,背景色白色 */
nav {
height: 200px;
display: flex;
flex-flow: row wrap;
align-content: space-around;
background: #fff;
}
/* 转为弹性盒,宽度25份,主轴垂直不换行,交叉轴居中 */
nav li {
display: flex;
width: 25vw;
flex-flow: column nowrap;
align-items: center;
}
/* 图片50% */
nav li img {
width: 50%;
}
/* 第一个A标签文本居中 */
nav li a:first-of-type {
text-align: center;
}
/* 主体宽度100份,高度自适应,转为弹性盒,主轴垂直不换行,外边距距上2倍rem */
main {
width: 100vw;
height: auto;
display: flex;
flex-flow: column nowrap;
margin-top: 2rem;
}
/* 宽度100%,高度20像素,文本1.2倍rem,内边距全10像素,颜色浅黑 */
main h3 {
width: 100%;
height: 20px;
font-size: 1.2rem;
padding: 10px;
color: #888;
}
/* 转为弹性盒,主轴垂直不换行 */
main ul {
display: flex;
flex-flow: column nowrap;
}
/* 宽度100份,转为弹性盒,主轴水平显示不换行,外边距距上15像素 */
main ul .curriculum {
width: 100vw;
display: flex;
flex-flow: row nowrap;
margin-top: 15px;
}
/* 宽度49份,高度110像素,内边距全10像素 */
main ul .curriculum a {
width: 49vw;
height: 110px;
padding: 10px;
}
/* 宽度100%,高度90像素,允许放大允许缩小视图49份 */
main ul .curriculum a img {
width: 100%;
height: 90px;
flex: 1 1 49vw;
}
/* 宽度100份,转为弹性盒,主轴垂直显示不换行 */
main ul .recommend {
width: 100vw;
display: flex;
flex-flow: column nowrap;
}
/* 宽度94份,高度110像素,转为弹性盒,背景色白色,内边距全15像素,外边距上20像素左10像素 */
main ul .recommend a {
width: 94vw;
height: 110px;
display: flex;
flex-flow: row nowrap;
background: #fff;
padding: 15px;
margin-top: 20px;
margin-left: 10px;
}
/* 图片40% */
main ul .recommend a img {
width: 40%;
}
/* 宽度55%,外边距左2%,1.1rem倍文本,颜色#999,转为弹性盒,主轴垂直显示不换行 */
main ul .recommend a li {
width: 55%;
margin-left: 2%;
font-size: 1.1rem;
color: #999;
display: flex;
flex-flow: column nowrap;
}
/* 外边距上10%,0.8rem倍文本 */
main ul .recommend a li p {
margin-top: 10%;
font-size: 0.8rem;
}
/* 0.6rem倍文本,内边距全3像素,转为行内块 */
main ul .recommend a li p span {
font-size: 0.9rem;
padding: 3px;
display: grid;
}
/* 第一个span:0.8rem倍文本,颜色#fff,背景#666,宽度45像素,文本居中,边框圆角10像素,左浮动 */
main ul .recommend a li p span:first-of-type {
font-size: 0.8rem;
color: #fff;
background: #666;
width: 45px;
text-align: center;
border-radius: 10px;
float: left;
}
/* 宽度100份,转为弹性盒,主轴垂直显示不换行,外边距上10像素 */
main .update {
width: 100vw;
display: flex;
flex-flow: column nowrap;
margin-top: 10px;
}
/* 宽度94份,高度110像素,转为弹性盒,主轴水平显示不换行,背景色#fff,内边距全15像素,外边距上20像素左10像素 */
main .update a {
width: 94vw;
height: 110px;
display: flex;
flex-flow: row nowrap;
background: #fff;
padding: 15px;
margin-top: 20px;
margin-left: 10px;
}
/* 图片40% */
main .update a img {
width: 40%;
}
/* 宽度55%,外边距左2%,1rem倍文本,颜色#999,转为弹性盒,主轴垂直显示不换行 */
main .update a li {
width: 55%;
margin-left: 2%;
font-size: 1rem;
color: #999;
display: flex;
flex-flow: column nowrap;
}
/* 外边距上2%,0.7rem倍文本 */
main .update a li p {
margin-top: 2%;
font-size: 0.7rem;
}
/* 0.9rem倍文本,内边距全3像素,转为行内块 */
main .update a li p span {
font-size: 0.9rem;
padding: 3px;
display: grid;
}
/* 第一个span:0.8rem倍文本,颜色#fff,背景色#666,宽度45像素,文本居中,边框圆角10像素,左浮动 */
main .update a li p span:first-of-type {
font-size: 0.8rem;
color: #fff;
background: #666;
width: 45px;
text-align: center;
border-radius: 10px;
float: left;
}
/* 最后一个span:宽度45%,外边距左自适应 计算全部左边距 */
main .update a li p span:last-of-type {
width: 45%;
margin-left: auto;
}
/* 宽度100份,转为弹性盒,主轴垂直显示不换行,外边距上10像素 */
main .article {
width: 100vw;
display: flex;
flex-flow: column nowrap;
margin-top: 10px;
}
/* 宽度94份,高度110像素,转为弹性盒,主轴水平显示不换行,背景色#fff,内边距全15像素,外边距上20像素左10像素 */
main .article a {
width: 94vw;
height: 110px;
display: flex;
flex-flow: row nowrap;
background: #fff;
padding: 15px;
margin-top: 20px;
margin-left: 10px;
}
/* 图片宽100%高100% */
main .article a li img {
width: 100%;
height: 100%;
}
/* 宽度50%,外边距左2%,1倍rem文本,颜色#999,转为弹性盒,主轴垂直显示不换行 */
main .article a li {
width: 50%;
margin-left: 2%;
font-size: 1rem;
color: #999;
display: flex;
flex-flow: column nowrap;
}
/* 外边距上2%,0.7rem倍文本 */
main .article a li p {
margin-top: 2%;
font-size: 0.7rem;
}
/* 0.9倍文本,内边距全3像素,转为行内块 */
main .article a li p span {
font-size: 0.9rem;
padding: 3px;
display: grid;
}
/* 第一个span:0.8倍文本,颜色#fff,背景色#666,宽度45像素,文本居中,边框圆角10像素,左浮动 */
main .article a li p span:first-of-type {
font-size: 0.8rem;
color: #fff;
background: #666;
width: 45px;
text-align: center;
border-radius: 10px;
float: left;
}
/* 最后一个span:宽度25%,外边距左自适应 */
main .article a li p span:last-of-type {
width: 25%;
margin-left: auto;
}
/* 为footer占位:外边距上50像素 */
.space {
margin-top: 50px;
}
/* 页尾:宽度100份,转为弹性盒,主轴水平显示不换行,转为浮动以视图底部0的位置,上边框1像素实线颜色#CCC,背景色#edeff0 */
footer {
width: 100vw;
display: flex;
flex-flow: row nowrap;
position: fixed;
bottom: 0;
border-top: 1px solid #ccc;
background: #edeff0;
}
/* 宽度25份,高度50像素,取消li开头自带的.,转为弹性盒,主轴垂直显示不换行,交叉轴居中,主轴居中 */
footer li {
width: 25vw;
height: 50px;
list-style: none;
display: flex;
flex-flow: column nowrap;
align-items: center;
justify-content: center;
}
/* 颜色#999 */
footer li a {
color: #999;
}
/* 图标1.4rem倍文本,颜色#ccc */
footer li .iconfont {
font-size: 1.4rem;
color: #ccc;
}
效果图: