原创:新手布局福音!微信小程序使用flex的一些基础样式属性

来源:新手布局福音!微信小程序使用flex的一些基础样式属性

作者:Nazi

Flex布局相对于以前我们经常所用到的布局方式要好的很多,在做微信小程序的时候要既能符合微信小程序的文档开发要求,又能使用不同以往的居中方式并减少css的相关样式声明。

先来看看关于flex的一张图:

从上面可以看到一些flexBox的相关信息,

main axis 和 cross axis 指的是flexBox内部flex项目(flex item)的排列方向,通俗点说就是,里面的flex项目是按照横轴或者纵轴排列的顺序方向。

main start 和 main end 是指项目的开始和项目的结束是按照排列方向的起点和终点。

再来看看flex的相关属性

我们给定一个结构:

...

微信小程序里面可以是这样的结构:

...

当我们要用时这个布局的时候对于外层的结构,我们对他的css样式设定:

接下来我们就需要来规定这个item排列的方向了,依旧对外层结构css设定:

.container{

display: flex; /*or inline-flex*/

flex-direction: row;

}

flex-direction这个属性是用来规定flex项目在轴方向上面排列的顺序,

他有这样几个属性

flex-direction: row | row-reverse | column | column-reverse;

row

如果规定的方向是 ltr(left to right)项目一次从左往右排列,

如果规定的方向是 rtl(right to left)项目一次从右往左排列,

row是认值。

row-reverse

如果规定的方向是 ltr(left to right)项目一次从右往左排列,

如果规定的方向是 rtl(right to left)项目一次从左往右排列,

row 和 row-reverse 是相反的。

column 跟row是类似的,只不过是从上到下的方向排列的。

column-reverse 跟row-reverse 是类似的,只不过是从下到上的方向排列的。

对于有时候,并不想让所有的项目都在一行排列的话(多行显示),我们添加flex-wrap:

.container{

display: flex; /*or inline-flex*/

flex-direction: row;

flex-wrap:wrap;

}

flex-wrap是决定项目是否多行显示属性,项目认情况下是在一行下显示的。

flex-wrap: Nowrap | wrap | wrap-reverse;

Nowrap 指的是在一行显示不换行;

wrap 指的是多行显示

wrap-reverse 指的是多行显示,但是跟规定排列方向相反;

flex-flow是 flex-direction 和 flex-wrap 的缩写

flex-flow: <‘flex-direction’> || <‘flex-wrap’>

上面css即:

.container{

display: flex; /*or inline-flex*/

flex-flow:row wrap;

}

在我们一些需要构建的布局里,我们还需要去让他能够自由的伸缩,这也是flex布局的优势之一,能够极大的方便我们去提升效率。

用于在主轴上对齐伸缩的项目属性:justify-content。他的属性有:

justify-content: flex-start | flex-end | center | space-between | space-around;

不同属性值下他的表现:

css样式为:

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex; /*or inline-flex*/

flex-flow:row wrap;

justify-content:flex-start;

}

.item{

flex:0 0 30%;

}

.item1{background-color:#0074e0;}

.item{background-color:#008c00;}

.item3{background-color:#be0000;}

flex-start

flex-end

center

space-between

space-around

flex-start(认值),项目向起始位置靠齐,第一个项目所在轴的起点位置对齐,后面的项目与前一个项目的边外边对齐。

flex-end,项目向结束位置,最后一个项目所在轴的终点位置对齐,前面的项目与后一个项目的边外边对齐。

center,项目向一行的中间位置对齐,可以说成是此行的居中对齐。在某些居中需求下的css样式布局既可以选择这个样式声明

space-between,项目会平均的分布在一行里面。项目的第一项和最后一项会与轴的起点和终点边靠齐。其他的项目则平均分布早剩余的空间里面。

space-around,项目会平均分布在一行里。两端会保留一半的空间。

在多行存在的情况,有一个和justify-content类似的属性,只不过他是作用在相对于轴的垂直方向上的。属性值如下:

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

不同属性值下的表现:(横轴上规定的是 flex-start)

css样式为:

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;/*or inline-flex*/

flex-flow:row wrap;

justify-content:flex-start;

align-content: flex-start;

}

.item{

flex:0 0 30%;

min-height: 100px;

}

.item1,.item6{background-color:#0074e0;}

.item2{background-color:#008c00;}

.item5{background-color:#234567;}

.item3,.item4{background-color:#be0000;}

flex-start

flex-end

center

space-between

space-around

flex-start(认值),项目会平均的分布在一行里面。项目的第一项和最后一项会与轴的起点和终点边靠齐。其他的项目则平均分布早剩余的空间里面。

space-around,项目会平均分布在一行里。两端会保留一半的空间。

虽然方式跟justify-content是一样的,但是因为轴的不同起始点和终点是不同的,所以显示的方式是一直的,但是方向上的效果看起来会有点差异。

关于stretch 由于上面的项目设定了高度,当项目的高度不是固定值得时候,stretch的表现如下:

也就是说侧轴的长度是不是固定值得时候,各行会扩大占据剩下的空间。

接下来 在介绍两个属性,align-items 和 align-self

align-items: flex-start | flex-end | center | baseline | stretch;

align-self: auto | flex-start | flex-end | center | baseline | stretch;

align-items是在所有项目上的对齐方式。

align-self是在单独的项目上的对齐方式。

不同属性值下的表现:(横轴上规定的是 flex-start)

css样式为:

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;/*or inline-flex*/

flex-flow:row wrap;

justify-content:flex-start;

align-items: flex-start;

}

.item{

flex:0 0 30%;

min-height: 100px;

}

align-items: flex-start

align-self: flex-start

修改样式:(后面的修改下同)

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;/*or inline-flex*/

flex-flow:row wrap;

justify-content:flex-start;

/*align-items: flex-start;*/

}

.item{

flex:0 0 30%;

min-height: 100px;

max-height: 300px;

}

.item:nth-child(2){

max-height: 200px;

align-self: flex-start;

}

align-items: flex-end

align-self: flex-end

align-items: center;

align-self: center;

align-items:baseline;

align-self:baseline;(为了更好的能看出效果这里限制所有的项目最小高度为100px最大高度不定)

align-items: stretch; / align-self: stretch;

侧轴的长度属性为auto 这个值会使外边距盒子的尺寸按照min/max 的长度接近所在行的尺寸

另外:float clear vertical-align 在flex布局里里面是无效的。

属性介绍到这里,就来先看看这个布局的灵活性是如何体现的。

当只有一个flex项目的时候,结构如此下:

微信小程序里面可以是这样的结构:

给他设定才css样式,

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;

flex-flow:row wrap;

justify-content:flex-start;

}

.item1{

background-color: #0074e0;

width: 50px;

height: 50px;

}

显示是这样的:

但是要让他完全居中的样子,比如:

css样式设定如下

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;

flex-flow:row wrap;

justify-content:center; /*样式修改在这里*/

align-items: center; /*样式修改在这里*/

}

.item1{

background-color: #0074e0;

width: 100px;

height:100px;

}

现在让他在右下角显示如下:

CSS样式设置:

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;

flex-flow:row wrap;

justify-content:flex-end; /*样式修改在这里*/

align-items:flex-end; /*样式修改在这里*/

}

.item1{

background-color: #0074e0;

width: 100px;

height:100px;

}

加上一个项目:(后面新增不再赘述)

微信小程序里面可以是这样的结构:

左上横排

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;

flex-flow:row wrap;

justify-content:flex-start;

align-items:flex-start;

}

水平方向居中

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;

flex-flow:row wrap;

justify-content:center;

align-items:flex-start;

}

两个项目不贴在一起

.container{

width: 100%;

height: 400px;

background-color: #ccc;

display: flex;

flex-flow:row wrap;

justify-content:space-around;

align-items:flex-start;

}

从上面的列子看来,仅仅只是就该某些css的属性,就能达到以前需要花大量css样式的声明才能达到的效果

跟新。。。写糊涂了。再次感谢指出错误

再来看看下面这个

html的结构如下:

css样式如下:

.container{

width: 400px;

height: 400px;

background-color: #ccc;

display: flex;

flex-wrap: wrap;

align-content: space-around;

}

.row{

display:flex;

flex-basis: 100%;

justify-content:space-around;

}

.item1,

.item2{

width: 100px;

height:100px;

}

.item1{

background-color: #0074e0;

}

.item2{

background-color: #008c00;

}

仅仅只是添加下一条css样式,然后增加项目个数,修改下外框的宽高度就有这样的效果显示

一些基本的flex布局的样式就说到这里了,这只是一个很小的点,其他的更多的是体现出这布局项目里面的伸缩的计算方式 排列方式,如:order flex-grow flex-shrink flex-basis 等。更多的技巧则需要自己去深层次的探索。这里仅仅只是基础,大神们无视就好。

附加:简单的说下flex-basis: 100%;这个属性定义了Flex项目在分配Flex容器剩余空间之前的一个认尺寸。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在做微信小程序新版本的时候,如何提醒用户更新? 今天分享一个关于微信小程序发布新版本提示用户更新代码
本文小编为大家详细介绍“微信小程序如何设置字体样式”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序如何设置字体样式”文章能帮助大家解决疑惑...
这篇文章主要介绍了微信小程序picker选择器获取值的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序picker...
本篇内容介绍了“微信小程序选择器组件picker怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
本篇内容主要讲解“在微信小程序中怎么使用three.js”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在微信小程...
这篇文章主要讲解了“uni-app开发微信小程序之H5压缩上传图片的问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入...
      大家熟悉微信小程序查询地理经纬位置吗?晓得微信小程序查询地理经纬位置的操作吗?下文就带来了微信小程序查询地理经纬位置的操作教程,一起来看看吧
      今日就快来学习本文中微信小程序收款通知设置方法的操作过程吧,相信在以后的使用中一定会得心应手的
      当前使用微信小程序类软件的朋友越来越来多,那么若想知道wifi密码查看器官方版小程序的使用,该如何操作的呢?接下来分享关于wifi密码查看器官方版小程序的使用的操作步骤。
      相信许多网友对微信都熟悉的,手机必装的一款应用,那大家知道在微信小程序里手持弹幕玩法吗?下文小编就带来了微信手持弹幕玩法的简单教程,有需要的朋友一起来看看吧
      不少朋友都喜欢使用微信小程序软件,那么大家知道快速制作微信小程序方法的简单操作吗?若还不了解,就来学习学习制作微信小程序方法教程吧,10分钟就能搞定
      有些人在使用微信时,还不了解微信怎么制作二维码表白的操作,下面小编就讲解使用微信制作二维码表白的操作方法吧,单身朋友赶快Get起来吧
      不少朋友都喜欢使用微信小程序,那么大家清楚微信小程序可以直接玩斗地主游戏的操作吗?若还不了解,就来学习学习利用微信小程序玩斗地主游戏教程吧!
      现在用手机里小程序的人越来越多,各种生活小软件应有尽有,下面小编就给大家分享一波微信小程序,好看+好用+精致,希望给大家带来帮助。
      微信想必大家都很熟悉,它是现在最大的社交软件,大家或许不知道微信小程序里有个好物圈,那么今天小编就带大家学习微信好物圈的具体操作,希望能够帮助到大家呢
      大家知道如何利用微信小程序转换PDF文档吗?下文小编就带来了在利用微信小程序转换PDF文档的简单使用教程,一起来看看吧!
      微信小程序现在是越来越受大家欢迎,现在很多朋友都喜欢使用微信小程里的换算工具.不过部份朋友还不清楚小程序里换算工具使用方法,今天小编要为大家分享一个微信超强换算工具一起来看看吧!
      想必刚刚入手微信小程序的朋友,还不太了解微信成语猜猜看怎么进入,小编今天就带来关于微信小程序成语猜猜看打开方法的操作步骤,感兴趣的小伙伴们一起学习一下吧!
      有些用户在使用微信小程序时,还不了解微信小程序如何修改用户名称,下面小编就讲解修改微信小程序的名称的操作方法,有需要的小伙伴一起来学习吧,详细流程奉上
      当前互联网发展迅速,整个用户设备不断的在变化,生态也接连变化,所以可以这样说,智能小程序已经成为一个必然的选择。