你的位置:首页 > 软件开发 > 网页设计 > CSS3 弹性盒布局模型(转)

CSS3 弹性盒布局模型(转)

发布时间:2016-07-25 11:00:04
简介引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的条目进行排列、 对齐和分配空白空间。即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作。在该布局模型中,容器会根据布局的需要,调整其中包含的条 目的尺寸和顺序来最好地填充所有可用的空间。当容器的 ...

CSS3 弹性盒布局模型(转)

简介

引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的条目进行排列、 对齐和分配空白空间。即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作。在该布局模型中,容器会根据布局的需要,调整其中包含的条 目的尺寸和顺序来最好地填充所有可用的空间。当容器的尺寸由于屏幕大小或窗口尺寸发生变化时,其中包含的条目也会被动态地调整。比如当容器尺寸变大时,其 中包含的条目会被拉伸以占满多余的空白空间;当容器尺寸变小时,条目会被缩小以防止超出容器的范围。弹性盒布局是与方向无关的。在传统的布局方式 中,block 布局是把块在垂直方向从上到下依次排列的;而 inline 布局则是在水平方向来排列。弹性盒布局并没有这样内在的方向限制,可以由开发人员自由操作。

在深入到弹性盒布局模型的细节之前,首先了解几个相关的重要概念,具体如图 1所示。

图 1. 弹性盒布局模型相关的概念

CSS3 弹性盒布局模型(转)

弹性盒布局的容器(flex container)指的是采用了弹性盒布局的 DOM 元素,而弹性盒布局的条目(flex item)指的是容器中包含的子 DOM 元素。图中的最外围的边框表示的是容器,而编号 1 和 2 的边框表示的是容器中的条目。

从 图中可以看到,弹性盒布局中有两个互相垂直的坐标轴:一个称之为主轴(main axis),另外一个称之为交叉轴(cross axis)。主轴并不固定为水平方向的 X 轴,交叉轴也不固定为垂直方向的 Y 轴。在使用时,通过 CSS 属性声明首先定义主轴的方向(水平或垂直),则交叉轴的方向也相应确定下来。容器中的条目可以排列成单行或多行。主轴确定了容器中每一行上条目的排列方 向,而交叉轴则确定行本身的排列方向。可以根据不同的页面设计要求来确定合适的主轴方向。有些容器中的条目要求从左到右水平排列,则主轴应该是水平方向 的;而另外一些容器中的条目要求从上到下垂直排列,则主轴应该是垂直方向的。

确定主轴和交叉轴的方向之后,还需要确定它们各自的排列方向。 对于水平方向上的轴,可以从左到右或从右到左来排列;对于垂直方向上的轴,则可以从上到下或从下到上来排列。对于主轴来说,排列条目的起始和结束位置分别 称为主轴起始(main start)和主轴结束(main end);对于交叉轴来说,排列行的起始和结束位置分别称为交叉轴起始(cross start)和交叉轴结束(cross end)。在容器进行布局时,在每一行中会把其中的条目从主轴起始位置开始,依次排列到主轴结束位置;而当容器中存在多行时,会把每一行从交叉轴起始位置 开始,依次排列到交叉轴结束位置。

弹性盒布局中的条目有两个尺寸:主轴尺寸和交叉轴尺寸,分别对应其 DOM 元素在主轴和交叉轴上的大小。如果主轴是水平方向,则主轴尺寸和交叉轴尺寸分别对应于 DOM 元素的宽度和高度;如果主轴是垂直方向,则两个尺寸要反过来。与主轴和交叉轴尺寸对应的是主轴尺寸属性和交叉轴尺寸属性,指的是 CSS 中的属性 width 或 height。比如,当主轴是水平方向时,主轴尺寸属性是 width,而 width 的值是主轴尺寸的大小。

弹性盒布 局模型中的 CSS 样式声明分别适用于容器或条目。在下面的内容中会详细的介绍相关的 CSS 属性。首先介绍如何使用弹性盒布局模型进行基本的页面布局。在本文的所有代码示例中,容器的 CSS 类名统一为 flex-container,而条目的 CSS 类名则为 flex-item。所有的示例都可以在CodePen上进行预览。

基本布局

首先从最基本的布局开始介绍弹性盒布局模型。要实现的布局效果是一个简单的图片缩略图预览页面。页面的基本 HTML 如代码清单 1所示。

清单 1. 简单的图片缩略图预览页面的 HTML 代码
<ul class="flex-container">  <li class="flex-item"><img src='/images/loading.gif' data-original="http://placehold.it/300&text=1"></li>  <li class="flex-item"><img src='/images/loading.gif' data-original="http://placehold.it/300&text=2"></li>  <li class="flex-item"><img src='/images/loading.gif' data-original="http://placehold.it/300&text=3"></li>  <li class="flex-item"><img src='/images/loading.gif' data-original="http://placehold.it/300&text=4"></li>  <li class="flex-item"><img src='/images/loading.gif' data-original="http://placehold.it/300&text=5"></li>  <li class="flex-item"><img src='/images/loading.gif' data-original="http://placehold.it/300&text=6"></li></ul>

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:CSS3 弹性盒布局模型(转)

关键词:CSS

CSS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。