flex的使用实例

Posted yehuisir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flex的使用实例相关的知识,希望对你有一定的参考价值。

之前的随笔从阮一峰老师那里学到了flex的基本用法及作用,现在来把flex具体运用到实例中,看看flex的弹性布局效果。

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

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

html代码:

<div class="demo">
  <div class="inner">
    <p>这是一个测试这是一个测试这是一个测试这是一个测试这是一个测试</p>
  </div>
</div>

CSS代码:

技术分享图片
.demo{
  width: 500px;
  height: 300px;
  border: 1px solid purple;
  display: flex;                /*设置为flex布局*/
  justify-content: center;   /*水平居中*/
  align-items: center;     /*垂直居中*/
}
.inner{
  width: 160px;
  height: 160px;
  font-size: 26px;
  border: 1px solid red;
}
技术分享图片

效果如图:

技术分享图片

2. 用flex布局制作导航栏

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

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

 HTML代码:

<ul>
 <li>音乐</li>
 <li>影视</li>
 <li>旅游</li>
</ul>

CSS代码:

技术分享图片
ul{
  display: flex;         
}
li{
  flex: 1;
  text-align: center;
  line-height: 100px;
}
技术分享图片

效果如图所示:

技术分享图片

 

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

技术分享图片

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

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

技术分享图片

此时用flex会很方便

HTML代码:

技术分享图片
<div class="demo">
   <div class="left"></div>
   <div class="right">
      <p>Iphone7 PLUS XXXXXXXXXX</p>
      <span>总人数99</span>
      <span>剩余人数33</span>
      <div class="btn">立即参与</div>
   </div>
</div>
技术分享图片

CSS代码:

技术分享图片
.demo{
  display: flex;                /*设置为flex布局*/
  justify-content: space-around;
}
.demo > div{
  flex: none;
}
.left{
  width: 200px;
  height: 200px;
  background: #d4cdcd;
}
.right{
  width: 380px;
  height: 200px;
}
技术分享图片

甚至有多列布局,

技术分享图片

HTML代码:

技术分享图片
<div class="demo">
   <div class="left"></div>
   <div class="center">
      <p>description</p>
      <p>description</p>
      <p>description</p>
      <span>description</span>
   </div>
   <div class="btn">确认</div>
   <div class="btn">取消</div>
</div>
技术分享图片

CSS代码:

技术分享图片
.demo{
  width: 600px;
  height: 150px;
  border: 1px solid #b7b2b7;
  margin: 30px auto;
  padding-top: 17px;
  display: flex;                /*设置为flex布局*/
  justify-content: space-around;
}
.demo > div{
  flex: none;
}
技术分享图片

4. 固定百分比布局:

HTML代码:

<div class="demo">
   <div class="item item1"></div>
   <div class="item item2"></div>
   <div class="item item3"></div>
   <div class="item item4"></div>
</div>

 (1) 等分布局:

技术分享图片

CSS代码:

.demo{
  display: flex;             
}
.item{
  flex: 1;
}

(2)某一个固定

 技术分享图片

CSS代码:

技术分享图片
.demo{
  display: flex;    
}
.item{
  flex: 1;
}
.item2{
  flex: 0 0 50%;
}
技术分享图片

(3)某两个固定

技术分享图片

CSS代码:

技术分享图片
.demo{
  display: flex;    
}
.item{
  flex: 1;
}
.item2{
  flex: 0 0 50%;
}
.item4{
  flex: 0 0 20%;
}
技术分享图片

(4)三个固定

技术分享图片

CSS代码:

技术分享图片
.demo{
  display: flex;           
}
.item{
  flex: 1;
}
.item1{
  flex: 0 0 10%;
}
.item2{
  flex: 0 0 50%;
}
.item4{
  flex: 0 0 20%;
}
技术分享图片

5.  圣杯布局,如图所示

技术分享图片

HTML代码:

技术分享图片
<div class="demo">
   <div class="header">头部</div>
   <div class="body">
      <div class="left">left</div>
      <div class="center">center</div>
      <div class="right">right</div>
   </div>
   <div class="footer">底部</div>
</div>
技术分享图片

CSS代码:

技术分享图片
.demo{
  display: flex;
  flex-direction: column;            
}
.demo div{
  flex: 1;
}
.body{
  display: flex;  
} 
.header,.footer,.left,.right{
  flex: 0 0 20%!important;
}
技术分享图片

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

技术分享图片

技术分享图片

HTML代码:

<div class="demo">
   <span class="tip"></span>
   <input type="text" name="" />
   <button>search</button>
</div>

CSS代码:

.demo{
  display: flex;
}
input{
  flex:1;
}

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

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

技术分享图片

HTML代码:

<div class="demo">
   <div class="main">这是主要内容</div>
   <div class="footer">这是底部</div>
</div>

CSS代码:

技术分享图片
.demo{
    display: flex;
    flex-direction: column;
}
.main{
    flex: 1;
}
.footer{
    width: 100%;
    height: 120px;
}
技术分享图片

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

技术分享图片技术分享图片

HTML代码如下:

<div class="demo">
   <div class="item"></div>
   <div class="item"></div>
   <div class="item"></div>
   <div class="item"></div>
</div>

CSS代码:

技术分享图片
.demo{
    width: 258px;
    height: 300px;
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
}
.item{
    flex: 0 0 33.333333%;
    height: 80px;
    box-sizing: border-box;
}
技术分享图片

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

 


以上是关于flex的使用实例的主要内容,如果未能解决你的问题,请参考以下文章

flex的使用实例

创建片段而不从 java 代码实例化它

flex实例(阮一峰)

Flex 布局教程:实例

Flex 布局教程:实例篇

Flex 布局教程:实例篇