zoukankan      html  css  js  c++  java
  • Flexbox 弹性盒子布局的使用

    本文章是我使用弹性盒子的案例,仅供参考

    参考:

    https://www.runoob.com/css3/css3-flexbox.html

    https://www.cnblogs.com/makalochen/p/13389628.html

    基本html和css

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>flexbox</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="container">
            <div class="item"> 1 </div>
            <div class="item"> 2 </div>
            <div class="item"> 3 </div>
            <div class="item"> 4 </div>
            <div class="item"> 5 </div>
            <div class="item"> 6 </div>
        </div>
    </body>
    </html>
    

    css

    body {
        /*设置body背景颜色*/
        background-color: #f5f5f5;
    }
    
    .container  {
        /*外边距居中*/
        margin: 150px auto;
        /*最大宽度*/
        max- 800px;
        /*固定高度*/
        height: 400px;
        /*内边距*/
        padding: 20px;
        /*背景颜色*/
        background-color: rgb(196,229,232);
        /*边框为5px 实线 */
        border: 5px solid rgb(0, 181, 203);
    }
    
    .item {
        /*背景颜色*/
        background-color: rgb(0, 181, 203);
        /*字体颜色*/
        color: white;
        /*宽*/
         100px;
        /*高*/
        height: 100px;
        /*外边距*/
        margin: 2px;
        /*字体加粗*/
        font-weight: bold;
        /*字体大小*/
        font-size: 5em;
        /*文字居中*/
        text-align: center;
    }
    

    效果

    image-20210128142517774

    如何定义弹性盒子

    这里引用菜鸟教程的一段话

    弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

    弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

    弹性容器内包含了一个或多个弹性子元素。

    注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

    弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

    从上面这段话我们得知,将divdisplay 属性的值为 flexinline-flex就可以变成弹性容器

    我们来试下

    此时在css文件中加入

    /*设置为弹性容器*/
    display: flex;
    

    此时的css文件内容

    body {
        /*设置body背景颜色*/
        background-color: #f5f5f5;
    }
    
    .container  {
        /*外边距居中*/
        margin: 150px auto;
        /*最大宽度*/
        max- 800px;
        /*固定高度*/
        height: 400px;
        /*内边距*/
        padding: 20px;
        /*背景颜色*/
        background-color: rgb(196,229,232);
        /*边框为5px 实线 */
        border: 5px solid rgb(0, 181, 203);
        /*设置为弹性容器*/
        display: flex;
    }
    
    .item {
        /*背景颜色*/
        background-color: rgb(0, 181, 203);
        /*字体颜色*/
        color: white;
        /*宽*/
         100px;
        /*高*/
        height: 100px;
        /*外边距*/
        margin: 2px;
        /*字体加粗*/
        font-weight: bold;
        /*字体大小*/
        font-size: 5em;
        /*文字居中*/
        text-align: center;
    }
    

    效果

    image-20210128143847328

    可以看到容器内元素设置了这个属性之后直接从左到右排列了,这是因为弹性盒子的子元素默认排列方式就是从左到右

    CSS3 弹性盒子属性

    下表列出了在弹性盒子中常用到的属性:

    属性 描述
    display 指定 HTML 元素盒子类型。
    flex-direction 指定了弹性容器中子元素的排列方式
    justify-content 设置弹性盒子元素在主轴(横轴)方向上的对齐方式。
    align-items 设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
    flex-wrap 设置弹性盒子的子元素超出父容器时是否换行。
    align-content 修改 flex-wrap 属性的行为,类似 align-items, 但不是设置子元素对齐,而是设置行对齐
    flex-flow flex-direction 和 flex-wrap 的简写
    order 设置弹性盒子的子元素排列顺序。
    align-self 在弹性子元素上使用。覆盖容器的 align-items 属性。
    flex 设置弹性盒子的子元素如何分配空间。

    flex-direction 设置子元素的排列方式

    这里仅展示常用的

    • 从左到右
    • 从右到左
    • 从上到下
    • 从下刀伤

    其他的参考:

    https://www.runoob.com/cssref/css3-pr-flex-direction.html

    容器属性 flex-direction 的四个值分别表示子元素不同的排列方式

    从左到右(默认)

    flex-direction: row;
    

    image-20210128155132014

    从右到左

    flex-direction: row-reverse;
    

    image-20210128155306779

    从上到下

    flex-direction: column;
    

    image-20210128155440336

    从下到上

    flex-direction: column-reverse;
    

    image-20210128155545983

    flex-wrap 设置换行

    我们在上面设置的容器最大宽度是800xp,容器内元素宽度是100px 也就是说最多可以有8个,现在搞上10个试下

    image-20210128153529634

    可以看到超过了最大宽度还是会在一行,这时候我要让子元素超过父容器宽度自动换行,怎么做呢?

    容器的css加上

    /*设置子元素超过父容器宽度自动换行, 第一行在上*/
    flex-wrap: wrap;
    

    效果

    image-20210128154222924

    其他方式参考:

    https://www.cnblogs.com/makalochen/p/13389628.html#flex-wrap属性:定义换行情况

    flex-flow 设置元素的排列和换行

    这个属性相当于上面两个的合集

    • flex-direction
    • flex-wrap

    例:

    flex-flow: row-reverse wrap;
    

    效果

    image-20210128160606303

  • 相关阅读:
    zzuli2470: 迷宫
    zzuli2460: 楼上真的是签到题
    zzuli2460: 楼上真的是签到题
    洛谷P1044 :栈(卡特兰数)
    洛谷P1044 :栈(卡特兰数)
    洛谷P1056:排座椅(贪心)
    代码块地址
    tabBarItem动画
    vim Podfile
    webView进度条
  • 原文地址:https://www.cnblogs.com/makalochen/p/14436458.html
Copyright © 2011-2022 走看看