弹性盒模型 flex box的认知与使用

弹性盒子模型

布局方案

传统的布局方案大多采用div+css+float+position+display来实现,但是随着css3中弹性盒子模型的推出,在前端布局方案中就又多出了一项彪悍的选项。
而因为最近在研究小程序,发现中间使用弹性盒子布局效果更好效率更高一点,所以就将之前学习弹性盒模型的相关知识点整理出来,给大家分享。

弹性盒模型flex布局介绍

弹性盒模型(flexbox)又称为弹性布局,是css3中新提出的一种布局方式,通过弹性布局,可以让子元素自动调整宽度和高度,从而达到很好的填充任何不同屏幕大小的显示设备的显示空间。
弹性盒模型与之前的布局方式是完全不同的两种,虽然依然采用div+css的方式,但是却将之前使用的浮动给替换成了弹性布局。从而使页面元素布局方式更加的简单。
不同于我们后面所学习的网格系统,弹性布局更加适用于应用组件以及小比例布局。
在之前,flex经历了三次迭代,每一次迭代都产生了不同的语法,目前我们学习遵循最终版本的语法。因为之前版本在使用的时候需要考虑兼容问题,而最新版本,所有的浏览器都支持无前缀的终极规范。

弹性盒子模型认知

flex布局方式是一个完整的布局模块,而不是只某个属性。flex的布局主要依靠父容器和元素组成。
父容器称之为flex container(flex容器) 而其子元素称之为flex item(flex元素)。
而整个flex布局的核心在于 对其方式、排布和顺序。

弹性盒子模型的使用

想要使用flex布局,首先要使用display:flex 或者 display:inline-flex来设置父容器。
display:flex 给父元素设置完成后,那么整个父元素会变成弹性容器,但是是一个块级元素。
display:inline-flex给父元素设置完成后,那么整个父元素会变成弹性容器,但是是一个行内块级元素,有些类似于inline-block的效果。

当父容器设置了这个属性之后,里面的子元素默认的全部变成flex item (flex元素)
Tip:flex布局与我们之前所学习的布局方式是属于另外一套布局方案,所以在使用了flex布局之后,如Block”,“inline”,“float” 和 “text-align” 等一些属性会失效。

        Document            .container-flex {            width: 600px;            border:1px solid #ccc;            display:flex;        }        .container-inline {            width: 600px;            border:1px solid #ccc;            display:inline-flex;        }        .container-flex div {            width: 200px;            height: 200px;            background-color: orange;        }        .container-inline div {            width: 200px;            height: 200px;            background-color: orange;        }        
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4

登录后复制

执行的效果如下:

弹性盒模型 flex box的认知与使用

必备名词解释

在使用弹性盒子模型之前,需要了解一些弹性盒模型的基础概念名词。

main axis 主轴
cross axis 交叉轴/侧轴 与主轴垂直
main start 主轴起点边
main end 主轴终点边
cross start 交叉轴起点边
cross end 交叉轴终点边

弹性盒模型 flex box的认知与使用

为什么使用弹性盒子模型

弹性盒子模型在开发手机端的时候使用频率较高,在微信小程序开发的时候也是使用频率非常高的技术,可以通过几个实例来看一下弹性盒子的好处:

实例1:

        Document            #item-container {            display: flex;/*启用flex布局*/            background-color: pink;        }        .square {            width: 200px;            height: 200px;            background-color: orange;        }        .circle {            border-radius: 50%;            width: 150px;            height: 150px;            background-color: green;        }        

登录后复制

代码结果如下:

弹性盒模型 flex box的认知与使用

在上述实例中需要注意的点:
① 启用flex布局 display:flex
② 父元素的子元素在父元素设置了display:flex之后,子元素会自动的变为弹性盒子的子元素,
被称为flex items
③ 默认情况,所有的 flex-item 会按照 flex 容器的顶部和左侧对齐。

实例2:

        Document            #item-container {            display: flex;/*启用flex布局*/            background-color: pink;            justify-content:flex-start;/*默认*/            justify-content:flex-end;/*在主轴的末端对其*/            justify-content:center;/*在主轴的中间对其*/            justify-content:space-between;/*在整个主轴中平均分配空间,无论其中有多少个元素*/            justify-content:space-around;/*Flex-item 默认会被均匀的分布,但是每一个                                        都会在其给定的空间内居中显示。*/            align-items:center;/*让items在垂直方向上居中*/        }        .square {            width: 200px;            height: 200px;            background-color: orange;        }        .circle {            border-radius: 50%;            width: 150px;            height: 150px;            background-color: green;        }        

登录后复制

代码效果如下:

弹性盒模型 flex box的认知与使用

我们可以通过非常简单的属性设置来调整对其方式,例如:
justify-content: flex-start / flex-end /center /space-between /space-around
我们也可以通过align-items:center 属性让 items 在垂直方向居中。

实例3:

        Document            #item-container {            display: flex;/*启用flex布局*/            background-color: pink;            justify-content:flex-start;/*默认*/            justify-content:flex-end;/*在主轴的末端对其*/            justify-content:center;/*在主轴的中间对其*/            justify-content:space-between;/*在整个主轴中平均分配空间,无论其中有多少个元素*/            justify-content:space-around;/*Flex-item 默认会被均匀的分布,但是每一个                                        都会在其给定的空间内居中显示。*/            align-items:center;/*让items在垂直方向上居中*/        }        .square {            width: 200px;            height: 200px;            background-color: orange;            order: -1; /*让正方形显示在第一位而不是中间*/        }        .circle {            border-radius: 50%;            width: 150px;            height: 150px;            background-color: green;        }        

登录后复制

实例3 和 实例2 大体相似,但是在.square类里存在一句order:-1,可以更改元素的渲染顺序。这个是弹性盒模型中一个非常厉害的一个方面。

实例3代码效果如下:

弹性盒模型 flex box的认知与使用

flex布局方式属性

在flex整个体系当中,大体上可以分为两类,一类是给父容器设置的属性,一类是给父容器中子元素设置的属性。

弹性容器属性 — 给父元素设置的属性

1.flex-direction 定义内部元素如何在flex容器中布局,定义了主轴的方向(是正是反)。

语法:

row | row-reverse | column | column-reverserow 默认值,子元素会排列在一行 从主轴左侧开始row-reverse 子元素会排列在一行。不过是从右侧开始column 子元素垂直显示,从侧轴起始点开始column-reverse 垂直显示,不过从结束点开始

实例代码:

        Document            .container {            width: 100%;            height: 500px;            border:1px solid #ccc;            display:flex;            flex-direction: row-reverse;            flex-direction: column;            flex-direction: column-reverse;        }        .container div {            width: 100px;            height: 100px;            background-color: orange;        }        
1
2
3

登录后复制

2.flex-wrap 控制容器内的子元素是被强制放在一行中或者是被放在多个行上 。如果允许换行,这个属性允许你控制行的堆叠方向。

语法:
nowrap | wrap | wrap-reverse
nowrap 所有的元素被摆在一行 默认值
wrap 当一行元素过多,则允许元素 换行
wrap-reverse 将侧轴起点和终点颠倒

实例代码:

Document    .container {        width: 600px;        height: 500px;        border:1px solid #ccc;        display:flex;        flex-wrap:wrap;        flex-wrap:wrap-reverse;    }    .container div {        width: 200px;        height: 100px;        background-color: orange;    }
1
2
3
4
5
6
7
8
9
10

登录后复制

3.justify-content 属性定义了浏览器如何分配顺着父容器主轴的弹性(flex)元素之间及其周围的空间。

语法:
flex-start | flex-end | center | space-between | space-around
flex-start : 从行首开始排列。每行第一个弹性元素与行首对齐,同时所有后续的弹性元素与前一个对齐。默认
flex-end : 从行尾开始排列。每行最后一个弹性元素与行尾对齐,其他元素将与后一个对齐
center : 伸缩元素向每行中点排列。每行第一个元素到行首的距离将与每行最后一个元素到行尾的距离相同
space-between : 在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素与行首 对齐,每行最后一个元素与行尾对齐。
space-around : 在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素到行首的距离和每行最后一个元素到行尾的距离将会是相邻元素之间距离的一半。

实例代码:

参考上面的实例2.

4.align-items 属性以与justify-content相同的方式在侧轴方向上将当前行上的弹性元素对齐。

语法:
flex-start | flex-end | center | baseline | stretch
align-items: flex-start; 对齐到侧轴起点
align-items: flex-end; 对齐到侧轴终点
align-items: center; 在侧轴上居中
align-items: baseline; 与基准线对齐
align-items: stretch; 拉伸元素以适应 默认值

实例代码:

Document    #item-container {        display: flex;/*启用flex布局*/        background-color: pink;        justify-content:space-around;        align-items:baseline;/*与基准线对齐*/    }    .square {        width: 200px;        height: 200px;        background-color: orange;    }    .circle {        border-radius: 50%;        width: 150px;        height: 150px;        background-color: green;    }    .container {        width: 500px;        height: 600px;        border:1px solid #ccc;        display:flex;        align-items: stretch;    }    .container div {        width: 100px;        background-color:red;        border:1px solid green;    }
<!--
1
2
-->

登录后复制

5.align-content 多行对其方式,如果只有一行,则失效。

语法:
flex-start | flex-end | center | space-between | space-around | stretch
flex-start : 与交叉轴的起点对其
flex-end : 与交叉轴的终点对其
center : 与交叉轴的中点对其
space-between : 与交叉轴两端对其,轴线之间的间隔平均分布
space-around: 所有行在容器中平均分布,相邻两行间距相等。容器的垂直轴起点边和终点边分别与第一行和最后一行的距离是相邻两行间距的一半。
stretch :拉伸所有行来填满剩余空间。剩余空间平均的分配给每一行

实例代码:

        Document            .container {            width: 600px;            height: 900px;            border:1px solid #ccc;            display:flex;            flex-wrap:wrap;            align-content:flex-start;            align-content:flex-end;            align-content:center;            align-content:space-between;            align-content:space-around;            align-content:stretch; /*默认*/        }        .container div {            width: 200px;            height: 80px;            background-color: orange;        }        
1
2
3
4
5
6
7
8
9
10

登录后复制

弹性元素属性 — 给子元素设置的属性

order order属性规定了弹性容器中的可伸缩项目在布局时的顺序。元素按照order属性的值的增序进行布局。拥有相同order属性值的元素按照它们在源代码中出现的顺序进行布局。

语法:
order:

align-self 定义flex子项单独在侧轴(纵轴)方向上的对齐方式

语法:
stretch|center|flex-start|flex-end|baseline

flex-grow 定义弹性盒子元素扩展比率
flex-shrink 定义弹性盒子元素的收缩比率
flex-basis 指定了flex item在主轴方向上的初始大小。如果不使用box-sizing来
改变盒模型的话,那么这个属性就决定了flex item的内容盒content-box)的宽 或者高(取决于主轴的方向)的尺寸大小。

Tip:需要注意的是,在上面的最后的flex-grow、flex-shrink、flex-basis 三个属性最好相互搭配使用。

实例:

#main {    width: 350px;    height: 100px;    border: 1px solid #c3c3c3;    display: flex;}#main div {    flex-grow: 1;    flex-shrink: 1;    flex-basis: 100px;}#main div:nth-of-type(2) {    flex-shrink: 3;}

登录后复制

ok,上面大概就是一些常用的弹性盒子模型flex-box常用的属性,上面的实例很多只是给了代码,没有给效果图,是因为希望正在学习弹性盒子模型的同志们最好把代码实际的敲一下,并且亲自尝试不同的属性值,来分析不同属性带来的不同的效果。
弹性盒子模型难度不大,但是却与传统的布局方案有很大的差别。

以上就是弹性盒模型 flex box的认知与使用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2910948.html

(0)
上一篇 2025年3月11日 04:37:53
下一篇 2025年3月6日 11:43:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • HTML5盒子模型的使用方法

    盒子模型。 盒子由 margin、border、padding、content 四部分组成。 margin :外边距 立即学习“前端免费学习笔记(深入)”;   border:边框   padding:内边距 (内容与边框的距离)   co…

    2025年3月11日 编程技术
    200
  • 移动端Web页面的CSS3 flex布局学习指南

    flexbox通常能让我们更好的操作他的子元素布局,这里稍微来提炼一下移动端web页面的css3 flex布局学习指南,需要的朋友可以参考下 1、开始使用flexbox布局的方法,代码如下: footer{   display:flex; …

    编程技术 2025年3月11日
    200
  • 详解CSS中的display:flex||inline-flex属性

    这篇文章主要给大家介绍了css中的display:flex和display:inline-flex属性,文中分别通过两段实例代码给大家介绍了display:flex和display:inline-flex的使用效果,感兴趣的朋友们可以参考借…

    2025年3月11日
    200
  • 深入理解CSS系列之flex兼容

    随着自己写过的页面的增多,也遇到了很多css兼容性的问题。这些兼容性问题,都是必然的,因为技术在不断进步,那么为了不被淘汰,我们就要做些兼容性处理。这篇文章主要介绍了css中flex的兼容,需要的朋友可以参考借鉴,下面来一起看看吧。 前言 …

    2025年3月11日
    200
  • CSS3中display属性的Flex布局的方法

    在学习微信小程序,在设计首页布局的时候,新认识了一种布局方式display:flex,本文主要介绍了浅谈css3中display属性的flex布局的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家。  .conta…

    2025年3月11日
    200
  • Flex布局的可伸缩性详解

    flexibility Flex伸缩布局决定性的特性是让伸缩项目可伸缩,也就是让伸缩项目的宽度或高度自动填充剩余的空间。这可以以flex属性完成。一个伸缩容器会等比地按照各伸缩项目的 扩展比率 分配剩余空间,也会按照 收缩比率 缩小各项目以…

    2025年3月10日
    200
  • CSS实现单行、多行文本溢出显示省略号的实现方法

    这篇文章主要介绍了关于css实现单行、多行文本溢出显示省略号的实现方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然…

    2025年3月10日
    200
  • 关于开发CSS3弹性盒模型的方法之一

    这篇文章主要为大家分享了css3弹性盒模型开发笔记,对兼容性,不同属性进行介绍,感兴趣的小伙伴们可以参考一下 弹性盒模型(Flexible Box Moudle),该模型用于决定元素在盒子中的分布方式以及处理盒子的可用空间。这与XUL(Fi…

    2025年3月10日
    200
  • 关于开发CSS3弹性盒模型的方法之二

    这篇文章主要为大家分享了css3弹性盒模型开发笔记,想要学好css3弹性盒模型的朋友不要错过这篇文章,可以参考一下 本文为大家继续分享CSS3弹性盒模型开发笔记第二篇,之前一篇以及为大家引入了CSS3弹性盒模型的相关介绍,点击查看:CSS3…

    2025年3月10日 编程技术
    200
  • 关于css3弹性盒模型的介绍

    这篇文章主要介绍了关于css3弹性盒模型的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Css3引入了新的盒模型——弹性盒模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间,使用该模型,可以很轻松的创建自适应…

    2025年3月10日
    200

发表回复

登录后才能评论