发表于: 2017-03-17 21:08:55

0 722


今日完成:

重新调试任务九的布局。继续任务十,同时分享小课堂。

明日计划:

继续任务十

遇到的问题:

调试任务九时,轮播图与父元素的自适应不能共存。试了n种方法都不能解决或者绕过这个问题,最后只能是在每个响应式布局下为父元素设置不同的高度,勉强解决。。。

收获:

1.调试任务九时,对网页布局的整体性有了一些感悟。

2.通过准备以及分享小课堂,更理解flex的各属性以及应用。

小课堂内容如下(https://github.com/ptteng/PPT/blob/master/PPT/css-53-flexbox.html):

一、背景介绍

Flexbox布局的诞生,是为了提供一种更佳有效的布局方式,更有效率的处理某些特殊布局(例如垂直居中)。它可以更好的控制项目的对齐和自由分配容器空间,即使它们的大小是未知的或动态的,因此得其名"flex"。

Flexbox可以简便而完整的实现各种页面布局,可作为display属性 、position属性 、 float属性等布局方式的补充。

二、知识剖析

1、Flex布局是什么?

Flex是Flexible Box的缩写,意为"弹性布局",其主要思想是通过控制项目的宽度、高度,使其可以自动填满容器的可用空间,适应所有类型的显示设备以及屏幕大小。任何一个容器都可以指定为Flex布局,行内元素也可以使用Flex布局。

优点:提高网页布局的效率,几行代码就可以很好的控制元素的对齐、居中等。

缺点:“弹性布局”,间距、宽高等无法固定。

 2、基本概念

 采用Flex布局的元素,称为Flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目"。

 注意:Flex容器不是块容器,因此有些设计用来控制块布局的属性在Flexbox布局中不适用。例如float、clear属性和vertical-align属性在Flex容器上就没有作用。

 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。

主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;

交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。

Flex项目的在主轴方向的宽度或高度,就是项目的主轴长度叫做main size,Flex项目的在侧轴方向的宽度或高度,就是项目的侧轴长度,叫做

3. 父级属性

flex:direction 设置主轴方向,确定子元素主轴排列方式

justify-content 主轴上子元素对齐方式

align-items侧轴子元素对齐方式

flex:wrap 主轴宽度不够时是否换行显示

flex-flow flex-direction属性和flex-wrap属性的简写形式

align-content 侧轴上有剩余空间时,侧轴对齐方式

4 .子级属性

order 子元素排列顺序

flex-shrink 子元素收缩比率

flex-grow 子元素扩展比率

flex-basis flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

flex flex-grow, flex-shrink 和 flex-basis的简写

align-self 允许单个项目有与其他项目不一样的对齐方式,可以覆盖弹性容器的默认的侧轴对齐方式(align-items)

5. 属性详解

flex-direction

row(默认值):主轴为水平方向,起点在左端。

row-reverse:主轴为水平方向,起点在右端。

column:主轴为垂直方向,起点在上沿。

column-reverse:主轴为垂直方向,起点在下沿。

cente 水平居中对齐


justify-content


flex-start 水平靠左对齐

flex-end 水平靠右对齐

space-around 水平均匀分布

space-between 水平两端对齐,每个项目两侧的间隔相等。


align-items

 stretch 默认值,拉伸等高,占满容器高度<

 flex-start 垂直顶部对齐

flex-end垂直底部对齐

  center 垂直居中对齐

  baseline 项目的第一行文字的基线对齐

    

  flex-wrap

   nowrap 默认值,不换行

    wrap 换行显示

    wrap-reverse 逆序换行显示


  align-content

    stretch 默认值,拉伸,占满容器高度,项目高度由项目内容决定

   flex-start 垂直顶部对齐

   flex-end 垂直底部对齐

    center  垂直居中对齐 

    space-between 垂直两端对齐

    space-around 垂直轴均匀分布 

  

order 子元素排列顺序(默认值为0)

设置的值越小越靠前

 

flex-grow 子元素扩展比例

 剩余宽度 * 占比值/总比值

 默认值为0,即如果存在剩余空间,也不放大。

 如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。


flex-shrink 子元素收缩比例

 溢出宽度 * 占比值/总比值

 默认值为1,即如果空间不足,该项目将缩小。都为1的话,均匀缩小。

 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

 

flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

     

align-self align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

 该属性可能取6个值,除了auto,其他都与align-items属性完全一致。


三、编码实战

https://github.com/ptteng/PPT/blob/master/PPT/demo/css-53-flexbox/demo1.html

四、拓展思考

flex布局最常用的是什么场景?

一般实现垂直居中是一件很麻烦的事,但flex布局轻松解决

 



返回列表 返回列表
评论

    分享到