美文网首页
flex布局

flex布局

作者: 没汁帅 | 来源:发表于2017-12-14 17:10 被阅读62次

关于flex的基本概念啥的就不介绍了,直接正题。
基本布局

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>flex box</title>
  <style media="screen">
    * {-webkit-box-sizing: border-box; box-sizing: border-box;}
    .container div { background-color: red; border: 1px solid #333; }
    .div1 {width: 70px; height: 70px;}
    .div2 {width: 50px; height: 50px;}
    .div3 {width: 60px; height: 60px;}
    .container {width: 299px;  height: 300px; background-color: #f0f0f0;}
  </style>
</head>
<body>
  <div class="container">
    <div class="div1">盒1</div>
    <div class="div2">盒2</div>
    <div class="div3">盒3</div>
  </div>
</body>
</html>

写在父容器上的属性

1、flex-direction(排列)

.container {
    flex-direction:  row ;              /*水平排列(同float:left;)*/
                   row-reverse ;        /*水平排列(同float:right;)*/
                   column ;             /*垂直排列-顶部开始*/
                   column-reverse;      /*垂直排列-底部开始*/
}
flex-direction.jpg

2、flex-wrap(换行)

.container{
    flex-wrap: nowrap;          /*不换行*/
               wrap;            /*换行,第一行在顶部*/
               wrap-reverse;    /*换行,第一行在底部*/
}
flex-wrap.jpg

3、flex-flow

.container{
    flex-flow: <flex-direction>  <flex-wrap>;   /*怎么排列(row/column)   怎么换行(nowrap/wrap)*/
}
flex-flow.jpg

4、justify-content

.container{
    justify-content: flex-start;          /*左对齐(默认值) 类似flex-direction: row;*/
                     flex-end;            /*右对齐  类似flex-direction: row-reverse;*/
                     center;              /*居中*/
                     space-between;       /*两端对齐,项目之间的间隔都相等*/
                     space-around;        /*每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍*/   
                     space-evenly;        /*每个项目间隔相等。所以,项目之间的间隔与边框的间隔一样大*/                  
}
justify-content.jpg

5、align-items

.container{
    align-items: flex-start;      /*顶对齐*/
                 flex-end;        /*底对齐*/
                 center;          /*居中对齐*/
                 baseline;        /*项目的第一行文字的基线对齐*/
                 stretch;         /*(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。案例中没有给盒1和盒3高度*/       
}
align-items.jpg

6、align-content

这个属性是基于两条轴线的 如果我的元素还是三个 ,没有出现换行的时候,此属性是没有效果的。增加三个盒子,然后给他们增加一个属性 flex-wrap: wrap就可以了。

.container{
    align-content: flex-start;      /*与交叉轴的起点对齐*/
                 flex-end;          /*与交叉轴的终点对齐*/
                 center;            /*与交叉轴的中点对齐*/
                 space-between;     /*与交叉轴两端对齐,轴线之间的间隔平均分布*/
                 space-around;      /*每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。*/
                 stretch;           /*((默认值):轴线占满整个交叉轴*/       
}
align-content.png

写在子元素上的属性

1、order

默认值是零 ,越小的数字排的学靠前;

.div2{
    order: 1;  /*在这里给div2的子元素增加了这个属性,它就会比其他的排列都靠后*/
}

在这里给div2的子元素增加了这个属性,它就会比其他的排列都靠后;盒5和盒2是都是 div2;


order.png

2、flex-grow

定义子元素的放大比例,默认为0,意思就是即使存在剩余空间,也不会放大;

.div2{
    flex-grow: 1;  /*拉伸剩余空间*/
}
flex-grow
如果所有子元素的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。
如果一个子元素的flex-grow属性为2,其他子元素都为1,则前者占据的剩余空间将比其他子元素多一倍。
flex-grow 2.jpg

3、flex-shrink

flex-shrink属性定义了子元素的缩小比例,默认为1,即如果空间不足,该子元素将缩小。

.container{
    width: 150px;  /*设置父元素的宽度为150px;*/
}
.div2{
   flex-shinrk: 0;  /*默认值为1,这里改成0,表示空间不足也不能压缩div2 ,盒1和盒3将会被压缩*/
}
flex-shink.png

4、flex-basis

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

.div2{
    flex-basis: 100px;  /*当父元素存在多于空间,div2要占据100px空间;空间不足也按照100px空间来压缩*/
}
flex-basis.png

5、flex

flex属性是flex-grow, flex-shrinkflex-basis的简写,默认值为0 1 auto。后两个属性可选。

.div2{
    flex: 0 1 100px;  /*即flex-grow: 0; flex-shrink: 1; flex-basis: 100px;*/
}

flex-grow和flex-shrink值为默认值,显示效果等同于basis: 100px;

6、

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

.div2{
    align-self: auto;        /*默认值*/
                flex-start;  /**/
                flex-end;    /**/
                center;      /**/
                baseline;    /*需要两个以上元素有此属性才有用*/
                stretch;     /*给盒2的去掉*/
}
align-self.jpg

以上为flex的基础知识,具体应用还要上手练习才能体会。

本文参考 Flex 布局教程:语法篇

相关文章

  • flex布局

    认识flex布局 flex布局(Flexible 布局,弹性布局)开启了flex布局的元素叫flex contai...

  • 初见FLEX

    FLEX布局 一种新的布局方式,flex布局 flex布局与方向无关 flex布局可以实现空间自动分配、自动对齐。...

  • Flex 布局教程

    一、Flex 布局教程:语法篇 Flex 布局教程:语法篇 二、Flex 布局教程:实例篇 Flex...

  • css flex布局详解

    css flex布局详解 css flex布局详解1css flex布局详解2

  • Flex

    阮一峰-Flex布局 阮一峰-Flex布局实例教程 Flex布局 块级元素 行内元素 注意,设为 Flex 布局...

  • flex布局学习笔记

    经典教程 Flex 布局教程:语法篇Flex 布局教程:实例篇flex布局游戏 理解 flex布局实现需要至少两层...

  • 6Flex 布局

    Flex,(Flexible Box),意为"弹性布局"采用 Flex 布局的元素,为 Flex 容器(flex ...

  • css flex

    css flex布局 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称“容器...

  • Flex布局(语法篇)

    一、介绍Flex布局 什么是Flex布局呢?Flex布局:又称弹性布局,它是Flexible Box 的缩写,它为...

  • Day02_flex布局

    一、flex布局介绍: 1、又名Flexible 布局,弹性布局;2、开启了 flex 布局的元素叫 flex c...

网友评论

      本文标题:flex布局

      本文链接:https://www.haomeiwen.com/subject/oxnkwxtx.html