CSS学习之flex篇(前端)

        最近学习前端布局时接触到了css3新增属性----flex;作为初学前端的小白,之前使用的都是float(浮动)给文档流的同行放置盒子模型,繁琐的操作下还需要一步步对比原页面,一次又一次地摁下Fn+F12键,在成堆的标签和属性中找bug(yue~~~),以至于数个小时后勉强完成网页还原时还觉得自己很厉害哈哈哈。其实选择效率更高的flex比用浮动,调边距的老办法才更加明智。

相信我,flex的功能超乎你的想象!!!

扯远了,废话不多说,上干货啦~

目录

相信我,flex的功能超乎你的想象!!!

Flex

1.简单模型

2.属性+语法

一.声明flex显示模式

二.justify-content

​三.align-items

四.flex-wrap

​五.align-content

六.“flex:”用法

 3.总结


Flex

        通俗的讲,就是为了让矫情(独占一行)的盒子聚集在一起,让他们和睦相处,快乐玩耍。

        flex是一种一维的布局模型,它给 所在盒子 的子元素之间提供了强大的空间分布和对齐能力。一次只能处理一个维度上的元素布局,一行或者一列。这样的直接的好处就是,整行的父级盒子模型不用脱离文档流,避免空间不足导致的溢出换行,和新增盒子模型的向上镶嵌(呃呃大概这个意思,you know )。

1.简单模型

         这里把flex定义的整行大盒子画出来,可以用建立坐标轴的方式理解其原理与用法。其中横轴纵轴各自横穿盒子中部,交汇于中心,各与四条边的中点相交作为各自的起始点和终止点。看着上面的图会比较好理解点,这是后面理解flex语法的基石,兄弟们不要草草带过~

2.属性+语法

一.声明flex显示模式

div{
   display:flex;
}

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<style>

    .box {

        margin: 100px auto;

        width: 600px;

        height: 100px;

        /* 声明flex属性 */

        display: flex;

        justify-content: center;

        background-color: rgb(167, 108, 222);

    }

    .sbox {

        width: 100px;

        height: 80px;

        border: 1px solid black;

        background-color: rgb(101, 101, 221);

    }

</style>

<body>

    <div class="box">

        <div class="sbox"></div>

        <div class="sbox"></div>

        <div class="sbox"></div>

        <div class="sbox"></div>

    </div>

</body>

</html>

二.justify-content

        作用:确定横轴上元素的对齐方式。下面介绍几种常见形式。其中最后三个感觉比较实用,有了这个就不用默默计算同列中盒子的margin和padding值是多少啦~

(1)justify-constent:center;

.box {

        margin: 100px auto;

        width: 600px;

        height: 100px;

        /* 声明flex属性 */

        display: flex;

        justify-content: center;

        background-color: rgb(167, 108, 222);

    }

 

        (2)justify-content: end; 

        (3)justify-content: start;

        (4)justify-content: space-around; (每个盒子两侧的边距是一样的)

       (5) justify-content: space-between;(每个盒子之间的边距是一样的,不考虑父级盒子边缘)

       (6)  justify-content: space-evenly;(上一条语法的考虑父级盒子边缘版,应该不难理解)

 三.align-items

        作用:确定元素在纵轴方向的对齐方式和空间分配等等。可以理解成你把屏幕横过来看上一板块(~ ̄▽ ̄)~

        (1)align-items: center;

        

        (2)align-items: start; 

 

         (3) align-items: end;

 

         (4)  align-items: stretch;

         如下图,盒子本未设置高度,但也被自动拉伸填满父级标签

四.flex-wrap

        作用:当父级盒子宽度固定且有限,同行子盒子过多无法填满就会溢出,该属性能够使放不下的盒子放到同宽的新的一行。(该属性默认为nowrap,即不换行)

        注意:由溢出而新生成的行也遵循flex原则!

.box {

        margin: 100px auto;

        width: 500px;

        height: 200px;

        /* 声明flex属性 */

        display: flex;

        flex-wrap: wrap;

        align-items: center;

        justify-content: space-around;

        background-color: rgb(167, 108, 222);

    }

        换行前:

        换行后:

 五.align-content

        作用:就是当有多行flex型盒子纵向排列时,可以调整竖直方向分布,比如每行盒子居中显示,等距显示,啥啥啥的,已经词不达意咯😂,下面就随便说几种吧。

        (1)align-content: space-between;

.box {

        margin: 100px auto;

        width: 500px;

        height: 200px;

        /* 声明flex属性 */

        display: flex;

        flex-wrap: wrap;

        align-content: space-between;

        background-color: rgb(167, 108, 222);

    }

         (2) align-content: space-around;

        (3) align-content: space-evenly; 

         (4)  align-content: center;

六.“flex:”用法

        作用:为盒子分配比例。

<style>

    .box {

        margin: 100px auto;

        width: 500px;

        height: 100px;

        /* 声明flex属性 */

        display: flex;

        align-content: center;

    }

    .sbox {

        width: 100px;

        height: 80px;

        border: 1px solid black;

    }

    .s1 {

        flex: 3;

        background-color: rgb(161, 50, 173);

    }

    .s2 {

        flex: 2;

        background-color: rgb(51, 63, 170);

    }

    .s3 {

        flex: 1;

        background-color: rgb(74, 193, 126);

    }

    .s4 {

        flex: 3;

        background-color: rgb(190, 222, 95);

    }

</style>

<body>

    <div class="box">

        <div class="sbox s1"></div>

        <div class="sbox s2"></div>

        <div class="sbox s3"></div>

        <div class="sbox s4"></div>

    </div>

</body>

         分配效果如下:(3:2:1:3)

 

        OK,至此,flex的一些常用用法介绍完了,稍稍掌握,可以试试不使用浮动和加margin或padding做出稍微复杂的板块布局啦~

         无他,唯手熟尔 ;-)

 3.总结

        flex可以实打实提高页面开发效率,节约开发时间,确实值得好好学习一下。另外,虽然flex在好多页面开发中很常用,但往往是多种布局方法实现,要多实战,多学习不一样的代码风格,学会哪一种样式用哪一种布局更加合适(小白我也正在学习中),不要写了这个忘了那个,捡了芝麻丢了西瓜。xdm,加油,欧里给~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值