flex的使用实例

参考:http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

            http://www.runoob.com/w3cnote/flex-grammar.html

1.  flex设置元素垂直居中对齐

在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现

HTML代码:

 
  1. <div class="demo">

  2. <div class="inner">

  3. <p>这是一个测试这是一个测试这是一个测试这是一个测试这是一个测试</p>

  4. </div>

  5. </div>

CSS代码:

 
  1. .demo{

  2. width: 500px;

  3. height: 300px;

  4. border: 1px solid purple;

  5. display: flex; /*设置为flex布局*/

  6. justify-content: center; /*水平居中*/

  7. align-items: center; /*垂直居中*/

  8. }

  9. .inner{

  10. width: 160px;

  11. height: 160px;

  12. font-size: 26px;

  13. border: 1px solid red;

  14. }

效果如图:

 

2. 用flex布局制作导航栏

 以前在写导航栏的时候,总是用float或者display:inline-block实现,但是这两种方法都会有各种问题,比如浮动会影响父元素以及兄弟元素的样式,需要清除浮动

 现在用flex会很方便,并且是弹性布局

 HTML代码:

 
  1. <ul>

  2. <li>音乐</li>

  3. <li>影视</li>

  4. <li>旅游</li>

  5. </ul>

CSS代码:

 
  1. ul{

  2. display: flex;

  3. }

  4. li{

  5. flex: 1;

  6. text-align: center;

  7. line-height: 100px;

  8. }

效果如图所示:

 

我们只要在HTML代码里面多加两个li元素,导航便弹性变化

 

不需要改变css代码,即可在导航栏中增加项目

3. 有时候需要做成左图右文字的样式,如下图所示:

 

此时用flex会很方便

HTML代码:

 
  1. <div class="demo">

  2. <div class="left"></div>

  3. <div class="right">

  4. <p>Iphone7 PLUS XXXXXXXXXX</p>

  5. <span>总人数99</span>

  6. <span>剩余人数33</span>

  7. <div class="btn">立即参与</div>

  8. </div>

  9. </div>

CSS代码:

 
  1. .demo{

  2. display: flex; /*设置为flex布局*/

  3. justify-content: space-around;

  4. }

  5. .demo > div{

  6. flex: none;

  7. }

  8. .left{

  9. width: 200px;

  10. height: 200px;

  11. background: #d4cdcd;

  12. }

  13. .right{

  14. width: 380px;

  15. height: 200px;

  16. }

甚至有多列布局,

 

HTML代码:

 
  1. <div class="demo">

  2. <div class="left"></div>

  3. <div class="center">

  4. <p>description</p>

  5. <p>description</p>

  6. <p>description</p>

  7. <span>description</span>

  8. </div>

  9. <div class="btn">确认</div>

  10. <div class="btn">取消</div>

  11. </div>

CSS代码:

 
  1. .demo{

  2. width: 600px;

  3. height: 150px;

  4. border: 1px solid #b7b2b7;

  5. margin: 30px auto;

  6. padding-top: 17px;

  7. display: flex; /*设置为flex布局*/

  8. justify-content: space-around;

  9. }

  10. .demo > div{

  11. flex: none;

  12. }

4. 固定百分比布局:

HTML代码:

 
  1. <div class="demo">

  2. <div class="item item1"></div>

  3. <div class="item item2"></div>

  4. <div class="item item3"></div>

  5. <div class="item item4"></div>

  6. </div>

 (1) 等分布局:

 

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. }

  4. .item{

  5. flex: 1;

  6. }

(2)某一个固定

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. }

  4. .item{

  5. flex: 1;

  6. }

  7. .item2{

  8. flex: 0 0 50%;

  9. }

(3)某两个固定

 

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. }

  4. .item{

  5. flex: 1;

  6. }

  7. .item2{

  8. flex: 0 0 50%;

  9. }

  10. .item4{

  11. flex: 0 0 20%;

  12. }

(4)三个固定

 

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. }

  4. .item{

  5. flex: 1;

  6. }

  7. .item1{

  8. flex: 0 0 10%;

  9. }

  10. .item2{

  11. flex: 0 0 50%;

  12. }

  13. .item4{

  14. flex: 0 0 20%;

  15. }

5.  圣杯布局,如图所示

 

HTML代码:

 
  1. <div class="demo">

  2. <div class="header">头部</div>

  3. <div class="body">

  4. <div class="left">left</div>

  5. <div class="center">center</div>

  6. <div class="right">right</div>

  7. </div>

  8. <div class="footer">底部</div>

  9. </div>

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. flex-direction: column;

  4. }

  5. .demo div{

  6. flex: 1;

  7. }

  8. .body{

  9. display: flex;

  10. }

  11. .header,.footer,.left,.right{

  12. flex: 0 0 20%!important;

  13. }

6.  输入框布局,有时需要在输入框的前部添加提示,或者后部添加按钮,如图所示:

 

 

 

HTML代码:

 
  1. <div class="demo">

  2. <span class="tip"></span>

  3. <input type="text" name="" />

  4. <button>search</button>

  5. </div>

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. }

  4. input{

  5. flex:1;

  6. }

 7.  底部footer固定在底部,但是不是fixed定位

页面会经常用到固定的底栏,但是当页面内容过少时,footer会到页面中间,下面用flex来解决

 

HTML代码:

 
  1. <div class="demo">

  2. <div class="main">这是主要内容</div>

  3. <div class="footer">这是底部</div>

  4. </div>

CSS代码:

 
  1. .demo{

  2. display: flex;

  3. flex-direction: column;

  4. }

  5. .main{

  6. flex: 1;

  7. }

  8. .footer{

  9. width: 100%;

  10. height: 120px;

  11. }

8.  流式布局 ,如下如所示:

 

HTML代码如下:

 
  1. <div class="demo">

  2. <div class="item"></div>

  3. <div class="item"></div>

  4. <div class="item"></div>

  5. <div class="item"></div>

  6. </div>

CSS代码:

 
  1. .demo{

  2. width: 258px;

  3. height: 300px;

  4. display: flex;

  5. flex-wrap: wrap;

  6. align-content: flex-start;

  7. }

  8. .item{

  9. flex: 0 0 33.333333%;

  10. height: 80px;

  11. box-sizing: border-box;

  12. }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值