企业网站模板设计,廊坊网站制作套餐,深圳展厅设计,Wordpress会员插件推荐在说Flex布局之前#xff0c;我们先来了解一下流式布局#xff08;百分比布局#xff09;#xff0c;其实这个布局在学css基础的时候应该都接触过
效果#xff1a;宽度自适应#xff0c;高度固定
但是随着互联网技术的发展#xff0c;移动互联网开始崛起#xff0c;就…在说Flex布局之前我们先来了解一下流式布局百分比布局其实这个布局在学css基础的时候应该都接触过
效果宽度自适应高度固定
但是随着互联网技术的发展移动互联网开始崛起就是用手机上网开始超过用电脑上网了所以手机电脑屏幕不同网页的宽度和高度也随之不同刚开始可以通过流式布局可以让宽度自适应改变但需求并不满足高度也得自适应这么一说流式布局肯定不行的后来flex布局就出来了 2009年W3C提出了一种新的方案—-Flex布局可以简便、完整、响应式地实现各种页面布局。目前它已经得到了所有浏览器的支持这意味着现在就能很安全地使用这项功能。 一、Flex布局是什么
Flex是Flexible Box的缩写意为”弹性布局”用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为Flex布局。
Webkit内核的浏览器必须加上-webkit前缀。
display: -webkit-flex; /* Safari */ display: flex;
注意设为Flex布局以后子元素的float、clear和vertical-align属性将失效。
关于Flex的兼容性问题其实Flex绝大部分主要使用在移动端上而现在的移动端都是用的最新的浏览器渲染的数据一般来说不会有兼容性问题的存在包括PC端但是IE6-8还是不能使用的这里我推荐一个网站
flex | Can I use... Support tables for HTML5, CSS3, etc
这个网站可以查到所有技术各种浏览器的兼容性问题在以后开发中就可以通过这个网站开始查找
二、基本概念
采用Flex布局的元素称为Flex容器flex container简称”容器”。它的所有子元素自动成为容器成员称为Flex项目flex item简称”项目”。 容器默认存在两根轴水平的主轴main axis和垂直的交叉轴cross axis。主轴的开始位置与边框的交叉点叫做main start结束位置叫做main end交叉轴的开始位置叫做cross start结束位置叫做cross end。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size占据的交叉轴空间叫做cross size。
三、创建弹性盒子
在你想要布局项目的父级属性创建弹性盒子
用display:flex
或者display:inline-flex
当然这个和display:block | inline-block是一样的就是这个容器是块级元素还是行内快元素一般都是设置display:flex
四、容器的属性
以下6个属性设置在容器上。 属性名 作用 flex-direction 决定主轴的方向项目在容器里面的排列方向 flex-wrap 设置项目在主轴的换行方式 flex-flow 是flex-direction属性和flex-wrap属性的简写形式 junstify-content 定义了项目在主轴上的对齐方式 alingn-items 定义项目在交叉轴上如何对齐 alingn-content 定义了多根轴线的对齐方式。如果项目只有一根轴线该属性不起作用。
4.1 flex-direction
flex-direction属性决定主轴的方向即项目的排列方向。
flex-direction: row | row-reverse | column | column-reverse; 值 作用 row(默认) 主轴为x轴也就是水平方向由左往右 row-reverse 主轴为x轴也就是水平方向由右往左 column 主轴为y轴也就是垂直方向由上往下 column-reverse 主轴为y轴也就是垂直方向由下往上 4.2 flex-wrap属性
默认情况下项目都排在一条线又称”轴线”上。flex-wrap属性定义如果一条轴线排不下如何换行。
flex-wrap: nowrap | wrap | wrap-reverse;
1nowrap默认不换行。 2wrap换行第一行在上方。 3wrap-reverse换行第一行在下方。 4.3 flex-flow
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式默认值为row nowrap。
flex-flow: flex-direction || flex-wrap;
4.4 justify-content属性
justify-content属性定义了项目在主轴上的对齐方式。
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
值作用flex-start左对齐flex-end右对齐center居中对齐space-between两端对齐项目之间的间隔都相等space-around每个项目两侧的间隔相等项目和项目之间的间距就是左右间距的和space-evenly每个项目之间的间距以及和容器的间距都相等 4.5 align-items属性
align-items属性定义项目在交叉轴上如何对齐。
align-items: flex-start | flex-end | center | baseline | stretch 属性值作用flex-start交叉轴的起点对齐flex-end交叉轴的终点对齐center交叉轴的中心点对齐baseline项目的第一行文字的基线对齐stretch默认值如果项目未设置高度或设为auto将占满整个容器的高度。 4.6 align-content属性
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线该属性不起作用。
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
属性值作用flex-start与交叉轴的起点对齐flex-end与交叉轴的终点对齐center与交叉轴的中心点对齐space-between与交叉轴两端对齐轴线之间的间隔平均分布space-around每根轴线两侧的间隔都相等所以项目与项目之间的间距是两个项目的间隔的和stretch默认值不设置高度的情况下轴线占满整个交叉轴 这里顺便说一下
如果容器项目内只有一行适合使用align-items如果容器项目内有多行适合使用align-content
五、项目的属性
属性说明order定义项目的排列顺序。数值越小排列越靠前默认为0flex-grow义项目的放大比例默认为0即如果存在剩余空间也不放大flex-shrink定义了项目的缩小比例默认为1即如果空间不足该项目将缩flex-basis定义了在分配多余空间之前项目占据的主轴空间main size根据这个属性计算主轴是否有多余空间flex是flex-grow, flex-shrink 和 flex-basis的简写align-self允许单个项目有与其他项目不一样的对齐方式可覆盖align-items属性
5.1 order属性
order属性定义项目的排列顺序。数值越小排列越靠前默认为0。
order: index; 5.2 flex-grow属性
flex-grow属性定义项目的放大比例默认为0即如果存在剩余空间也不放大。
flex-grow: number; /* default 0 */ 如果所有项目的flex-grow属性都为1则它们将等分剩余空间如果有的话。如果一个项目的flex-grow属性为2其他项目都为1则前者占据的剩余空间将比其他项多一倍。
5.3 flex-shrink属性
flex-shrink属性定义了项目的缩小比例默认为1即如果空间不足该项目将缩小。
flex-shrink: number; /* default 1 */ 如果所有项目的flex-shrink属性都为1当空间不足时都将等比例缩小。如果一个项目的flex-shrink属性为0其他项目都为1则空间不足时前者不缩小。
负值对该属性无效。
5.4 flex-basis属性
flex-basis属性定义了在分配多余空间之前项目占据的主轴空间main size。它的默认值为auto即项目的本来大小。
flex-basis: length | auto; /* default auto */ 可以直接设置px或者百分比
5.5 flex属性
flex属性是flex-grow, flex-shrink 和 flex-basis的简写默认值为0 1 auto。后两个属性可选。
该属性有两个快捷值auto (1 1 auto) 和 none (0 0 auto)。建议
5.6 align-self属性
align-self属性允许单个项目有与其他项目不一样的对齐方式可覆盖align-items属性。默认值为auto表示继承父元素的align-items属性如果没有父元素则等同于stretch。
align-self: auto | flex-start | flex-end | center | baseline | stretch;
该属性可能取6个值除了auto其他都与align-items属性完全一致。