CSS__4__Grid布局

253 阅读20分钟

1、知识点

1.Grid Line

网格之间的分隔线

2.Grid Track
两个相邻网格线之间的空间
3.Grid Cell
相邻的两行和两列网格线之间的空间
4.Grid Area
四条网格线包围成的田字空间
5.Grid 属性列表:
Grid 容器属性列表全部属性:
display:
grid-template-columns
grid-template-areas
grid-template
grid-column-gap
grid-gap
justify-items
align-items
justify-content
align-content
grid-auto-columns
grid-auto-rows
grid-auto-flow
grid

Grid items的全部属性
grid-column-start
gird-column-end
grid-row-start
grid-row-end
grid-column
grid-row
grid-area
justify-self
align-self

display:
将元素定义为grid容器
并为其内容建立新的网格格式化上下文(grid formatting context)
grid: 生成一个块级(block-level)网格
inline-grid: 生成一个行级(inline-level)网格
subgrid 从他的父(grid)网格列表获取他的行/列的大小,而不是指定自己的大小

grid-tempalte-columns: 10px 10px auto 10px;
//设置网格的宽度

grid-template-rows: 10px 10px auto;
//设置网的高度

grid-tempalte-columns: 1fr 1fr;
//两列每列各占50%;

grid-tempalte-columns: 1fr 1fr 50px;
//前两列各占出去50px的50%

grid-template-areas:
//通过引用grid-area属性指定的网格区域的名称来定义网格模板
从夫网格区域的名称导致内容扩展到这些单元格
点号表示一个空单元格
语法本身提供了网格结构的客观化

.item-1{
grid-area:header;
}
.item-2{
grid-area:left;
}
.item-3{
grid-area:right;
}
.item-4{
grid-area:footer;
}

gird-template-areas:
"header header header"
"left . right"
"footer footer footer"


grid-template:grid-template-rows,grid-template-columns,grid-template-area的简写

grid-columns-gap,grid-row-gap
//指定网格线的大小
grid-columns-gap: 10px;
rid-row-gap: 10px;

grid-gap: grid-columns-gap,gris-row-gap的缩写

justify-items
//沿着行轴方向的对齐方式
start: 左对齐
end: 右对齐
center: 中间对齐
stretch: 伸展沾满整行

align-items:
//沿着列轴方向的对齐方式
start: 顶端对齐
end: 底部对齐
center:中间对齐
stretch: 伸展占满整列

justify-content:
//容器内网格的水平对齐方式
start: 左对齐
end: 右对齐
center: 居中对齐
stretch: 扩展沾满
space-around: 列两边都隔开(margin-left,margin-right),列的左右间隔是一样的,两列之间的间隔是*2
space-between: 列之间隔开
space-evenly: 列两边都隔开(margin-left,margin-right),每个缝隙都是一样大小的


align-content:
//容器内玩个的垂直对齐方式
start:顶端对齐
end: 低端对齐
center: 中间对齐
stretch: 伸展对齐
space-around: 行两边都隔开(margin-top,margin-top),行的上下间隔是一样的,两行之间的间隔是*2
space-between: 行之间隔开
space-evenly: 行两边都隔开(margin-top,margin-top),每个缝隙都是一样大小的

grid-auto-columns/grid-auto-rows
自动生成的网格宽高

grid-auto-flow
用于控制没有显示指明网格上的item放置的位置
row: 依次填充每行,按需求添加新行
column: 依次填充每列,按需求添加列
dense: 后面的小块的item可以填充到前面的空位置中

item属性:
grid-column-start: 水平方向从哪格开始
grid-column-end: 水平方向从哪格结束
grid-rows-start: 垂直方向从哪格开始
grid-rows-end: 垂直方向从哪格结束
grid-column: grid-column-start,grid-column-end的缩写
grid-rows:grid-rows-start,grid-rows-rows的缩写
grid-area:grid-column-start,grid-column-end,grid-rows-start,grid-rows-rows的缩写

justify-self:
item内部元素的水平对齐方式
start: 水平方向左对齐
end: 水平方向右对齐
center:水平方向居中对齐
stretch: 水平方向伸展对齐


align-self:
//item内部元素垂直对齐方式
start: 垂直方向上端对齐
end: 垂直方向下端对齐
center: 垂直方向中间对齐
stretch: 垂直填充


2、实例

<style>   
 body {
        width: 100%;
        height: 50%;
    }
    .container1 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 30% 40% 10%;
        grid-template-rows: 20% 40%;
        background-color: #F2F2F2;
    }

    .container1 .item {
        border: 1px solid red;
    }
    </style>
    <h2>1.grid-template-columns/grid-template-rows</h2>
    <p>
        使用空格分割多个值来定义网格的列和行的大小.这些值表示轨道的大小
    </p>
    <div class="container1">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
    </div>

    <style>
    .container2 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 200px 1fr 1fr;
        grid-template-rows: 20% 40%;
        background-color: #F2F2F2;
    }

    .container2 .item {
        border: 1px solid red;
    }
    </style>
    <h2>2.grid-auto-columns/grid-auto-rows</h2>
    <p></p>
    <div class="container2">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
    </div>

    <style>
    .container3 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 50px 50px 50px 50px;
        grid-template-rows: 1fr 1fr 1fr;
        grid-template-areas: "header header header header" "main main . sidebar" "footer footer footer footer"
    }

    .container3 .item {
        border: 1px solid red;
    }

    .container3 .item-1 {
        grid-area: header;
    }

    .container3 .item-2 {
        grid-area: main;
    }

    .container3 .item-3 {
        grid-area: sidebar;
    }

    .container3 .item-4 {
        grid-area: footer;
    }
    </style>
    <h2>3.grid-area</h2>
    <p>指定网格区域的名称来定义网格模板(属性:grid-template-areas;区域名:grid-areas)</p>
    <div class="container3">
        <div class="item item-1">header</div>
        <div class="item item-2">main</div>
        <div class="item item-3">sidebar</div>
        <div class="item item-4">footer</div>
    </div>

    <style>
    .container4 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 1fr 1fr 1fr;
        grid-template-rows: 1fr 1fr;
        background-color: #F2F2F2;
        grid-column-gap: 5px;
        grid-row-gap: 5px;
    }

    .container4 .item {
        border: 1px solid red;
    }
    </style>
    <h2>4.grid-column-gap/grid-row-gap</h2>
    <div class="container4">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
    </div>

    <style>
    .container5 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 1fr 1fr 1fr;
        grid-template-rows: 1fr 1fr;
        background-color: #F2F2F2;
        grid-gap: 10px;
    }

    .container5 .item {
        border: 1px solid red;
    }
    </style>
    <h2>5.grid-gap: 10px</h2>
    <h3>1fr:(百分比)</h3>
    <div class="container5">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
    </div>

    <style>
    .container6 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 1fr 1fr 1fr;
        grid-template-rows: 1fr 1fr;
        background-color: #F2F2F2;
        grid-gap: 10px;
    }

    .container6-1 {
        justify-items: left;
    }

    .container6-2 {
        justify-items: right;
    }

    .container6-3 {
        justify-items: center;
    }

    .container6-4 {
        justify-items: stretch;
    }

    .container6-1 .item,
    .container6-2 .item,
    .container6-3 .item,
    .container6-4 .item {
        border: 1px solid red;
    }
    </style>
    <h2>6.justify-items</h2>
    <p>网格内容水平轴对齐方式:</p>
    <p>start:左端对齐</p>
    <div class="container6 container6-1">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>end:右端对齐</p>
    <div class="container6 container6-2">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>center: 居中对齐</p>
    <div class="container6 container6-3">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>stretch: 伸展对齐</p>
    <div class="container6 container6-4">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>

    <style>
    .container7 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 1fr 1fr 1fr;
        grid-template-rows: 1fr 1fr;
        background-color: #F2F2F2;
        grid-gap: 10px;
    }

    .container7-1 {
        align-items: start;
    }

    .container7-2 {
        align-items: end;
    }

    .container7-3 {
        align-items: center;
    }

    .container7-4 {
        align-items: stretch;
    }

    .container7 .item {
        border: 1px solid red;
    }
    </style>
    <h2>7.align-items</h2>
    <p>网格内容垂直轴对齐方式:</p>
    <p>start:上端对齐</p>
    <div class="container7 container7-1">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>end:下端对齐</p>
    <div class="container7 container7-2">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>center: 居中对齐</p>
    <div class="container7 container7-3">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>stretch: 伸展对齐</p>
    <div class="container7 container7-4">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>

<style>
    .container8 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 200px 200px 200px;
        grid-template-rows: 1fr 1fr;
        background-color: #F2F2F2;
        grid-gap: 10px;
    }

    .container8-1 {
        justify-content: start;
    }

    .container8-2 {
        justify-content: end;
    }

    .container8-3 {
        justify-content: center;
    }

    .container8-4 {
        justify-content: stretch;
    }

    .container8-5 {
        justify-content: space-around;
    }

    .container8-6 {
        justify-content: space-between;
    }

    .container8-7 {
        justify-content: space-evenly;
    }


    .container8 .item {
        border: 1px solid red;
    }
    </style>
    <h2>8.justify-content</h2>
    <p>网格水平轴对齐方式(网格总大小可能小于父容器的大小):</p>
    <p>start:左端对齐</p>
    <div class="container8 container8-1">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>end:右端对齐</p>
    <div class="container8 container8-2">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>center: 居中对齐</p>
    <div class="container8 container8-3">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>stretch: 伸展对齐</p>
    <div class="container8 container8-4">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>space-around: 网格之间均等间隙,两端间隙减半</p>
    <div class="container8 container8-5">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>space-between: 网格之间相等间隙,两端无间隙</p>
    <div class="container8 container8-6">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>
    <p>space-evenly: 网格之间间隙想的,包括两端</p>
    <div class="container8 container8-7">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
    </div>

    <style>
    .container9 {
        width: 50%;
        height: 50%;
        display: inline-grid;
        grid-template-columns: 200px 200px 200px;
        grid-template-rows: 20px 20px;
        background-color: #F2F2F2;
        grid-gap: 10px;
    }

    .container9-1 {
        align-content: start;
    }

    .container9-2 {
        align-content: end;
    }

    .container9-3 {
        align-content: center;
    }

    .container9-4 {
        align-content: stretch;
    }

    .container9-5 {
        align-content: space-around;
    }

    .container9-6 {
        align-content: space-between;
    }

    .container9-7 {
        align-content: space-evenly;
    }


    .container9 .item {
        border: 1px solid red;
    }
    </style>
    <h2>9.align-content</h2>
    <p>网格垂直轴对齐方式(网格总大小可能小于父容器的大小):</p>
    <p>start:上端对齐</p>
    <div class="container9 container9-1">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>
    <p>end:下端对齐</p>
    <div class="container9 container9-2">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>
    <p>center: 居中对齐</p>
    <div class="container9 container9-3">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>
    <p>stretch: 伸展对齐</p>
    <div class="container9 container9-4">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>
    <p>space-around: 网格之间均等间隙,两端间隙减半</p>
    <div class="container9 container9-5">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>
    <p>space-between: 网格之间相等间隙,两端无间隙</p>
    <div class="container9 container9-6">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>
    <p>space-evenly: 网格之间间隙想的,包括两端</p>
    <div class="container9 container9-7">
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-1">
            <div>222</div>
        </div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">111</div>
        <div class="item item-4">111</div>
    </div>

    <style>
    .container10 {
        width: 50%;
        height: 50%;
        display: grid;
        background-color: #F2F2F2;
        grid-template-columns: 60px 90px;
        /* 定义行单位的宽度  */
        grid-template-rows: 60px 90px;
        /* 定义高单位的宽度   */
        grid-gap: 5px;
    }

    .container10 .item {
        border: 1px solid red;
    }

    .container10 .item-1 {
        grid-column: 1/2;
        grid-row: 2/3;
    }

    .container10 .item-2 {
        grid-column: 5/6;
        grid-row: 2/3;
    }
    </style>
    <h2>10.grid-auto-columns/grid-auto-rows</h2>
    <p>
        指定自动生成的网格轨道的大小
    </p>
    <div class="container10">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
    </div>

    <style>
    .container11 {
        width: 400px;
        height: 200px;
        display: grid;
        background-color: #F2F2F2;
        grid-auto-columns: 60px 60px 60px 60px 60px;
        /* 定义行单位的宽度  */
        grid-template-rows: 60px 60px;
        /* 定义高单位的宽度   */
    }

    .container11-1 {
        grid-auto-flow: column;
    }

    .container11-2 {
        grid-auto-flow: row;
    }

    .container11-3 {
        grid-auto-flow: dense;
    }

    .container11 .item {
        border: 1px solid red;
        box-sizing: border-box;
    }

    .container11 .item-1 {
        grid-column: 1;
        grid-row: 1 / 3;
    }

    .container11 .item-5 {
        grid-column: 5;
        grid-row: 1 / 3;
    }
    </style>
    <h2>11.grid-auto-flow</h2>
    <p>
        如果没有指定放置位置,放置算法会自动放置这些项目
    </p>
    <p>
        row: 一次填充每行,根据需要添加新行
    </p>
    <div class="container11 container11-1">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">444</div>
        <div class="item item-5">555</div>
    </div>
    <p>
        column: 一次填充每列,根据粗腰添加新列
    </p>
    <div class="container11 container11-2">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">444</div>
        <div class="item item-5">555</div>
    </div>
    <p>
        dense: 后面出现比较小的item,则尝试在网格中填充
    </p>
    <div class="container11 container11-3">
        <div class="item item-1">111</div>
        <div class="item item-2">222</div>
        <div class="item item-3">333</div>
        <div class="item item-4">444</div>
        <div class="item item-5">555</div>
    </div>

    <style>
    .container12 {
        width: 240px;
        height: 240px;
        display: grid;
        background-color: #F2F2F2;
        grid-template-columns: 60px 60px 60px 60px;
        grid-template-rows: 60px 60px 60px 60px;
    }

    .container12 .item {
        border: 1px solid red;
        box-sizing: border-box;
    }

    .container12 .item-1 {
        grid-column-start: 2;
        grid-column-end: 4;
        grid-row-start: 2;
        grid-row-end: 4;
    }
    </style>
    <h2>12.grid-column-start/grid-column-end/grid-row-start/grid-row-end</h2>
    <p>
        定义item的具体位置(水平开始/水平结束/垂直开始/垂直结束)
    </p>
    <div class="container12">
        <div class="item item-1">111</div>
    </div>

    <style>
    .container13 {
        width: 240px;
        height: 240px;
        display: grid;
        background-color: #F2F2F2;
        grid-template-columns: 60px 60px 60px 60px;
        grid-template-rows: 60px 60px 60px 60px;
    }

    .container13 .item {
        border: 1px solid red;
        box-sizing: border-box;
    }

    .container13 .item-1 {
        grid-column: 2;
        grid-row: 2;
    }
    </style>
    <h2>13.grid-column/grid-row: grid-column-start/grid-column-end/grid-row-start/grid-row-end简写</h2>
    <p>
        定义item的具体位置(水平开始/水平结束/垂直开始/垂直结束)
    </p>
    <div class="container13">
        <div class="item item-1">111</div>
    </div>

    <style>
    .container14 {
        width: 240px;
        height: 240px;
        display: grid;
        background-color: #F2F2F2;
        grid-template-columns: 60px 60px 60px 60px;
        grid-template-rows: 60px 60px 60px 60px;
    }

    .container14 .item {
        border: 1px solid red;
        box-sizing: border-box;
    }

    .container14 .item-1 {
        grid-area: 2;
    }
    </style>
    <h2>14.grid-area: grid-column/grid-row简写</h2>
    <p>
        定义item的具体位置(水平开始/水平结束/垂直开始/垂直结束)
    </p>
    <div class="container14">
        <div class="item item-1">111</div>
    </div>

    <style>
.container15 {
        width: 240px;
        height: 240px;
        display: grid;
        background-color: #F2F2F2;
        grid-template-columns: 60px 60px 60px 60px;
        grid-template-rows: 60px 60px 60px 60px;
    }

    .container15 .item {
        border: 1px solid red;
        box-sizing: border-box;
        grid-column-start: 2;
        grid-column-end: 4;
        grid-row-start: 2;
        grid-row-end: 4;
    }

    .container15-1 .item-1 {
        justify-self: start;
    }

    .container15-2 .item-1 {
        justify-self: end;
    }
}
.container15-3 .item-1 {
    justify-self: center;
}
.container15-4 .item-1 {
    justify-self: stretch;
}
    </style>
    <h2>15.justify-self</h2>
    <p>
        item内容水平对齐方式
    </p>
    <p>start: item内容水平右对齐</p>
    <div class="container15 container15-1">
        <div class="item item-1">111</div>
    </div>
    <p>end: item内容水平右对齐</p>
    <div class="container15 container15-2">
        <div class="item item-1">111</div>
    </div>
    <p>center: item内容水平左对齐</p>
    <div class="container15 container15-3">
        <div class="item item-1">111</div>
    </div>
    <p>stretch: item内容水平居中对齐</p>
    <div class="container15 container15-4">
        <div class="item item-1">111</div>
    </div>

    <style>
.container16 {
        width: 240px;
        height: 240px;
        display: grid;
        background-color: #F2F2F2;
        grid-template-columns: 60px 60px 60px 60px;
        grid-template-rows: 60px 60px 60px 60px;
    }

    .container16 .item {
        border: 1px solid red;
        box-sizing: border-box;
        grid-column-start: 2;
        grid-column-end: 4;
        grid-row-start: 2;
        grid-row-end: 4;
    }

    .container16-1 .item-1 {
        align-self: start;
    }

    .container16-2 .item-1 {
        align-self: end;
    }
}
.container16-3 .item-1 {
    align-self: center;
}
.container16-4 .item-1 {
    align-self: stretch;
}
    </style>
    <h2>16.align-self</h2>
    <p>
        item内容垂直对齐方式
    </p>
    <p>start: item内容垂直右对齐</p>
    <div class="container16 container16-1">
        <div class="item item-1">111</div>
    </div>
    <p>end: item内容垂直右对齐</p>
    <div class="container16 container16-2">
        <div class="item item-1">111</div>
    </div>
    <p>center: item内容垂直左对齐</p>
    <div class="container16 container16-3">
        <div class="item item-1">111</div>
    </div>
    <p>stretch: item内容垂直居中对齐</p>
    <div class="container16 container16-4">
        <div class="item item-1">111</div>
    </div>