【CSS3学习】布局从此不再有伤害——Flex

本文是学习阮一峰老师的两篇有关flex的博文的笔记,想更为系统的学习flex,请访问http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html,感谢阮一峰老师的无私奉献!

2009年,W3C提出了一种新的方案----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

1.定义:Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。Flex需要父元素与子元素配合使用,采用Flex布局的元素(父元素),称为Flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目"。 子元素的布局基本概念如下:

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

块状元素Flex布局的指定方式(指父元素):

.box{
  display: flex;
}

行内元素Flex布局的指定方式(准确的说应该是将行内元素转换为flex布局模式的元素,同样指的是父元素):

.box{
  display: inline-flex;
}

Notice:注意,设为Flex布局以后,子元素的floatclearvertical-align属性将失效。

2.将父容器的display设置为flex或flex-inline后,可以为父元素(容器flex container)设置以下六个属性:

flex-direction:决定主轴的方向(即项目的排列方向)。
flex-wrap:默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
flex-flow:flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
justify-content:justify-content属性定义了项目在主轴上的对齐方式。
align-items:属性定义项目在交叉轴上如何对齐。
align-content:属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

3.可以为子元素(项目flex item)设置一下六个属性:

order:性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
flex-grow:属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
flex-shrink:flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
flex-basis:
flex:flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。
align-self:align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
时间: 2024-10-11 16:30:35

【CSS3学习】布局从此不再有伤害——Flex的相关文章

CSS3伸缩布局Flex学习笔记

如果需要使用伸缩布局首先得把display:flex;对于兼容还得加前缀display:-webkit-display:flex;等其他浏览器前缀,但我本机Chrome测试已经不需要加前缀了,其实这些还好,关键移动端竟然不支持这个属性,移动端支持的还是老版本的display:-webki-box;不过对于学习来说,也不管它支持不支持了,学了再说吧,更何况Chrome已经把flex的前缀去了,说明flex多少还是有些稳定的. 下面列出了关于CSS与flex一起使用的一些属性 display 显示方

【css3网页布局】flex盒子模型

1.0 前言 网页布局(layout)是CSS的一个重点应用. 经典布局类型: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能,成为了现下最流行的布局方式. Flex布局是什么? Flex是Flexible

CSS3学习笔记

这两天的CSS3学习笔记: 慕课网课程地址: http://www.imooc.com/learn/33 笔记: 边框: 圆角效果border-radius:同border相同的缩写方式: 阴影box-shadow: 参数说明: 说明: 单位除了用px也可以用百分比: 多个阴影:用逗号隔开即可: 模糊半径与扩展半径的区别: 阴影模糊半径:此参数可选,其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊: 阴影扩展半径:此参数可选,其值可以是正负值,如果值为正,则整

css和css3学习

css和css3学习  css布局理解  css颜色大全  样式的层叠和继承  css ::before和::after伪元素的用法 中文字体font-family常用列表 css选择器  Flex布局

HTML5与CSS3权威指南之CSS3学习记录

title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) 官方网站: 华章图书 书中所有代码下载链接: 链接:http://pan.baidu.com/s/1c0oGMn2 密码:f7zt 选择器 属性选择器 [att=val]选择器--选择属性att值为val的元素 [att*=val]选择器--选择属性att值包含val的元素 [att^=val]选择器--选

【repost】CSS3弹性布局

本文导读:在CSS 3中,CSS Flexible Box模块为一个非常重要的模块,该模块用于以非常灵活的方式实现页面布局处理.使用CSS Flexible Box模块中定义的弹性盒布局技术,可以根据屏幕尺寸或浏览器窗口尺寸自动调整页面中各局部区域的显示方式,即实现非常灵活的布局处理. 弹性布局(flexible box)模块旨在提供一个更加有效的方式来布置,对齐和分布在容器之间的各项内容,即使它们的大小是未知或者动态变化的. 弹性布局的主要思想是让容器有能力来改变项目的宽度和高度,以填满可用空

css3伸缩布局中justify-content详解

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS3伸缩布局</title> <style> body { margin: 0; padding: 0; font-family: '微软雅黑'; background-color: #F7F7F7; } ul { margin: 0; pa

css3弹性布局语法全解

本文介绍css3弹性布局的语法 html布局 <div class="box"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> css写法(弹性布局默认是x轴为主轴,并且从左到右依次显示) .box{ widt

结合CSS3的布局新特征谈谈常见布局方法

写在前面最近看到<图解CSS3>的布局部分,结合自己以前阅读过的一些布局方面的知识,这里进行一次基于CSS2.3的各种布局的方法总结. 常见的页面布局 在拿到设计稿时,作为一个前端人员,我们首先会做的应该是为设计图大致地划分区域,然后选择一种最合理的,结构清晰的布局.下面我先根据一些典型的网站案例列举一下几种常见的页面布局. T型布局 这个是我们比较常见的布局,其页面的顶部一般放置横网站的标志或Banner广告,下方左侧是导航栏菜单,下方右侧则用于放置网页正文等主要内容. Segmentfau