flex java 网页游戏 开发 教程_Flex 布局教程:实例篇

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

d053eaeb284ff8c5275546e37f4ee566.png

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

一、骰子的布局

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

d6241f26e3a34efc8d0521e88d835680.png

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

1e8366996672aea27e94818185624f8c.png

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

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

1.1 单项目

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

407e7ea9e80ce9748ea55565be8f0ad4.png

.box{

display: flex;

}

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

71eaf6ed054a4b2d3ecb821bf92347e6.png

.box{

display: flex;

justify-content: center;

}

831b044b5848d6a83c4b2a40b2b4589d.png

.box{

display: flex;

justify-content: flex-end;

}

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

95b8b55518b06821a059ed8b4a670d7e.png

.box{

display: flex;

align-items: center;

}

12cf187a3fd0852b51e31c82cb8008b1.png

.box{

display: flex;

justify-content: center;

align-items: center;

}

1d11ecffdc3f3b6aa3cfab1cf9a6999e.png

.box{

display: flex;

justify-content: center;

align-items: flex-end;

}

ec9bad30538f5002d923f2ee1c55aa7f.png

.box{

display: flex;

justify-content: flex-end;

align-items: flex-end;

}

1.2 双项目

905ae04c36516a6d57f7dc651ccbb62d.png

.box{

display: flex;

justify-content: space-between;

}

d33cffbd639b1dfdfec2f911e132318d.png

.box{

display: flex;

flex-direction: column;

justify-content: space-between;

}

2868fc874d6399ac9b8a72fc2601af98.png

.box{

display: flex;

flex-direction: column;

justify-content: space-between;

align-items: center;

}

4a5829e8fbe7d803aac91bf55b544723.png

.box{

display: flex;

flex-direction: column;

justify-content: space-between;

align-items: flex-end;

}

0d8f48d670a94822abf0da0f7c47aaf7.png

.box{

display: flex;

}

.item:nth-child(2){

align-self: center;

}

bd08fd331b9a3ff61b0fa58a16fe4377.png

.box{

display: flex;

justify-content: space-between;

}

.item:nth-child(2){

align-self: flex-end;

}

1.3 三项目

afa8aa990562dc4571592f7f66e48aa0.png

.box{

display: flex;

}

.item:nth-child(2){

align-self: center;

}

.item:nth-child(3){

align-self: flex-end;

}

1.4 四项目

28c8f7a05b1a64e65d32461bbd626d74.png

.box{

display: flex;

flex-wrap: wrap;

justify-content: flex-end;

align-content: space-between;

}

f1df2d626df5bb27c324268d6697dc4e.png

HTML代码如下。

CSS代码如下。

.box{

display: flex;

flex-wrap: wrap;

align-content: space-between;

}

.column{

flex-basis: 100%;

display: flex;

justify-content: space-between;

}

1.5 六项目

c8cf24ee747b76dc324f866ed11455b6.png

.box{

display: flex;

flex-wrap: wrap;

align-content: space-between;

}

642a74b6d7182909329d61ab5808d0a9.png

.box{

display: flex;

flex-direction: column;

flex-wrap: wrap;

align-content: space-between;

}

a7462c2e4b39fa9612d3b62d60a48f19.png

HTML代码如下。

CSS代码如下。

.box{

display: flex;

flex-wrap: wrap;

}

.row{

flex-basis: 100%;

display:flex;

}

.row:nth-child(2){

justify-content: center;

}

.row:nth-child(3){

justify-content: space-between;

}

1.6 九项目

10ec110318335f8d393d67e98e45736f.png

.box{

display: flex;

flex-wrap: wrap;

}

二、网格布局

2.1 基本网格布局

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

3d6656e404b1fd551862ff155fe83dd9.png

HTML代码如下。

...
...
...

CSS代码如下。

.Grid{

display: flex;

}

.Grid-cell{

flex: 1;

}

2.2 百分比布局

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

3191ba98752b798e42123fae2fef4a37.png

HTML代码如下。

...
...
...

.Grid{

display: flex;

}

.Grid-cell{

flex: 1;

}

.Grid-cell.u-full{

flex: 0 0 100%;

}

.Grid-cell.u-1of2{

flex: 0 0 50%;

}

.Grid-cell.u-1of3{

flex: 0 0 33.3333%;

}

.Grid-cell.u-1of4{

flex: 0 0 25%;

}

三、圣杯布局

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

5d846fd00e6f465db92b6c0abe3d4789.png

HTML代码如下。

...

...

...

...

...

CSS代码如下。

.HolyGrail{

display: flex;

min-height: 100vh;

flex-direction: column;

}

header,

footer{

flex: 1;

}

.HolyGrail-body{

display: flex;

flex: 1;

}

.HolyGrail-content{

flex: 1;

}

.HolyGrail-nav, .HolyGrail-ads{

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

flex: 0 0 12em;

}

.HolyGrail-nav{

/* 导航放到最左边 */

order: -1;

}

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

@media (max-width: 768px) {

.HolyGrail-body{

flex-direction: column;

flex: 1;

}

.HolyGrail-nav,

.HolyGrail-ads,

.HolyGrail-content{

flex: auto;

}

}

四、输入框的布局

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

be69a23fa18a01baca6872c89fd97b58.png

HTML代码如下。

...

...

CSS代码如下。

.InputAddOn{

display: flex;

}

.InputAddOn-field{

flex: 1;

}

五、悬挂式布局

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

8307cbec69285d021b1f5101ff7ba838.png

HTML代码如下。

...

CSS代码如下。

.Media{

display: flex;

align-items: flex-start;

}

.Media-figure{

margin-right: 1em;

}

.Media-body{

flex: 1;

}

六、固定的底栏

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

d2ddc0de013f9c239acdb5b00ff809d6.png

HTML代码如下。

...

...

...

CSS代码如下。

.Site{

display: flex;

min-height: 100vh;

flex-direction: column;

}

.Site-content{

flex: 1;

}

七,流式布局

每行的项目数固定,会自动分行。

787f4a4afb20041356cc75890db6a0d3.png

CSS的写法。

.parent{

width: 200px;

height: 150px;

background-color: black;

display: flex;

flex-flow: row wrap;

align-content: flex-start;

}

.child{

box-sizing: border-box;

background-color: white;

flex: 0 0 25%;

height: 50px;

border: 1px solid red;

}

(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值