第八十章 对齐演示

这可以看作是一个默认形态,我们可以看出它是偏左的,但是这么描述就不确切了,因为一切都是可变的,那么在变化过程中,我们应该以谁为依据去看这个事情,就很重要。

主轴默认是水平方向,从左往右的。这是我们首先要确定的问题:主轴的方向是什么。

确定了主轴方向,我们就知道水平方向上的对齐,其实应该看主轴方向的对齐属性。主轴的前缀是:justify,然后我们逐项研究。先尝试 content

Justify-content

那么 justify-content 说的是什么,又可以取哪些值呢?那么查看上一章可知,它说的是内容整体在主轴上的对齐方式。而可以用的取值我列一下:flex-startflex-endcenterspace-aroundspace-betweenspace-evenly[1]其中 flex-start 是默认值。

然后我们来看效果:

justify-content: flex-end

这里我们展开一下,这些对齐属性并不只是为弹性布局准备的,后面的网格布局也会用到,因此就会产生一些细节上的区别。flex-start 和 flex-end 就是用来负责弹性元素的,而 start 和 end 是用来负责非弹性元素的。我们目前使用的是弹性布局,自然要加上 flex。还好,就记住对于弹性元素,轴起止点要加前缀表示就行了。

其他几个值的效果如下:

justify-content: center

justify-content: space-around

justify-content: space-between

justify-content: space-evenly

问:为什么没有 stretch(拉伸)呢?因为弹性布局在主轴方向上已经有两个属性(flex-grow 和 flex-shrink)来控制伸缩了。

Align-content

换个方向而已,然后可以用拉伸(stretch)了,还是默认值。我把父元素的高度设置的大一些(手机上的阅读的小伙伴可能看不出效果,还是来电脑上吧。

align-content: stretch

align-content: flex-start

align-content: flex-end

align-content: center

align-content: space-around

align-content: space-between

align-content: space-evenly

Align-items

这是在侧轴(默认是垂直方向)上每个元素的对齐方式,因为是复数形式,这个属性依旧是从宏观上进行定义。可以用的取值有:stretch(默认值)、flex-startflex-endcenterbaseline

但是想看清这个属性,首先要禁止纵向上的拉伸,我们就让它们在纵向上均匀分布吧(align-content: space-evenly)。然后给不同元素设置一下不同的高度限制(min-height 因为都没什么内容,所以这就是一般情况的下显示的高度)。

align-items: stretch

align-items: flex-start

align-items: flex-end

align-items: center

align-items: baseline

xxxxxxxxx

这样一看效果就明白了。align-items 说的是元素们在侧轴方向(默认上下)如何对齐,是哪些元素呢?是主轴方向(默认左右)上的一串元素。

那么 align-self 属性就应该也会有了,这是在这个对齐方式上,去微调某一个元素的。


到这里我们就讲完了弹性布局的对齐方式。咦,这才四种,不是还有两种么?

justify-items 和 justify-self,这两个属性说的都是一件事情,只是一个是整体,一个是个体。所以我就解释一个就 OK 了。按着上面推测,这是说垂直方向上一串元素在横向的对齐方式,反正就是把上面的转了 90°。但是,不好意思,弹性布局并不需要这两个属性

首先,我们最开始我就说过一句:弹性元素像一个个文字一样……所以他们本能的首尾相接,在必要的时候进行一下换行而已。所以它并没有侧轴上的一串[2]这样的划分。如此,这两个属性也就无从存在了。

>注释 1: 不是全部,只是主要的,常用的。全介绍太多了,太乱了,而且有些属性只是文档上有,还没有浏览器支持,也挺尴尬的。我带着大家入门,想把技术学精,请务必努力啃文档,而且是啃英文文档(中文的翻译有些真的是……

>注释 2: 这个说法也是我为了方便理解自创的,明白什么意思就好。理解了意思就什么都好办了,千万别背!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容