What is Flex layout
How to specify a container as Flex layout
Basic syntax of Flex
display
flex-direction
justify-content
align-items
flew-wrap
align-self
flex-flow
flex
order
Example
Dice layout
Holy Grail layout
Reference article
Second, how to specify a container as Flex layout
.box{ display: flex; }
Three, the basic syntax of Flex
Specify Flex.
flex-direction
Syntax:flex-direction: row | row-reverse | column | column-reverse
Specifies the order in which flexible child elements are arranged in the parent container. This can also be achieved equivalently by setting direction:rtl; or direction:ltr; , where rtl and ltr are right Abbreviation for to left, left to right. justify content
Syntax:justify-content: flex-start | flex-end | center | space-between | space- around
Content The justify-content property is applied to the flex container to align the flex items along the main axis of the flex container. Concept understanding diagram:
For space-around, the author summarized a simple formula:
x=(W2-N*W1)/(2N)
x: the width left on the two most sides.
W2: It is the width of the module.
W1: The width of a submodule (even each).
N:
Syntax: align-items: flex-start | flex-end | center | baseline | stretch
Set the flexible box element in the side axis (vertical axis) direction alignment on.
The following picture can help readers understand the baseline:
Syntax: flex-flow :nowrap| warp | warp-reverse
Syntax: align-content: flex-start | flex-end | center | space-between | space-around | stretch
Set the alignment of each row.
Syntax: align-self: auto | flex-start | flex-end | center | baseline | stretch
Set the alignment of the elastic element itself in the cross-axis direction. This attribute should be distinguished from align-content. The scope of align-content is each row, but align-self is only a certain elastic element in a certain row.
Syntax: abbreviation for flex-direction and flex-wrap.
Syntax: flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;
Specify the element allocation space. It should be noted that if flex-basis is 100%, then the flex module will occupy a separate line.
Syntax: order: number|initial|inherit;
Specifies the order of elastic modules. The smaller the value, the higher the priority. It can be a negative value.
Up to 9 points can be placed on one side of the dice.
下面,就来看看Flex如何实现,从1个点到9个点的布局。你可以到codepen查看Demo。
如果不加说明,本节的HTML模板一律如下。
<p class="box"> <span class="item">>>Copy after login
上面代码中,p元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目。如果有多个项目,就要添加多个span元素,以此类推。
首先,只有左上角1个点的情况。Flex布局默认就是首行左对齐,所以一行代码就够了。
.box { display: flex;}Copy after login
设置项目的对齐方式,就能实现居中对齐和右对齐。
.box { display: flex; justify-content: center;}Copy after login
.box { display: flex; justify-content: flex-end;}Copy after login
设置交叉轴对齐方式,可以垂直移动主轴。
.box { display: flex; align-items: center;}Copy after login
.box { display: flex; justify-content: center; align-items: center;}Copy after login
.box { display: flex; justify-content: center; align-items: flex-end;}Copy after login
.box { display: flex; justify-content: flex-end; align-items: flex-end;}Copy after login
.box { display: flex; justify-content: space-between;}Copy after login
.box { display: flex; flex-direction: column; justify-content: space-between;}Copy after login
.box { display: flex; flex-direction: column; justify-content: space-between; align-items: center;}Copy after login
.box { display: flex; flex-direction: column; justify-content: space-between; align-items: flex-end;}Copy after login
.box { display: flex;}.item:nth-child(2) { align-self: center;}Copy after login
.box { display: flex; justify-content: space-between;}.item:nth-child(2) { align-self: flex-end;}Copy after login
.box { display: flex;}.item:nth-child(2) { align-self: center;}.item:nth-child(3) { align-self: flex-end;}Copy after login
.box { display: flex; flex-wrap: wrap; justify-content: flex-end; align-content: space-between;}Copy after login
HTML代码如下。
<p class="box"> <p class="column"><span class="item">><span class="item">> > <p class="column"><span class="item">><span class="item">> >>Copy after login
CSS代码如下。
.box { display: flex; flex-wrap: wrap; align-content: space-between;} .column { flex-basis: 100%; display: flex; justify-content: space-between;}Copy after login
.box { display: flex; flex-wrap: wrap; align-content: space-between;}Copy after login
.box { display: flex; flex-direction: column; flex-wrap: wrap; align-content: space-between; }Copy after login
HTML代码如下。
<p class="box"> <p class="row"><span class="item">> <span class="item">><span class="item">> > <p class="row"><span class="item">> > <p class="row"> <span class="item">> <span class="item">> >>Copy after login
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;}Copy after login
.box { display: flex; flex-wrap: wrap;}Copy after login
圣杯布局(Holy Grail Layout)指的是一种最常见的网站布局。页面从上到下,分成三个部分:头部(header),躯干(body),尾部(footer)。其中躯干又水平分成三栏,从左到右为:导航、主栏、副栏。
HTML代码如下:
<p class="flex-container"> <header class="header">头部header> <article class="main"><p>主体p> article> <aside class="aside aside1">边栏 1aside> <aside class="aside aside2">边栏 2aside> <footer class="footer">底部footer>p>
CSS代码入下:
.flex-container { display: -webkit-flex;display: flex; -webkit-flex-flow: row wrap;flex-flow: row wrap;font-weight: bold;text-align: center; } .flex-container > * {padding: 10px;flex: 1 100%; } .main {text-align: left;background: cornflowerblue; } .header {background: coral;} .footer {background: lightgreen;} .aside1 {background: moccasin;} .aside2 {background: violet;}@media all and (min-width: 600px) {.aside { flex: 1 auto; }} @media all and (min-width: 800px) { .main { flex: 3 0px; } .aside1 { order: 1; } .main { order: 2; } .aside2 { order: 3; } .footer { order: 4; } }
以上就是【CSS3】 CSS3:弹性盒子(Flex Box)的内容,更多相关内容请关注PHP中文网(www.php.cn)!