玄子Share-CSS3 弹性布局知识手册

玄子Share-CSS3 弹性布局知识手册

Flexbox Layout(弹性盒布局)是一种在 CSS 中用于设计复杂布局结构的模型。它提供了更加高效、简便的方式来对容器内的子元素进行排列、对齐和分布

主轴和交叉轴

使用弹性布局,最重要的一个概念就是主轴与交叉轴(副轴,侧轴),主轴由flex-direction定义,另一根轴垂直于它

  • 主轴(Main Axis):弹性容器的主要方向,可以是水平方向或垂直方向
  • 交叉轴(Cross Axis):与主轴垂直的轴线,如果主轴是水平方向,那么交叉轴就是垂直方向,反之亦然

这里一定不要主观认为,主轴就是横向(水平),交叉轴就是纵向的(垂直),主轴是水平还是垂直排列,以及justify-contentalign-items等样式的排列方向,都是由主轴方向flex-direction来定义的

弹性容器属性

弹性容器属性,设置在需要开启弹性布局的容器中,也就是父级容器

  • display:定义弹性容器表现形式
    • flex:块级弹性容器
    • inline-flex:行内弹性容器
  • flex-direction:定义主轴的排列方向
    • row:主轴排列方向为行排列横向(默认值)
    • row-reverse:主轴排列方向为行排列横向并翻转左右顺序
    • column:主轴排列方向为列排列纵向
    • column-reverse:主轴排列方向为列排列纵向并翻转上下顺序
  • flex-wrap:定义子容器宽度在超出父容器宽度时,子容器是否自动换行
    • nowrap:子容器在超出父容器宽度时不允许自动换行(默认值)
    • wrap:子容器在超出父容器宽度时允许自动换行
    • wrap-reverse:子容器在超出父容器宽度时允许自动换行并翻转两行顺序
  • flex-flow:flex-direction 和 flex-wrap 的简写形式
    • row:只写单个 flex-direction 值,表示排列方式与关键词一致,不换行
    • wrap:只写单个 flex-wrap值,表示排列方式为横向排列,换行行为与关键词一致
    • flex-flow: row nowrap:主轴为行排列,子容器不换行
    • flex-flow: column wrap:主轴为列排列,子容器允许换行
    • flex-flow: row-reverse wrap-reverse:主轴为行排列并反向排列,子容器允许换行且反向排列
    • 为保证代码的易读性,在编写代码时,推荐使用拆分形式书写
  • justify-content:定义子容器在主轴上的对齐方式
    • flex-start:子容器向主轴开始位置对齐
    • flex-end:子容器向主轴结束位置对齐
    • center:子容器在主轴上居中对齐
    • space-between:子容器在主轴上平均分布,首尾没有空隙
    • space-around:子容器在主轴上平均分布,每个子容器两侧有空隙
    • space-evenly:子容器在主轴上平均分布,每个子容器两侧和首尾都有空隙
  • align-items: 定义子容器在交叉轴上的对齐方式
    • flex-start:子容器向交叉轴开始位置对齐
    • flex-end:子容器向交叉轴结束位置对齐
    • center:子容器在交叉轴上居中对齐
    • baseline:子容器的基线对齐
    • stretch:子容器在交叉轴上拉伸以适应容器高度
  • align-content: 定义子容器在多轴(多行)上的对齐方式,此样式只在开启 flex-wrap 自动换行时生效
    • flex-start:子容器在多轴上向交叉轴开始位置对齐
    • lex-end:子容器在多轴上向交叉轴结束位置对齐
    • center:子容器在多轴上居中对齐
    • space-between:子容器在多轴上平均分布,首尾没有空隙
    • space-around:子容器在多轴上平均分布,每个子容器两侧有空隙
    • space-evenly:子容器在多轴上平均分布,每个子容器两侧和首尾都有空隙
    • stretch:子容器在多轴上拉伸以适应容器高度

弹性项目属性

弹性项目属性,设置在已经开启弹性布局的弹性项目中,也就是子级容器

  • order:定义项目的排列顺序
    • 正整数: 定义项目的排列顺序,数值越小,排列越靠前
    • 负整数: 同上,数值越小,排列越靠前
  • flex-grow:定义项目在分配多余空间时的放大比例
    • 0:项目在空间充足时不会放大(默认值)
    • 数值:定义项目在分配多余空间时的相对增长比例,数值越大,分配到的空间越多
  • flex-shrink:定义项目在空间不足时的缩小比例
    • 1:项目在空间不足时按照相等的比例缩小(默认值)
    • 数值:定义项目在空间不足时的相对缩小比例,数值越大,缩小得越多
  • flex-basis:定义项目在分配多余空间之前的基准值
    • auot:项目在分配多余空间之前自动调整基准大小(默认值)
    • 长度值或百分比:指定项目在分配多余空间之前的基准大小
  • flex:flex-grow、flex-shrink 和 flex-basis 的简写形式
    • 0 1 auto:等于flex-grow:0,flex-shrink:1,flex-basis:auto,项目在分配多余空间时不会相对增长,项目在空间不足时相对收缩(默认值)
    • 1: 等于flex-grow:1,flex-shrink:1,flex-basis:0%,项目会在分配多余空间时相对增长,空间不足时相对收缩
    • 200px: 等于flex-grow:1,flex-shrink:1,flex-basis:200px,项目在分配多余空间时相对增长,空间不足时相对收缩,默认大小200px
    • none:等于flex-grow:0,flex-shrink:0,flex-basis:auto,项目在分配多余空间时不会相对增长,项目在空间不足时不会相对收缩
    • auto: 等于flex-grow:1,flex-shrink:1,flex-basis:auto,项目会在分配多余空间时相对增长,空间不足时相对收缩
    • 在实际开发中,建议优先使用 Flex 属性,这样写有利于浏览器渲染
  • align-self:设置单个子元素在交叉轴上的对齐方式,覆盖父容器的 align-items 属性
    • flex-start:单个项目向交叉轴开始位置对齐
    • flex-end:单个项目向交叉轴结束位置对齐
    • center:单个项目在交叉轴上居中对齐
    • baseline:单个项目的基线对齐
    • stretch:单个项目在交叉轴上拉伸以适应容器高度

演示示例模板

下面我将使用这个示例模板来进行,弹性布局的效果演示(后续示例仅展示关键代码)

  • #app:定义了一个页面底板并使用弹性布局设置在页面中央位置(仅用于布局无意义)
  • .container:定义了一个弹性容器,它的子元素.item会沿着主轴横向排列,使用容器右下角的按钮可快捷调整容器大小
  • .item:定义了.container子容器的样式,用于演示示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>玄子Share-弹性布局演示案例</title>
    <style>
        #app {
            width: 90vw;
            height: 90vh;
            margin: 0 auto;
            padding: 20px;
            background-color: #EAEAEA;
            display: flex;
            flex-direction: column;
            align-items: center;
            /*以上为演示案例的底板样式,仅用于布局无意义*/
        }

        .container {
            width: 600px;
            height: 300px;
            background-color: darkgray;
            overflow: auto;
            resize: both;
            /*通过 resize 样式自由调整演示容器大小*/
            /*=======Flex=======*/
            display: flex;
        }

        .item {
            width: 100px;
            height: 100px;
            margin: 5px;
            text-align: center;
            line-height: 100px;
            border: 1px solid blue;
            background-color: turquoise;
            /*=======Flex=======*/
        }
    </style>
</head>
<body>
<div id="app">
    <h1>玄子Share-弹性布局演示案例</h1>
    <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>
</div>
</body>
</html>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过调整.container的尺寸可以观察到,当父级容器空间不足时,子元素的宽度会被挤压,以容下子元素

弹性容器演示

flex-direction
.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-direction: row可以看到这个属性的效果,和默认只写一个display: flex的效果是一致的,子元素从左到右依次排列(默认效果)

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row-reverse;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-direction: row-reverse这个属性的效果,和flex-direction: row的效果是相反的,子元素从右到左依次排列,并翻转子元素的顺序

.container {
    height: 600px;
    /*=======Flex=======*/
    display: flex;
    flex-direction: column;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-direction: column这个属性的效果为,子元素从上到下依次排列

.container {
    height: 600px;
    /*=======Flex=======*/
    display: flex;
    flex-direction: row-reverse;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-direction: column-reverse这个属性的效果,和flex-direction: column的效果是相反的,子元素从下到上依次排列,并翻转子元素的顺序

flex-wrap
.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-wrap: nowrap这个属性的效果与,只写一个display: flex效果一致,如果父容器宽度不足,则会挤压子元素宽度(默认效果)

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-wrap: wrap这个属性的效果为,当父容器宽度不足时,子元素会自动换行,如果父容器宽度实在不足,则会挤压子元素宽度

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap-reverse;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-wrap: wrap-reverse这个属性的效果为,当父容器宽度不足时,子元素会自动换行,但换行效果是反向的即从下到上换行

flex-flow
.container {
    /*=======Flex=======*/
    display: flex;
    flex-flow: row wrap;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-flow: column wrap这个属性是flex-directionflex-wrap的简写形式,当前样式表示,主轴横向排列,自动换行

.container {
    /*=======Flex=======*/
    display: flex;
    flex-flow: row wrap;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-flow: column wrap当前样式表示,主轴纵向排列,自动换行

.container {
    /*=======Flex=======*/
    display: flex;
    flex-flow: row;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-flow: row若只写一个flex-direction的关键字,则遵守flex-direction关键字的规则

.container {
    /*=======Flex=======*/
    display: flex;
    flex-flow: wrap;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-flow: wrap若只写一个flex-wrap的关键字,则flex-direction排列方向为默认横向排列,换行行为遵守flex-wrap关键字的规则

justify-content
.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: flex-start;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

justify-content: flex-start这个属性的效果,与flex-direction:row的默认效果一致,子元素沿主轴方向,依次排列(默认效果)

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: flex-end;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

justify-content: flex-end这个属性的效果,与justify-content: flex-start的效果相反,子元素沿主轴反方向,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

justify-content: center这个属性的效果为,子元素沿主轴方向居中对齐并,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

justify-content: space-between这个属性的效果为,子元素沿主轴方向,两端子元素对齐边距,中间子元素等量分配剩余空间,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-around;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

justify-content: space-around这个属性的效果为,子元素沿主轴方向,每个子元素等量分配剩余空间到左右两侧,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

justify-content: space-evenly这个属性的效果为,子元素沿主轴方向,每个子元素等量分配剩余空间,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

设置justify-contentflex-wrap: wrap属性后,父容器宽度不足时,子容器自动换行,换行后子容器排列,并遵守justify-content的规则

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    justify-content: space-evenly;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-direction: column当主轴为纵轴时,子元素排列方向依照主轴纵向排列,并遵守justify-content的规则,(主轴)纵向等距对齐

align-items
.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: flex-start;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-items: flex-start这个属性的样式与默认效果一致,子元素沿侧轴顶部对齐

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: flex-end;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-items: flex-end这个属性的样式与默认效果相反,子元素沿侧轴底部对齐

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-items: center这个属性的样式为,子元素沿侧轴中心位置对齐

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: baseline;
}

.item:first-child {
    width: 200px;
    height: 200px;
    line-height: 200px;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-items: baseline这个属性的样式为,子元素沿侧轴中,高度最高的子元素的中心位置为基线对齐

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-direction: column当主轴为纵轴时,子元素排列方向依照主轴纵向排列,并遵守align-items: center的规则,(侧轴)横向居中对齐

align-content
.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    align-content: flex-start;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-content: flex-start表示在多轴情况下,侧轴的对齐方式为顶部对齐(只有在开启flex-wrap换行后才有多轴,否则此样式无效)

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    align-content: center;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-content: center表示在多轴情况下,侧轴的对齐方式为居中对齐(只有在开启flex-wrap换行后才有多轴,否则此样式无效)

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    align-content: flex-end;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-content: flex-end表示在多轴情况下,侧轴的对齐方式为底部对齐(只有在开启flex-wrap换行后才有多轴,否则此样式无效)

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    align-content: space-around;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-content: space-around表示在多轴情况下,子元素沿主侧方向,每行子元素等量分配剩余空间到侧轴两侧,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    align-content: space-between;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-content: space-between表示在多轴情况下,子元素沿侧轴方向,两端子元素对齐边距,中间子元素等量分配剩余空间,依次排列

.container {
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    align-content: space-evenly;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-content: space-evenly表示在多轴情况下,子元素沿主侧方向,每行子元素等量分配剩余空间,依次排列

弹性项目演示

order
.container {
    width: 600px;
    height: 300px;
    background-color: darkgray;
    overflow: auto;
    resize: both;
    /*通过 resize 样式自由调整演示容器大小*/
    /*=======Flex=======*/
    display: flex;
    flex-direction: row;
    justify-content: space-evenly;
    align-items: center;
}

.item {
    width: 100px;
    height: 100px;
    margin: 5px;
    text-align: center;
    line-height: 100px;
    border: 1px solid blue;
    background-color: turquoise;
    /*=======Flex=======*/
}

.item:nth-of-type(1) {
    order: 5;
}

.item:nth-of-type(5) {
    order: -1;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

order: 数值单独设置子元素的排列循序,按主轴方法计算大小,可为负数

flex-grow
.item:nth-of-type(1) {
    flex-grow: 1;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-grow: 1表示在父容器剩余空间充裕时,子元素将自动放大自身以填充剩余空间,默认为0及不放大自身

flex-shrink
.item:nth-of-type(1) {
    flex-shrink: 0;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-shrink: 0表示在父容器剩余空间不足时,子元素将不会缩小自身大小以适应空间,默认为0及自动缩小自身

flex-basis
.item:nth-of-type(1) {
    flex-basis: 200px;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex-basis: 200px表示项目默认初始大小为200px,默认为auto自动调整

flex
.item:nth-of-type(1) {
    flex: 0 1 auto;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex: 0 1 auto表示项目在分配多余空间时不会相对增长,项目在空间不足时相对收缩(默认值)

.item:nth-of-type(1) {
    flex: auto;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex: auto表示项目会在分配多余空间时相对增长,空间不足时相对收缩

.item:nth-of-type(1) {
    flex: none;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex: none表示项目在分配多余空间时不会相对增长,项目在空间不足时不会相对收缩

.item:nth-of-type(1) {
    flex: 1;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex: 1表示项目会在分配多余空间时相对增长,空间不足时相对收缩

.item:nth-of-type(1) {
    flex: 200px;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flex: 200px表示项目在分配多余空间时相对增长,空间不足时相对收缩,默认大小200px

align-self
.item:nth-of-type(1) {
    align-self: flex-start;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-self: flex-start设置单个子元素在侧轴上的对齐方式为顶对齐,会覆盖掉父容器的align-items属性

.item:nth-of-type(1) {
    align-self: flex-start;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-self: center设置单个子元素在侧轴上的对齐方式为居中对齐,会覆盖掉父容器的align-items属性

.item:nth-of-type(1) {
    align-self: flex-start;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

align-self: flex-end设置单个子元素在侧轴上的对齐方式为底对齐,会覆盖掉父容器的align-items属性

弹性布局案例

后台页面布局

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #app {
            margin: 0 auto;
            width: 100vw;
            height: 100vh;
            display: flex;
            flex-direction: column;
        }

        header {
            width: 100%;
            height: 10%;
            background-color: yellow;
            display: flex;
            flex-direction: row;
            /*gap: 5px;*/
        }

        header .logo {
            width: 100px;
            height: 100px;
            background-color: blue;
        }

        header nav {
            width: 100px;
            height: 100px;
            background-color: blue;
        }

        header .user {
            width: 100px;
            height: 100px;
            background-color: blue;
            margin-left: auto;
        }

        section {
            width: 100%;
            height: 86%;
            display: flex;
            flex-direction: row;
            overflow: hidden;
        }

        section aside {
            width: 210px;
            height: 100%;
            background-color: red;
        }

        section main {
            width: 100%;
            height: 100%;
            overflow: auto;
        }

        section main .container {
            background-color: pink;
            padding: 20px;
            overflow: auto;
        }

        footer {
            width: 100%;
            height: 4%;
            background-color: turquoise;
            display: flex;
            justify-content: center;
            align-items: center;
        }
    </style>
</head>
<body>
<div id="app">
    <header>
        <div class="logo"></div>
        <nav></nav>
        <div class="user"></div>
    </header>
    <section>
        <aside></aside>
        <main>
            <div class="container">
                <div style="width: 100px; height:1200px;background-color: rgba(153,153,153,0.8)"></div>
            </div>
        </main>
    </section>
    <footer>
        <a href="https://www.xuanzishare.com/">Copyright © xuanzishare.com. All Rights Reserved.</a>
    </footer>
</div>
</body>
</html>
圣杯页面布局

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #app {
            margin: 0 auto;
            width: 100vw;
            height: 100vh;
            display: flex;
            flex-direction: column;
        }

        header, footer {
            width: 100%;
            height: 8%;
            background-color: red;
        }

        section {
            width: 100%;
            height: 84%;
            background-color: orange;
            display: flex;
            flex-direction: row;
        }

        section aside:first-child {
            width: 10%;
            height: 100%;
            background-color: pink;
        }

        section main {
            width: 80%;
            height: 100%;
            background-color: green;
        }

        section aside:last-child {
            width: 10%;
            height: 100%;
            background-color: pink;
        }
    </style>
<body>
<div id="app">
    <header></header>
    <section>
        <aside></aside>
        <main></main>
        <aside></aside>
    </section>
    <footer></footer>
</div>
</body>
版心页面布局

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #app {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
        }

        header {
            position: fixed;
            width: 100%;
            height: 50px;
            background-color: red;
        }

        section {
            width: 80%;
            height: 1800px;
            background-color: orange;
        }

        footer {
            width: 100%;
            height: 50px;
            background-color: red;
        }
    </style>
<body>
<div id="app">
    <header></header>
    <section></section>
    <footer></footer>
</div>
</body>

玄子Share-CSS3 弹性布局知识手册 23.11.30

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/221425.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—重装系统导致XFS文件系统分区丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 服务器使用磁盘柜RAID卡搭建了一组riad5磁盘阵列。服务器上层分配了一个LUN&#xff0c;划分了两个分区&#xff1a;sdc1分区和sdc2分区。通过LVM扩容的方式&#xff0c;将sdc1分区加入到了root_lv中&#xff1b;sdc2分区格式化为XFS文件系统。…

iptables的源地址、目标地址转换

目录 一、实验准备 二、配置web服务器 三、配置web防火墙网卡 四、配置客户机网卡 五、测试 1、开启防火墙功能&#xff0c;设置源地址转换&#xff0c;通过改变我客户机的地址身份为web服务器同网段来实现访问 2、通过改变目标地址&#xff08;客户机&#xff09;的地址…

力扣973. 最接近原点的 K 个点(java 排序法,大顶堆法)

Problem: 973. 最接近原点的 K 个点 文章目录 题目描述思路解题方法复杂度Code 题目描述 给定一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点&#xff0c;并且是一个整数 k &#xff0c;返回离原点 (0,0) 最近的 k 个点。 这里&#xff0c;平面…

gitLab创建新项目

1.进入git2.选择创建项目3.勾选生成readme.md文件4.邀请成员

如何借助Instagram群发工具更为精准、高效的市场拓展

在当今全球化的商业舞台上&#xff0c;Instagram作为一种强大的社交媒体平台&#xff0c;已成为跨海商家推广产品和服务的理想选择。为了更有效地利用这一平台&#xff0c;跨海商家纷纷借助Instagram群发工具&#xff0c;通过智能化的推广方式&#xff0c;实现了更为精准、高效…

17、迭代器模式(Iterator Pattern)

迭代器模式提供了顺序访问集合对象中的各种元素&#xff0c;而不暴露该对象内部结构的方法。如Java中遍历HashMap。 迭代器模式将遍历集合中所有元素的操作封装成迭代器类&#xff0c;其目的是在不暴露集合对象内部结构的情况下&#xff0c;对外提供统一访问集合的内部数据的方…

D6208单片双向马达驱动电路国产芯片,工作电源电压范围宽(4.5V~15.0V),内设保护二极管采用SOP8封装

D6208 是一块单片双向马达驱动电路&#xff0c;它使用TTL电平的逻辑信号就能控制卡式录音机和其它电子设备中的双向马达。该电路由一个逻辑部分和一个功率输出部分组成。逻辑部分控制马达正、反转向及制动&#xff0c;功率输出部分根据逻辑控制能提供100mA&#xff08;典型值&a…

nodejs微信小程序+python+PHP在线购票系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

青春挚爱-计算机

为什么选择计算机&#xff1f; 看到这个问题&#xff0c;不禁把镜头遥向十几年前的某个片刻。 一、梦想的种子 首先信仰技术是从小的梦想&#xff0c;比如科学家精神之启蒙&#xff0c;比如勇敢者探索之启蒙。 为什么课本中的科学家可以做到精忠报国&#xff0c;矢志不渝&…

备战春招——12.05算法

树、二叉树 本次主要是对树、二叉树的前中后和递归与非递归遍历以及通过这种结构完成一些操作实现。 二叉树 中序遍历 中序遍历就是中间打印出结果嘛,如下列递归实现的&#xff0c;中间取结果. /** 递归实现* Definition for a binary tree node.* struct TreeNode {* …

基于高德API实现网络geoJSON功能(整体)

代码实现&#xff1a; <script>// 3、初始化一个高德图层const gaode new ol.layer.Tile({title: "高德地图",source: new ol.source.XYZ({url: http://wprd0{1-4}.is.autonavi.com/appmaptile?langzh_cn&size1&style7&x{x}&y{y}&z{z},w…

UE小:UE5性能分析

开始录制性能追踪 要开始录制性能追踪&#xff0c;您可以简单地点击界面上的“开始录制”按钮。 查看追踪数据 录制完成后&#xff0c;点击“Trace”菜单中的“UnrealInsights”选项来查看追踪数据。 使用命令行进行追踪 如果点击录制按钮没有反应&#xff0c;您可以通过命令…

案例057:基于微信小程序的马拉松报名系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

STM32F1中断NVIC

目录 1. 中断系统 2. 中断向量表 3. NVIC基本结构 4. NVIC优先级分组 5. NVIC程序编写 5.1 中断分组 5.2 中断结构体变量 5.3 中断通道选择 5.4 抢占优先级和响应优先级配置 6. 中断程序执行 1. 中断系统 中断&#xff1a;在主程序运行过程中&#xff0…

【算法】算法题-20231206

这里写目录标题 一、非自身以外数字的乘积二、最大数三、奇数排序 一、非自身以外数字的乘积 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀…

ELK(二)—Elasticsearch安装部署

一、环境准备 1.1java环境准备&#xff08;不用安装也可以&#xff0c;Elasticsearch自带了0.0,可以直接从二看了&#xff09; Elasticsearch是用Java编写的分布式搜索引擎&#xff0c;因此在安装和运行Elasticsearch时需要Java运行时环境&#xff08;Java Runtime Environmen…

[BPE]论文实现:Neural Machine Translation of Rare Words with Subword Units

文章目录 一、完整代码二、论文解读2.1 模型架构2.2 BPE 三、过程实现四、整体总结 论文&#xff1a;Neural Machine Translation of Rare Words with Subword Units 作者&#xff1a;Rico Sennrich, Barry Haddow, Alexandra Birch 时间&#xff1a;2016 一、完整代码 这里我…

[头歌系统数据库实验] 实验3 MySQL的DDL语言

目录 第1关&#xff1a;将P表中的所有红色零件的重量增加6 第2关&#xff1a;把P表中全部红色零件的颜色改成蓝色 第3关&#xff1a;将SPJ表中由S5供给J4的零件P6改为由S3供应 第4关&#xff1a;将SPJ表中所有天津供应商的QTY属性值减少11&#xff08;用子查询方式&#x…

Linux 调试器 --- g d b 使用

目录 一&#xff1a;gdb简介 二&#xff1a;示例代码 三&#xff1a;使用 1.启动gdb 2.各种指令 <1>: 查看源代码 <2>:设置断点 <3>:查看断点信息 <4>:删除断点 <5>: run <6>:逐过程调试 <7>:逐语句调试 <8>:查…

渗透测试学习day7

文章目录 靶机&#xff1a;VaccineTask1Task2Task3Task4Task5Task6 7-9解题过程Task7Submit user flagSubmit root flag 靶机&#xff1a;Vaccine Task1 问题&#xff1a;除了SSH和HTTP&#xff0c;这个盒子上还托管了什么服务&#xff1f; ftpnmap扫一下 Task2 问题&…