所在的位置: Web开发 >> HTNL >> Flex布局教程实例篇

Flex布局教程实例篇

介绍了Flex布局的语法,今天介绍常见布局的Flex写法。

你会看到,不管是什么布局,Flex往往都可以几行命令搞定。

我只列出代码,详细的语法解释请查阅《Flex布局教程:语法篇》。我的主要参考资料是LandonSchropp的文章和SolvedbyFlexbox。

一、骰子的布局

骰子的一面,最多可以放置9个点。

下面,就来看看Flex如何实现,从1个点到9个点的布局。你可以到codepen查看Demo。

如果不加说明,本节的HTML模板一律如下。

divclass="box"

spanclass="item"/span

/div

上面代码中,div元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目。如果有多个项目,就要添加多个span元素,以此类推。

1.1单项目

首先,只有左上角1个点的情况。Flex布局默认就是首行左对齐,所以一行代码就够了。

.box{

display:flex;

}

设置项目的对齐方式,就能实现居中对齐和右对齐。

.box{

display:flex;

justify-content:center;

}

.box{

display:flex;

justify-content:flex-end;

}

设置交叉轴对齐方式,可以垂直移动主轴。

.box{

display:flex;

align-items:center;

}

.box{

display:flex;

justify-content:center;

align-items:center;

}

.box{

display:flex;

justify-content:center;

align-items:flex-end;

}

.box{

display:flex;

justify-content:flex-end;

align-items:flex-end;

}

1.2双项目

.box{

display:flex;

justify-content:space-between;

}

.box{

display:flex;

flex-direction:column;

justify-content:space-between;

}

.box{

display:flex;

flex-direction:column;

justify-content:space-between;

align-items:center;

}

.box{

display:flex;

flex-direction:column;

justify-content:space-between;

align-items:flex-end;

}

.box{

display:flex;

}

.item:nth-child(2){

align-self:center;

}

.box{

display:flex;

justify-content:space-between;

}

.item:nth-child(2){

align-self:flex-end;

}

1.3三项目

.box{

display:flex;

}

.item:nth-child(2){

align-self:center;

}

.item:nth-child(3){

align-self:flex-end;

}

1.4四项目

.box{

display:flex;

flex-wrap:wrap;

justify-content:flex-end;

align-content:space-between;

}

HTML代码如下。

divclass="box"

divclass="column"

spanclass="item"/span

spanclass="item"/span

/div

divclass="column"

spanclass="item"/span

spanclass="item"/span

/div

/div

CSS代码如下。

.box{

display:flex;

flex-wrap:wrap;

align-content:space-between;

}

.column{

flex-basis:%;

display:flex;

justify-content:space-between;

}

1.17六项目:首行排满,尾行排满

.box{

display:flex;

flex-wrap:wrap;

align-content:space-between;

}

1.5六项目

.box{

display:flex;

flex-direction:column;

flex-wrap:wrap;

align-content:space-between;

}

HTML代码如下。

divclass="box"

divclass="row"

spanclass="item"/span

spanclass="item"/span

spanclass="item"/span

/div

divclass="row"

spanclass="item"/span

/div

divclass="row"

spanclass="item"/span

spanclass="item"/span

/div

/div

CSS代码如下。

.box{

display:flex;

flex-wrap:wrap;

}

.row{

flex-basis:%;

display:flex;

}

.row:nth-child(2){

justify-content:center;

}

.row:nth-child(3){

justify-content:space-between;

}

1.5九项目

.box{

display:flex;

flex-wrap:wrap;

}

二、网格布局

2.1基本网格布局

最简单的网格布局,就是平均分布。在容器里面平均分配空间,跟上面的骰子布局很像,但是需要设置项目的自动缩放。

HTML代码如下。

divclass="Grid"

divclass="Grid-cell".../div

divclass="Grid-cell".../div

divclass="Grid-cell".../div

/div

CSS代码如下。

.Grid{

display:flex;

}

.Grid-cell{

flex:1;

}

2.2百分比布局

某个网格的宽度为固定的百分比,其余网格平均分配剩余的空间。

HTML代码如下。

divclass="Grid"

divclass="Grid-cellu-1of4".../div

divclass="Grid-cell".../div

divclass="Grid-cellu-1of3".../div

/div

.Grid{

display:flex;

}

.Grid-cell{

flex:1;

}

.Grid-cell.u-full{

flex:00%;

}

.Grid-cell.u-1of2{

flex:%;

}

.Grid-cell.u-1of3{

flex:.%;

}

.Grid-cell.u-1of4{

flex:%;

}

三、圣杯布局

圣杯布局(HolyGrailLayout)指的是一种最常见的网站布局。页面从上到下,分成三个部分:头部(header),躯干(body),尾部(footer)。其中躯干又水平分成三栏,从左到右为:导航、主栏、副栏。

HTML代码如下。

bodyclass="HolyGrail"

header.../header

divclass="HolyGrail-body"

mainclass="HolyGrail-content".../main

navclass="HolyGrail-nav".../nav

asideclass="HolyGrail-ads".../aside

/div

footer.../footer

/body

CSS代码如下。

.HolyGrail{

display:flex;

min-height:vh;

flex-direction:column;

}

header,

footer{

flex:1;

}

.HolyGrail-body{

display:flex;

flex:1;

}

.HolyGrail-content{

flex:1;

}

.HolyGrail-nav,.HolyGrail-ads{

/*两个边栏的宽度设为12em*/

flex:em;

}

.HolyGrail-nav{

/*导航放到最左边*/

order:-1;

}

如果是小屏幕,躯干的三栏自动变为垂直叠加。

media(max-width:px){

.HolyGrail-body{

flex-direction:column;

flex:1;

}

.HolyGrail-nav,

.HolyGrail-ads,

.HolyGrail-content{

flex:auto;

}

}

四、输入框的布局

我们常常需要在输入框的前方添加提示,后方添加按钮。

HTML代码如下。

divclass="InputAddOn"

spanclass="InputAddOn-item".../span

inputclass="InputAddOn-field"

buttonclass="InputAddOn-item".../button

/div

CSS代码如下。

.InputAddOn{

display:flex;

}

.InputAddOn-field{

flex:1;

}

五、悬挂式布局

有时,主栏的左侧或右侧,需要添加一个图片栏。

HTML代码如下。

divclass="Media"

imgclass="Media-figure"src=""alt=""

pclass="Media-body".../p

/div

CSS代码如下。

.Media{

display:flex;

align-items:flex-start;

}

.Media-figure{

margin-right:1em;

}

.Media-body{

flex:1;

}

六、固定的底栏

有时,页面内容太少,无法占满一屏的高度,底栏就会抬高到页面的中间。这时可以采用Flex布局,让底栏总是出现在页面的底部。

HTML代码如下。

bodyclass="Site"

header.../header

mainclass="Site-content".../main

footer.../footer

/body

CSS代码如下。

.Site{

display:flex;

min-height:vh;

flex-direction:column;

}

.Site-content{

flex:1;

}

蓬勃健康发展的CSTP北京基地是大学生实训的最佳选择,国内唯一“国字头”互联网+教育工程。基地主设3大专业,电商与新媒体运营、web前端工程师、java软件工程师。

长按识别







































北京治疗白癜风哪家医院最好
冬季白癜风发病原因



转载请注明:http://www.guyukameng.com/html/html1/10389.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了