之上。注意这里是如何在页面中嵌套使用flex容器来达到你想要的效果的。
因为,和相互堆叠着,你需要首先设置一个垂直上下文,它能够通过设置flex-direction:column来快速完成。还有,的order被设置为-1,如此一来它就出现在页面的最上头。就这么简单。
.example{
display: flex;
flex-direction: column;
footer{
order: -1;
所以,如果你想把一行元素修改为一列,或者相反,你可以使用flex-direction属性,并设置它相应地为column或row(row是默认值)。
完整的例子在flexbox-demo-3()。
然而,强大的能力也到来了更多的责任:谨记,一些用户可能会使用键盘来导航你的基于flexbox的网站,如果你HTML源码中元素的顺序和屏幕上显示的有所出入,那么无障碍访问的能力就成为需要认真对待的问题。如果想了解得更多,请不要错过HTML源码顺序 vs CSS显示顺序,网站无障碍访问和易用性的专家Adrian Roselli针对这个问题给出了深入讨论。
如何在Flexbox中对齐子项
Flexbox能非常直观地处理子项的水平对齐和垂直对齐。
你可以使用align-items对flex容器中的所有子项设置统一的对齐。如果你想给个别元素设置不同的对齐方式,使用align-self。元素的对齐方式跟它所在父容器的flex-direction有关。如果它的值是row(意味着元素水平排列),对齐方式是指在垂直轴上。如果flex-direction被设置为column(意味着元素垂直排列),对齐方式就是指在水平轴上。
例如,你让一些元素在容器中分别有不同的对齐方式,你需要:
.example{
display: flex;
flex-direction: column;
.red{
align-self: center;
.blue{
align-self: flex-start;
.pink{
align-self: flex-end;
试试在下面的例子中,把父容器的flex-direction在row和column之间切换,看看它们引起的实时变化。
例子flexbox-demo-4.html()。
如果想要容器中所有的元素有统一的对齐方式,你可以在容器上使用align-items。可以的值有center,flex-start,flex-end,stretch(默认值:子项被拉伸以适应它们的容器)和baseline(子项被放置在父容器的baseline上)。
.example{
display: flex;
align-items: center;
像往常一样,试着把父容器的flex-direction在row和column之间切换,看看它们如何影响着你设置align-items值时所发生的作用。
例子flexbox-demo-5.html()
在Flexbox里两端对齐
另一个控制对齐的属性是justify-content,当你想让多个元素等分空间时非常有用。
可接受的值有:center,flex-start,flex-end, space-between(元素利用主轴之间的空间而排布)和space-around(元素利用主轴之前、之间和之后的空间而排布)。
例如,在之前你一直使用的简单HTML模板里,你可以在里找到三个元素:,.content和。之前,它们都被挤在页面的左边。如果你想让它们之间有一些空间,但是不让第一个元素的左边有空间,也不想让最后一个元素的右边有空间,你可以把.main(即它们的父容器)里的justify-content设置为space-between。
.main{
display: flex;
justify-content: space-between;
也试一下设置为space-around,观察不同的结果。例子在flexbox-demo-6()。
在上面的例子中,我同样把中的文字水平和垂直对齐了,分别是把justify-content(水平居中)和align-items(垂直居中)都设置为center。
header{
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
Flexbox中弹性子项的大小
使用flex属性,你能够对照flex容器中其他元素来控制弹性子项的大小。
这个属性是以下独立属性的简写:
例如,想得到三个等宽的列,只需给每一列设置flex:1,其他什么都不用做:
nav,aside,.content{
flex: 1;
如果你需要.content占据和的两倍宽,那么就把.content设为flex:2,让其他两个为1。
例子在flexbox-demo-7.html()。
那仅仅是对flex属性最简单的应用。同样可以设置flex-grow,flex-shrink和flex-basis这些值,不过那超出本文的话题范围了。
进一步的资源
如果你准备好继续前进,并想学着精通flexbox的更多东西,请查看下面的资源:
总结
如你所见,如果我们想控制元素在网页中的布局,flexbox可以让我们的生活更加轻松。它非常稳固和可靠,让以前那些我们每天使用的诸如使 让容器坍缩之类的奇技淫巧,成为了过去。
像我们说的,如今,在针对整个页面进行布局时,CSS网格是更好的方案,但我们仍然值得去了解flexbox能做的那些事情。flexbox的最佳应用场景,体现在对元素的一维排列上,但如果有需要,它也能在稍老旧的浏览器中,为CSS网格布局提供方便的替代方案。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777