flex 布局概述
1. flex 是什么
- flex 是 Flexible Box 的缩写,意为弹性布局
- flex 2009 年就已出现,浏览器兼容性很好,请放心使用
2. flex 解决了什么问题
- 块元素的垂直居中, flex 可以轻松解决
- 元素大小在容器中的自动伸缩,以适应容器的变化,特别适合移动端布局
3. flex 项目的布局方向是什么
- 一个物体在一个平面中, 要么水平排列, 要么垂直排列, flex 借鉴了这个思想
- flex 是一维布局, 项目任何时候只能沿一个方向排列,要么水平, 要么垂直
- flex 项目排列的方向, 称为主轴, 水平和垂直二种
- 与主轴垂直的称为交叉轴(有的教程也称之为副轴/侧轴)
4. flex 布局中常用术语有哪些(三个二)
序号 |
简记 |
术语 |
1 |
二成员 |
容器和项目(container / item ) |
2 |
二根轴 |
主轴与交叉轴(main-axis / cross-axis ) |
3 |
二根线 |
起始线与结束线(flex-start / flex-end ) |
5.flex 容器属性有哪些
序号 |
属性 |
描述 |
1 |
flex-direction |
设置容器中的主轴方向: 行/水平方向, 列/垂直方向 |
2 |
flex-wrap |
是否允许创建多行容器,即 flex 项目一行排列不下时, 是否允许换行 |
3 |
flex-flow |
简化 flex-direction, flex-wrap 属性 |
4 |
justify-content |
设置 flex 项目在主轴上对齐方式 |
5 |
align-items |
设置 flex 项目在交叉轴上对齐方式 |
6 |
align-content |
多行容器中,项目在交叉轴上的对齐方式 |
6. flex 项目属性有哪些
序号 |
属性 |
描述 |
1 |
flex-basis |
项目宽度: 项目分配主轴剩余空间之前, 项目所占据的主轴空间宽度 |
2 |
flex-grow |
项目的宽度扩展: 将主轴上的剩余空间按比例分配给指定项目 |
3 |
flex-shrink |
项目的宽度收缩: 将项目上多出空间按比例在项目间进行缩减 |
4 |
flex |
是上面三个属性的简化缩写: flex: flex-grow flex-shrink flex-basis |
5 |
align-self |
单独自定义某个项目在交叉轴上的对齐方式 |
6 |
order |
自定义项目在主轴上的排列顺序,默认为 0,书写顺序,值越小位置越靠前 |
flex 容器与项目
1. display
属性
序号 |
属性值 |
描述 |
备注 |
1 |
flex; |
创建 flex 块级容器 |
内部子元素自动成为 flex 项目 |
2 |
inline-flex; |
创建 flex 行内容器 |
内部子元素自动成为 flex 项目 |
2. flex 容器与项目特征
序号 |
容器/项目 |
默认行为 |
1 |
容器主轴 |
水平方向 |
2 |
项目排列 |
沿主轴起始线排列(当前起始线居左) |
3 |
项目类型 |
自动转换”行内块级”元素,不管之前是什么类型 |
4 |
容器主轴空间不足时 |
项目自动收缩尺寸以适应空间变化,不会换行显示 |
5 |
容器主轴存在未分配空间时 |
项目保持自身大小不会放大并充满空间 |
flex 容器主轴方向
flex-direction
属性
序号 |
属性值 |
描述 |
1 |
row 默认值 |
主轴水平: 起始线居中,项目从左到右显示 |
2 |
row-reverse |
主轴水平:起始线居右, 项目从右向左显示 |
3 |
column |
主轴垂直: 起始线居上,项目从上向下显示 |
4 |
column-reverse |
主轴垂直: 起始线居下,项目从下向上显示 |
flex 容器主轴项目换行
flex-wrap
属性
序号 |
属性值 |
描述 |
1 |
nowrap 默认值 |
项目不换行: 单行容器 |
2 |
wrap |
项目换行: 多行容器,第一行在上方 |
3 |
wrap-reverse |
项目换行: 多行容器,第一行在下方 |
flex 容器主轴项目对齐
justify-content
属性
当容器中主轴方向上存在剩余空间时, 该属性才有意义
序号 |
属性值 |
描述 |
1 |
flex-start 默认 |
所有项目与主轴起始线对齐 |
2 |
flex-end |
所有项目与主轴终止线对齐 |
3 |
center |
所有项目与主轴中间线对齐: 居中对齐 |
4 |
space-between |
两端对齐: 剩余空间在头尾项目之外的项目间平均分配 |
5 |
space-around |
分散对齐: 剩余空间在每个项目二侧平均分配 |
6 |
space-evenly |
平均对齐: 剩余空间在每个项目之间平均分配 |
flex 容器交叉轴项目对齐
align-items
属性
- 该属性仅适用于: 单行容器
- 当容器中交叉轴方向上存在剩余空间时, 该属性才有意义
序号 |
属性值 |
描述 |
1 |
flex-start 默认 |
与交叉轴起始线对齐 |
2 |
flex-end |
与交叉轴终止线对齐 |
3 |
center |
与交叉轴中间线对齐: 居中对齐 |
flex 多行容器交叉轴项目对齐
align-content
属性
- 该属性仅适用于: 多行容器
- 多行容器中, 交叉轴会有多个项目, 剩余空间在项目之间分配才有意义
序号 |
属性值 |
描述 |
1 |
stretch 默认 |
项目拉伸占据整个交叉轴 |
1 |
flex-start |
所有项目与交叉轴起始线(顶部)对齐 |
2 |
flex-end |
所有项目与交叉轴终止线对齐 |
3 |
center |
所有项目与交叉轴中间线对齐: 居中对齐 |
4 |
space-between |
两端对齐: 剩余空间在头尾项目之外的项目间平均分配 |
5 |
space-around |
分散对齐: 剩余空间在每个项目二侧平均分配 |
6 |
space-evenly |
平均对齐: 剩余空间在每个项目之间平均分配 |
提示: 多行容器中通过设置flex-wrap: wrap | wrap-reverse
实现
flex 项目交叉轴单独对齐
align-self
属性
- 该属性可覆盖容器的
align-items
, 用以自定义某个项目的对齐方式
序号 |
属性值 |
描述 |
1 |
auto 默认值 |
继承 align-items 属性值 |
2 |
flex-start |
与交叉轴起始线对齐 |
3 |
flex-end |
与交叉轴终止线对齐 |
4 |
center |
与交叉轴中间线对齐: 居中对齐 |
5 |
stretch |
在交叉轴方向上拉伸 |
6 |
baseline |
与基线对齐(与内容相关用得极少) |
flex 项目放大因子
flex-grow
属性
- 在容器主轴上存在剩余空间时,
flex-grow
才有意义 - 该属性的值,称为放大因子, 常见的属性值如下:
序号 |
属性值 |
描述 |
1 |
0 默认值 |
不放大,保持初始值 |
2 |
initial |
设置默认值,与0 等效 |
3 |
n |
放大因子: 正数 |
flex 项目收缩因子
flex-shrink
属性
- 当容器主轴 “空间不足” 且 “禁止换行” 时,
flex-shrink
才有意义 - 该属性的值,称为收缩因子, 常见的属性值如下:
序号 |
属性值 |
描述 |
1 |
1 默认值 |
允许项目收缩 |
2 |
initial |
设置初始默认值,与 1 等效 |
3 |
0 |
禁止收缩,保持原始尺寸 |
4 |
n |
收缩因子: 正数 |
flex 项目计算尺寸
flex-basis
属性
- 在分配多余空间之前,项目占据的主轴空间
- 浏览器根据这个属性,计算主轴是否有多余空间
- 该属性会覆盖项目原始大小(width/height)
- 该属性会被项目的
min-width/min-height
值覆盖
序号 |
属性值 |
描述 |
1 |
auto |
默认值: 项目原来的大小 |
2 |
px |
像素 |
3 |
% |
百分比 |
优先级: 项目大小 < flex-basis
< min-width/height
flex 项目缩放的简写
1. flex
属性
- 项目放大,缩小与计算尺寸,对于项目非常重要,也很常用
- 每次都要写这三个属性,非常的麻烦,且没有必要
flex
属性,可以将以上三个属性进行简化:- 语法:
flex: flex-grow flex-shrink flex-basis
1.1 三值语法
序号 |
属性值 |
描述 |
1 |
第一个值: 整数 |
flex-grow |
2 |
第二个值: 整数 |
flex-shrink |
3 |
第三个值: 有效宽度 |
flex-basis |
举例:
序号 |
案例 |
描述 |
1 |
flex: 0 1 auto |
默认值: 不放大,可收缩, 初始宽度 |
2 |
flex: 1 1 auto |
项目自动放大或收缩适应容器 |
3 |
flex: 0 0 100px |
按计算大小填充到容器中 |
1.2 双值语法
序号 |
属性值 |
描述 |
1 |
第一个值: 整数 |
flex-grow |
3 |
第二个值: 有效宽度 |
flex-basis |
举例:
案例 |
描述 |
flex: 0 180px |
禁止放大,按计算大小填充到容器中 |
1.3 单值语法
序号 |
属性值 |
描述 |
1 |
整数 |
flex-grow |
2 |
有效宽度 |
flex-basis |
3 |
关键字 |
`initial |
auto |
none` |
举例:
序号 |
案例 |
描述 |
1 |
flex: 1 |
flex: 1 1 auto |
2 |
flex: 180px |
flex: 1 1 180px |
3 |
initial |
flex: 0 1 auto |
4 |
auto |
flex: 1 1 auto |
5 |
none |
flex: 0 0 auto |
推荐使用flex
, 就像推荐使用flex-grow
设置主轴与换行一样
个人总结
通过学习 CSS
的 Flex
弹性布局,是我能更加熟练与快速的进行页面布局,首先要明白什么是弹性盒子;flex 是一维平面上的布局,要么沿着水平方向,要么就是垂直方向,而且布局只针对子元素.子元素自动收缩尺寸适应窗口大小的变化而不会自动换行.
特别注意 需要熟练掌握
flex共有12大属性,其中6个容器属性6个项目属性
1.容器属性
flex-direction(方向)
flex-wrap(换行)
flex-flow(方向、换行的简写)
justify-content(水平方向对齐)
align-items(竖直方向对齐)
align-content(多行对齐)
可以不用前两个 直接用flex-flow
进行缩写
2.项目属性
flex-basis(宽)
flex-grow(放大)
flex-shrink(缩小)
flex align-self(单个竖直方向对齐)
order(顺序)
flex(放大、缩小、宽的简写)
可以不用前三个属性,直接用flex
进行缩写
实操项目问题
1.文本溢出隐藏解决方法
div{
display: flex;
flex-flow: column nowrap;
/*父元素设置为弹性盒子,垂直且不允许换行*/
}
div > a {
white-space: nowrap; /*设置文字禁止换行*/
overflow: hidden; /* 内容超出宽度时隐藏超出部分的内容 */
text-overflow: ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
}
2.注意如果元素不是弹性盒模型对象的子元素,则 flex 属性不起作用 就是说这个子元素的上面的元素必须是 display: flex
3.vh给线下测试可以用这个高度显示正常,可是线上pc显示有问题需要进一步理解
作业代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui"
/>
<meta name="applicable-device" content="mobile" />
<title>php中文网-教程_手册_视频-免费php在线学习平台</title>
<link rel="stylesheet" href="static/css/font-icon.css" />
<style>
* {
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: #666;
}
html {
/* vw: 可视区宽度,100vw:表示占满100份 */
width: 100vw;
height: 100vh;
/* 在html中设置字体大小, 给后的rem单位用 */
font-size: 14px;
}
.hot {
color: coral;
}
body {
min-width: 360px;
max-width: 768px;
margin: 0 auto;
background: #edeff0;
display: flex;
flex-flow: column nowrap;
}
header {
background-color: #2d353c;
box-shadow: 0 0 10px 1px rgba(7, 17, 27, 0.1);
color: white;
height: 50px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 15px;
box-sizing: border-box;
position: fixed;
top: 0;
width: 100%;
}
header > a:first-of-type > img {
width: 30px;
height: 30px;
border-radius: 50%;
margin-top: 7px;
}
header > a:last-of-type > img {
height: 45px;
width: 94px;
}
.slider {
height: 200px;
margin-top: 50px;
}
.slider > img {
width: 100%;
height: 100%;
}
nav {
height: 30vh;
display: flex;
/* 变成多行容器 */
flex-flow: row wrap;
background-color: #fff;
}
nav > div {
/* 占宽度四分之一 */
width: 25vw;
display: flex;
flex-flow: column nowrap;
align-items: center;
justify-content: center;
}
nav > div > a:first-of-type {
text-align: center;
}
nav > div img {
width: 50%;
}
h2 {
margin: 20px 10px;
color: #888;
}
.course-list {
display: flex;
flex-flow: column nowrap;
}
.course-list > div:first-of-type {
display: flex;
justify-content: space-around;
margin: 10px;
}
.course-list > div:first-of-type > a img {
height: 90px;
width: 98%;
}
.course-list > div:last-of-type {
padding: 10px;
box-sizing: border-box;
display: flex;
flex-flow: column nowrap;
}
.course-intro {
padding: 10px;
margin: 10px;
box-sizing: border-box;
display: flex;
background-color: #fff;
}
.course-intro a {
width: 40%;
height: 80px;
}
.course-intro img {
width: 100%;
height: 80px;
}
.course-intro div {
display: flex;
flex-flow: column nowrap;
}
.course-intro div > h3,
.course-intro div > p {
margin: 10px;
color: #888;
}
.level {
background: #595757;
border-radius: 8px;
color: #fff;
font-size: 10px;
padding: 3px;
}
.left {
margin-right: 0 10px;
}
.new-list {
display: flex;
flex-flow: column nowrap;
margin: 0 10px;
}
.new-list .new-intro {
margin: 0 10px 10px;
padding: 10px;
background-color: #fff;
display: flex;
justify-content: space-between;
}
.new-intro a {
width: 40%;
height: 80px;
}
.new-intro img {
width: 100%;
height: 80px;
}
.new-intro div {
display: flex;
flex-flow: column nowrap;
margin-left: 10px;
box-sizing: border-box;
height: 80px;
width: 50%;
color: #888;
}
.new-list .new-intro div > .ld {
display: flex;
justify-content: space-between;
}
.new-intro div > a {
width: 100%;
color: #888;
font-size: 0.8rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.more {
display: block;
margin: 0 auto;
/* line-height: 30px; */
line-height: 10px;
text-align: center;
background: #fff;
padding: 10px 0;
width: 100%;
margin: 10px;
}
.new-intro-port {
margin: 0 10px 10px;
padding: 10px;
background-color: #fff;
display: flex;
}
.new-intro-port > div {
display: flex;
width: 100%;
justify-content: space-between;
}
.new-intro-port > div > a:last-of-type {
width: 40%;
}
.new-intro-port > div > a:first-of-type {
width: 60%;
}
.new-intro-port > div > a {
margin-left: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* 页脚 */
body > footer {
color: #666;
background-color: #efefef;
border-top: 1px solid #ccc;
height: 55px;
position: fixed;
bottom: 0;
width: 100vw;
display: flex;
justify-content: space-around;
}
body > footer > a {
margin-top: 10px;
font-size: 0.8rem;
display: flex;
flex-flow: column nowrap;
align-items: center;
}
body > footer > a > span:first-of-type {
font-size: 1.6rem;
}
</style>
</head>
<body>
<!-- 页面头部 -->
<header>
<a href="/"
><img src="static/images/user_avatar.jpg" alt="php中文网"
/></a>
<a href=""
><img
src="static/images/logo.png"
title="培训视频、在线学习、学习视频网站、网络学习平台"
/></a>
<span class="iconfont" style="font-size: 1.5rem;"></span>
</header>
<!-- banner图 -->
<div class="slider">
<img src="static/images/ico/11.png" alt="" />
</div>
<!-- 主导航区 -->
<nav>
<div>
<a href=""><img src="static/images/ico/html.png" /></a>
<a href="">HTML/CSS</a>
</div>
<div>
<a href=""><img src="static/images/ico/JavaScript.png" alt="" /></a>
<a href="">JavaScript</a>
</div>
<div>
<a href=""><img src="static/images/ico/code.png" alt="" /></a>
<a href="">服务端</a>
</div>
<div>
<a href=""><img src="static/images/ico/sql.png" alt="" /></a>
<a href="">数据库</a>
</div>
<div>
<a href=""><img src="static/images/ico/app.png" alt="" /></a>
<a href="">移动端</a>
</div>
<div>
<a href=""><img src="static/images/ico/manual.png" alt="" /></a>
<a href="">手册</a>
</div>
<div>
<a href=""><img src="static/images/ico/tool2.png" alt="" /></a>
<a href="">工具</a>
</div>
<div>
<a href=""><img src="static/images/ico/live.png" alt="" /></a>
<a href="">直播</a>
</div>
</nav>
<!-- 推荐课程 -->
<h2>推荐课程</h2>
<div class="course-list">
<div>
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg"
alt="PHP实战天龙八部之微信支付视频教程"
/></a>
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/001/5d2426f409839992.jpg"
alt="PHP实战天龙八部之仿爱奇艺电影网站"
/></a>
</div>
<div>
<div class="course-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/035/5d2941e265889366.jpg"
alt=""
/></a>
<div>
<h3><a href="">h3CI框架30分钟极速入门</a></h3>
<p><span class="level">中级</span><span>61263次播放</span></p>
</div>
</div>
<div class="course-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/126/153/5aa23f0ded921649.jpg"
alt=""
/></a>
<div>
<h3><a href="">2018前端入门_HTML5</a></h3>
<p><span class="level">初级</span><span>310347次播放</span></p>
</div>
</div>
</div>
</div>
<!-- 最近更新 -->
<h2>最近更新</h2>
<div class="new-list">
<div class="new-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/015/5e0d6387e45cc764.png"
alt=""
/></a>
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>PHP快速操控Excel之PhpSpreadsheet</a
>
<a
>老的PHPExcel已经停止更新了!目前最新的是使用phpOffice插件PhpSpreadsheet,用纯
php
编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式!php中文网欧阳克老师原创课程!注:PHP运行环境需要PHP7.1以上</a
>
<p class="ld">
<span class="level">中级</span><span>15088次播放</span>
</p>
</div>
</div>
<div class="new-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/015/5e0d82773b4fe808.png"
alt=""
/></a>
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>Thinkphp6.0正式版视频教程</a
>
<a
>Thinkphp6.0从2019年10月24日正式发布,相对测试版,有很多变动,目前TP6已经相对比较稳定了,所以php中文网在2020年再次重新录制课程,帮助快速入门!相关推荐:
ThinkPHP6.0完全开发手册(注解版)
https://www.php.cn/course/1049.html</a
>
<p class="ld">
<span class="level">中级</span><span>48933次播放</span>
</p>
</div>
</div>
<div class="new-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/014/5db2b53c67bca626.jpg"
alt=""
/></a>
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>2019python自学视频</a
>
<a
>本课程适合想从零开始学习 Python
编程语言的开发人员。由浅入深的带你进入python世界,自学python的一份好课程,兄弟连课程</a
>
<p class="ld">
<span class="level">初级</span><span>36485次播放</span>
</p>
</div>
</div>
<div class="new-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/015/5da7e9b7895ed229.png"
alt=""
/></a>
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>PHP开发免费公益直播课</a
>
<a
>主讲:php中文网-朱老师( Peter Zhu) 时间:2019.10.17 晚 20:00-22:00
主题:如何高效的学习一门新技术? 具体内容:1. 2020了,
还有哪些值得学习的新技术? 2.如何高效的学习前端开发?
3.如果高效的学习PHP开发?4.phpStudy V8 新功能介绍与演示
5.小皮面板功能介绍</a
>
<p class="ld">
<span class="level">初级</span><span>6821次播放</span>
</p>
</div>
</div>
<div class="new-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/014/5da6a50535529903.jpg"
alt=""
/></a>
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>从零开始到WEB响应式布局</a
>
<a
>重点介绍了HTML、CSS、web布局前端核心技术,通过视频讲解,了解可以利用HTML+CSS做什么,有相关工具、后端语言,逻辑思维训练等知识点</a
>
<p class="ld">
<span class="level">初级</span><span>29212次播放</span>
</p>
</div>
</div>
<div class="new-intro">
<a href=""
><img
src="https://img.php.cn/upload/course/000/000/015/5da51b8ff1224244.png"
alt=""
/></a>
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>PHP文件基础操作</a
>
<a
>好多同学在PHP基础的时候对PHP文件的操作了解的不够多,本节课就带着大家来学习PHP文件的基础操作,PHP操作文件主要用到的就是PHP文件相关的函数,那么我们主要讲的也就是PHP文件相关的各种函数,相信本节课程会让你对PHP更感兴趣哦!</a
>
<p class="ld">
<span class="level">中级</span><span>8888次播放</span>
</p>
</div>
</div>
</div>
<!-- 最新文章 -->
<h2>最新文章</h2>
<div class="new-list">
<div class="new-intro">
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>sublime正则搜索替换修改数据的方法</a
>
<a><span>发布时间:2020-04-11</span></a>
</div>
<a href=""
><img
src="https://img.php.cn/upload/article/000/000/020/5e91923747dab842.jpg"
alt=""
/></a>
</div>
<div class="new-intro">
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>为什么我的电脑只有c盘</a
>
<a><span>发布时间:2020-04-11</span></a>
</div>
<a href=""
><img
src="https://img.php.cn/upload/article/000/000/020/5e918fffe166f364.jpg"
alt="为什么我的电脑只有c盘"
/></a>
</div>
<div class="new-intro">
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>dedecms如何添加并引入php文件</a
>
<a><span>发布时间:2020-04-11</span></a>
</div>
<a href=""
><img
src="https://img.php.cn/upload/article/000/000/041/5e918a4ac6da9826.jpg"
alt="dedecms如何添加并引入php文件"
/></a>
</div>
<div class="new-intro">
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>扩展分区转主分区的方法</a
>
<a><span>发布时间:2020-04-11</span></a>
</div>
<a href=""
><img
src="https://img.php.cn/upload/article/000/000/020/5e9179096b985669.jpg"
alt="扩展分区转主分区的方法"
/></a>
</div>
<div class="new-intro">
<div>
<a href="" style="font-size: 1.2rem; font-weight: bolder;"
>2020全新Java面试题——容器(二)</a
>
<a><span>发布时间:2020-04-11</span></a>
</div>
<a href=""
><img
src="https://img.php.cn/upload/article/000/000/041/5e9172bb26057270.jpg"
alt="2020全新Java面试题——容器(二)"
/></a>
</div>
</div>
<!-- 最新博文 -->
<h2>最新文章</h2>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>CSS3:弹性盒子flex布局</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>Jquery+AJAX上传文件,无刷新上传并重命名文件</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>thinkphp5.6源码阅读1</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>Composer windows安装详细介绍</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>AI智能电销机器人源码 源码解读(1)—基础</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<!-- 最新问答 -->
<h2>最新问答</h2>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>不出现tp6.0页面</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>数据库密码··</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>制定的学习计划在哪能找到 咋找不到呢?</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>数据库链接后怎么知道用哪个表啊</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<div class="new-list">
<div class="new-intro-port">
<div>
<a href="" style="font-size: 1rem; font-weight: bolder;"
>这个同步的东西</a
>
<a><span>2020-04-11</span></a>
</div>
</div>
</div>
<!-- 页脚 -->
<footer>
<a href="">
<span class="iconfont hot"></span>
<span>首页</span>
</a>
<a href="">
<span class="iconfont hot"></span>
<span>视频</span>
</a>
<a href="">
<span class="iconfont hot"></span>
<span>社区</span>
</a>
<a href="">
<span class="iconfont hot"></span>
<span>我的</span>
</a>
</footer>
</body>
</html>