弹性盒布局详解

弹性盒介绍

弹性盒是一种新的布局手段,用于代替浮动来布局页面

弹性盒分为: 弹性容器弹性元素

display: flex   /* 设置为弹性容器 */

弹性容器内的直接子元素才是弹性元素

弹性盒的CSS属性

开启弹性盒

ul{
display: flex; /* 设置元素为弹性容器,其中的元素是弹性元素 */
}

弹性容器的CSS属性

flex-direction设置弹性元素在弹性容器中的排列方向

/* 设置弹性元素在弹性容器中的排序列方向 */
display: flex;
flex-direction: row; /* 默认值: 从左向右排序 */
flex-direction: row-reverse; /* 从右往左排序, 位置上类似于float: right */
flex-direction: column; /* 从上往下排序 */
flex-direction: column-reverse; /* 从下往上排序 */

主轴与侧轴(副轴)

主轴: 指的是弹性元素的排列方向

副轴: 与弹性元素排列方向垂直的方向

flex-direction: column-reverse; /* 此时主轴方向是自下向上类似 */

flex-wrap设置弹性容器空间不足时是否自动换行

注意: 优先级比flex-shrink高

/* 指定弹性容器空间不足时是否换行 优先级比flex-shrink高 */
flex-wrap: wrap;

flex-flow是wrap与direction结合的属性

ul{
flex-flow: row wrap;
/* 以上等价于下面两条语句 */
flex-direction: row;
flex-wrap: wrap;
}

justify-content指定弹性元素在弹性容器主轴的布局

flex-start元素沿着主轴起边排列

ul{
/* justify-content指定弹性元素在弹性容器的的布局 */
justify-content: flex-start;
}

flex-end元素沿着主轴终边排列

ul{
/* justify-content指定弹性元素在弹性容器的的布局 */
justify-content: flex-end;
}

center元素居中排列

ul{
/* justify-content指定弹性元素在弹性容器的的布局 */
justify-content: center;
}

space-around空白平均分布到元素周围

ul{
/* justify-content指定弹性元素在弹性容器的的布局 */
justify-content: space-around;
}

看起来中间缝隙比较大是因为两个元素的空白相加了

space-evenly元素周围的空白看起来一致

ul{
/* justify-content指定弹性元素在弹性容器的的布局 */
justify-content: space-evenly;
}

space-between元素紧贴两侧

ul{
/* justify-content指定弹性元素在弹性容器的的布局 */
justify-content: space-between;
}

align-content指定弹性元素在弹性容器侧轴的布局

center侧轴上元素处于居中(上下空白相等)

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: center;

flex-start侧轴上元素靠上排列(且是上下连续紧贴)

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: flex-start;

flex-end侧轴上元素靠下排列(且是上下连续紧贴)

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: flex-end;

flex-around侧轴上元素靠下排列(且是上下连续紧贴)

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: flex-around;

flex-between侧轴上元素紧贴两侧

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: flex-between;

stretch元素沿侧轴排列与align-items: flex-start相似

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: stretch;

flex-end侧轴上元素靠下排列(且是上下连续紧贴)

/* align-content指定弹性元素在弹性容器侧轴的布局 */
align-content: flex-end;

align-items指定弹性元素在弹性容器中的对齐方式

stretch将元素每一行设置为长度一致

/* align-items指定弹性元素在弹性容器侧轴的布局 */
align-items: stretch; /* 默认值 */

flex-start元素不拉伸的情况下贴紧侧轴起边

/* align-items指定弹性元素在弹性容器侧轴的布局 */
align-items: flex-start; /* 默认值 */

flex-end元素不拉伸的情况下贴紧侧轴终边

/* align-items指定弹性元素在弹性容器侧轴的布局 */
align-items: flex-end; /* 默认值 */

center元素在侧轴居中对齐

/* align-items指定弹性元素在弹性容器侧轴的布局 */
align-items: center; /* 默认值 */

baseline元素沿基线对齐

/* align-items指定弹性元素在弹性容器侧轴的布局 */
align-items: baseline; /* 默认值 */

align-self用于自定义单个弹性元素的align-items样式

ul{
/* 弹性容器规定其中每个弹性元素的样式 */
align-items: flex-start;
}
li:first-of-type{
/* 为单个弹性元素设置样式 */
align-self: flex-end;
}

弹性元素的CSS属性

flex-grow与flex-shrink伸缩属性

ul{
display: flex; /* 设置元素为弹性容器,其中的元素是弹性元素 */
}
li{
/* 伸展系数 */
flex-grow: 0; /* 默认值 */
flex-grow: 1; /* 默认值: 等比例伸展 */
/* 收缩系数: 指定当弹性容器容纳不下所有子元素时,如何对子元素进行收缩 */
flex-shrink: 1; /* 默认值: 等比例收缩 */
flex-shrink: 0; /* 不收缩 */
}

flex-basis规定了弹性元素的基础长度(会覆盖原width或height,取决于主轴方向)

ul{
width: 800px;
border: 10px red solid; /* 设置成弹性元素 */
display: flex;
} li{
width: 200px;
height: 100px;
background-color: #bfa;
font-size: 50px;
text-align: center;
line-height: 100px; /* 弹性元素的CSS属性 */
flex-basis: 100px; /* 覆盖width */
}

order指定多个弹性元素的顺序

ul{
width: 800px;
border: 10px red solid; /* 设置成弹性元素 */
display: flex;
} li{
width: 200px;
height: 100px;
background-color: #bfa;
font-size: 50px;
text-align: center;
line-height: 100px; /* 弹性元素的CSS属性 */
flex-basis: 100px; /* 覆盖width */
} li:nth-child(1){
order: 2;
}
li:nth-child(2){
background-color: tomato;
order: 3;
}
li:nth-child(3){
background-color: orange;
order: 1;
}

align-items与justify-content让元素在父元素中垂直水平居中

<style>
.father{
width: 400px;
height: 400px;
background-color: #bfa;
} .son{
width: 100px;
height: 100px;
background-color: tomato;
} /* 使用弹性盒让子元素在父元素中垂直水平居中 */
/* 父元素成为弹性容器 */
.father{
display: flex;
justify-content: center;
align-items: center;
}
</style>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>

弹性盒布局详解(display: flex;)的更多相关文章

  1. 深入理解 CSS3 弹性盒布局模型

    Web 应用的样式设计中,布局是非常重要的一部分.布局用来确定页面上不同组件和元素的尺寸和位置.随着响应式用户界面的流行,Web 应用一般都要求适配不同的设备尺寸和浏览器分辨率.响应式用户界面设计中最 ...

  2. CSS3 弹性盒布局模型(转)

    简介 引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的条目进行排列. 对齐和分配空白空间.即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作.在该布局模型中,容器会根 ...

  3. css怪异盒模型和弹性盒布局(flex)详解及其案例

    一.怪异盒模型 怪异盒模型的属性是box-sizing,他有两个属性值: 1.content-box 这是由 CSS2.1 规定的宽度高度行为.宽度和高度分别应用到元素的内容框.在宽度和高度之外绘制元 ...

  4. flex布局详解

    1.背景介绍 传统的布局解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C ...

  5. display设置弹性盒布局

    转自:http://blog.csdn.net/itbwy/article/details/52648711 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖  ...

  6. css笔记 - flex弹性盒布局

    flex: display:-webkit-box | -moz-box;盒布局 -webkit-box-flex | -moz-box-flex;弹性盒布局 -webkit-box-ordinal- ...

  7. 弹性盒布局(flex)

    一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. .box ...

  8. FlexBox弹性盒布局

    网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...

  9. CSS3与弹性盒布局

    1.弹性盒布局对齐模式 1.1.弹性盒子 在规定弹性盒子之中的子级元素换行显示之前父级元素必须是弹性盒子模型,也就是设置 display 为 flex 代码如下: <!DOCTYPE html& ...

随机推荐

  1. Educational Codeforces Round 89 (Rated for Div. 2)D. Two Divisors 线性筛质因子

    题目链接:D:Two Divisors 题意: 给你n个数,对于每一个数vi,你需要找出来它的两个因子d1,d2.这两个因子要保证gcd(d1+d2,vi)==1.输出的时候输出两行,第一行输出每一个 ...

  2. AcWing 239.奇偶游戏 (带权并查集/种类并查集)

    题意:你和朋友玩游戏,有个一\(01\)序列,你每次给出一个区间,朋友会回答这个区间中的\(1\)的个数是奇数还是偶数,但是你亲爱的朋友可能在撒谎,问在哪个询问你能确定你的朋友在撒谎,输出回合数. 题 ...

  3. HDU-3081-Marriage Match II 二分图匹配+并查集 OR 二分+最大流

    二分+最大流: 1 //题目大意:有编号为1~n的女生和1~n的男生配对 2 // 3 //首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 4 // 5 //然后输入f组,c,d表示 ...

  4. 牛客编程巅峰赛S1第5场 - 黄金&钻石&王者 B.牛牛的字符串 (DP)

    题意:有一个字符串\(s\),我们可以选择\(s_{i}\),如果\(s_{i+k}>s_{i}\),那么就可以交换\(s_{i}\)和\(s_{i+k}\),问最多能够交换多少次. 题解:因为 ...

  5. Java15变量竟然没什么区别,八大基本数据类型你知道吗?

    变量是什么? 变量是用来为不同数据类型在内存中分配的空间用来储存该数据. 不同于python这样的弱类型语言,变量声明不需要定义数据类型,就和写数学方程式一般,谁等于谁即可.而Java这个发展了多个版 ...

  6. 在程序中通过Process启动外部exe的方法及注意事项

    启动外部进程的方法: /// <summary> /// 启动外部进程 /// </summary> /// <param name="path"&g ...

  7. python = 赋值顺序 && C++ side effect

    title: python = 赋值顺序 && C++ side effect date: 2020-03-17 15:00:00 categories: [python][c++] ...

  8. windows 命令行 cmd 控制exe程序输入输出并比较

    参考 https://www.cnblogs.com/zccz14/p/4588634.html 例子: 对exe输入输出 使用fc比较不同

  9. java8按照lamda表达式去重一个list,根据list中的一个元素

    /** * 按照指定字段给list去重 * @param list * @return */ public static List<DataModel> niqueList(List< ...

  10. [USACO15JAN]Moovie Mooving G

    [USACO15JAN]Moovie Mooving G 状压难题.不过也好理解. 首先我们根据题意: she does not want to ever visit the same movie t ...