Article Outline
CSS-3-Flex布局
<!--more-->
#Flex布局
flex布局可以实现空间自动分配自动对齐,适用于简单的线性布局。
flex基本概念
- flex container的属性
- flex-direction 方向(row和column)
- flex-wrap 换行(默认nowrap,设置wrap后换行)
- flex-flow 方向和换行的简写
- justify-content 主轴(main axis)方向对齐方式(space-between,space-around,flex-starr,flex-end,center)
- align-item 侧轴对齐方式 (stretch,flex-start,flex-end,center)
- align-content 多行/列内容对齐方式(不常见)
`2. flex item属性
- flex-grow 增长比例(空间过多时)
- flex-shrink 收缩比例(空间不够时)
- flex-basis 默认大小(一般不用)
- flex 上面三个的缩写
- order 顺序(代替双飞翼)
- align-self自身对齐方式
使用flex布局
- 手机页面布局(topbar+main+tabs)
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
list-style: none;
}
.container{
height: 100vh;
display: flex;
flex-direction: column;
/*使用列布局*/
}
.header{
height: 100px;
background: #98ff79;
}
.main{
flex-grow: 1;
/*将剩下的空间分配给main*/
overflow: auto;
/*中间内容超出时增加滚动条,不用给下面ul>li增加fix定位*/
}
.footer{
height: 100px;
background: #e69dff;
}
.footer ul{
width: 100%;
height: 100%;
display: flex;
}
.footer ul li{
width: 25%;
height: 100%;
border: 1px solid black;
}
</style>
<div class="container">
<div class="header">header</div>
<div class="main">main</div>
<div class="footer">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
- 产品列表(li*9)
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
list-style: none;
}
ul{
display: flex;
flex-wrap: wrap;
width: 350px;
margin: 0 auto;
border: 1px solid red;
justify-content: space-between;
}
li{
width: 100px;
height: 100px;
background: #83ffe6;
border: 1px solid black;
}
</style>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
- PC页面布局
<style>
*{
margin: 0;
padding: 0;
}
.header{
height: 50px;
background: #a4ff6a;
}
.footer{
height: 50px;
background: #ff7cf4;
}
.content{
display: flex;
}
.left{
width: 200px;
background: #c4beff;
}
.main{
height: 400px;
background: #ffb894;
flex-grow: 1;
}
.right{
width: 200px;
background: #ff988a;
}
</style>
<div class="header">header</div>
<div class="content">
<div class="left">left</div>
<div class="main">main</div>
<div class="right">right</div>
</div>
<div class="footer">footer</div>
- 完美居中
<style>
.parent{
min-height: 400px;
background: #efafff;
display: flex;
justify-content: center;
/*主轴居中*/
align-items: center;
/*侧轴居中*/
}
.child{
border: 1px solid red;
}
</style>
<div class="parent">
<div class="child">
jdashfjasdfah覅好僵啊时代峰峻爱世界净空法师大恒科技凤凰健康设计费
</div>
</div>