弹性盒布局详解(display: flex;)
- 弹性盒布局详解
弹性盒布局详解
弹性盒介绍
弹性盒是一种新的布局手段,用于代替浮动来布局页面
弹性盒分为: 弹性容器
和弹性元素
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;)的更多相关文章
- 深入理解 CSS3 弹性盒布局模型
Web 应用的样式设计中,布局是非常重要的一部分.布局用来确定页面上不同组件和元素的尺寸和位置.随着响应式用户界面的流行,Web 应用一般都要求适配不同的设备尺寸和浏览器分辨率.响应式用户界面设计中最 ...
- CSS3 弹性盒布局模型(转)
简介 引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的条目进行排列. 对齐和分配空白空间.即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作.在该布局模型中,容器会根 ...
- css怪异盒模型和弹性盒布局(flex)详解及其案例
一.怪异盒模型 怪异盒模型的属性是box-sizing,他有两个属性值: 1.content-box 这是由 CSS2.1 规定的宽度高度行为.宽度和高度分别应用到元素的内容框.在宽度和高度之外绘制元 ...
- flex布局详解
1.背景介绍 传统的布局解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C ...
- display设置弹性盒布局
转自:http://blog.csdn.net/itbwy/article/details/52648711 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 ...
- css笔记 - flex弹性盒布局
flex: display:-webkit-box | -moz-box;盒布局 -webkit-box-flex | -moz-box-flex;弹性盒布局 -webkit-box-ordinal- ...
- 弹性盒布局(flex)
一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. .box ...
- FlexBox弹性盒布局
网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...
- CSS3与弹性盒布局
1.弹性盒布局对齐模式 1.1.弹性盒子 在规定弹性盒子之中的子级元素换行显示之前父级元素必须是弹性盒子模型,也就是设置 display 为 flex 代码如下: <!DOCTYPE html& ...
随机推荐
- Codeforces Round #613 (Div. 2) A. Mezo Playing Zoma(逻辑)
题意: 给出一个移动序列,可以无效化一些指令,问可以移动到多少不同位置. 思路: 第一印象是统计左右指令数目,后来发现左右指令数目和即字符串长度. #include <bits/stdc++.h ...
- codeforces #345 (Div. 1) D. Zip-line (线段树+最长上升子序列)
Vasya has decided to build a zip-line on trees of a nearby forest. He wants the line to be as long a ...
- Codeforces Round #575 (Div. 3) F. K-th Path
传送门 题意: 这道题把我看得懵懵的(不敢相信),其实就是给你n个点和m条边(无向图),你要找出来任意两点之间的的最短距离,然后再从其中找出来第k个最小值 题解: 正常思维就是floyd多源最短路算法 ...
- Linux系统编程【1】——编写more命令
背景介绍 笔者知识背景 笔者接触Linux快一年了.理论知识方面:学习了操作系统基础知识,了解进程调度.内存分配.文件管理.磁盘I/O这些基本的概念. 实操方面:会使用Linux简单命令,在嵌入式系统 ...
- 图解算法——KMP算法
KMP算法 解决的是包,含问题. Str1中是否包含str2,如果包含,则返回子串开始位置.否则返回-1. 示例1: Str1:abcd123def Str2:123d 暴力法: 从str1的第一个字 ...
- Linux 如何查看一个文件夹下面有多少个文件
Linux 如何查看一个文件夹下面有多少个文件 $ tree $ find ./ -type f | wc -l $ ls -l | grep "^-" | wc -l refs ...
- React Hooks vs React Class vs React Function All In One
React Hooks vs React Class vs React Function All In One React Component Types React Hooks Component ...
- how to drag a tab to open it in a new window
how to drag a tab to open it in a new window 在新的窗口中打开拖拽的 tab? https://superuser.com/questions/131928 ...
- vue & modal props & form data update bug
vue & modal props & form data update bug OK <div> <BindModal :dialogBindVisible=&qu ...
- C++算法代码——三连击[NOIP1998 普及组]
题目来自:https://www.luogu.com.cn/problem/P1008 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目 ...