CSS学习(十九)-CSS伸缩布局盒

一、理论:
1.flexbox模型基础知识
a.flexbox布局方向不可预知
b.屏幕和浏览器窗口大小发生改变可以灵活调整布局
c.指定伸缩项目可以按主轴或者侧轴按比例分配额外空间
d.指定伸缩项目沿主轴或侧轴将伸缩容器额外空间,分配到伸缩项目之前、之后或之间
e.指定如何将垂直元素布局轴的额外空间分布到该元素周围
f.控制元素在页面上的布局方向
g.按照不同于DOM所指定的方式对屏幕上的元素重新排序
2.flexbox模型术语
a.主轴和侧轴 伸缩项目主要沿着这条轴布局,方向取决于justify-content属于 其值若为column为纵向 否则为横向
b.主轴起点、主轴终点:伸缩项目自主轴起点开始,至主轴终点结束
c.侧轴、侧轴方向:与主轴垂直的称作侧轴,侧轴是侧轴方向的延伸
d.侧轴起点、侧轴终点:伸缩项目的侧面内容由侧轴起点起,至侧轴终点止
e.侧轴长度、侧轴长度属性:由哪一个方向对着侧轴决定,是width或hegiht属性
3.伸缩容器、伸缩项目:
a.通过display属性显式地给一个元素设置为flex或inline-flex,即把容器变作伸缩容器
4.伸缩容器的属性:
a.伸缩流方向:flex-direction(默认为行)
b.伸缩行换行:默认为nowrap
c.伸缩方向与换行:定义伸缩容器的主轴与侧轴
d.主轴对齐:设置伸缩容器当前行伸缩项目在主轴方向的对齐方式,指定如何在伸缩项目之间分布伸缩容器的额外空间
e.堆栈伸缩行:控制伸缩项目在布局轴的堆放方式
5.伸缩项目的属性:
a.显示顺序 改变dom文档的先后顺序,通过此属性对项目进行排序组合
b.侧轴对齐
1)align-items 设置伸缩容器中包括匿名伸缩项目的所有项目的对齐方式
2)align-self
用来在单独的伸缩项目上覆写默认的对齐方式
3)伸缩性 定义伸缩项目可改变它们的宽度或高度填补可用的空间
6.伸缩行
a.flex-wrap 每个伸缩行至少包含一个伸缩项目
7.伸缩容器设置 display
a.box 设置为块伸缩容器
b.inline-fox 设置为内联级伸缩容器
c.horizontal 伸缩项目在伸缩容器中从左到右在一条水平线上排列显示
d.vertical 伸缩项目在伸缩项目中从上到下在一条垂直线上排列显示
e.inline-axis 伸缩项目沿着内联轴排列显示
f.block-axis 伸缩项目沿着块轴排列显示
8.布局顺序
a.box-direction 
1)normal 正常显示
2)reverse 反向显示
9.伸缩换行 box-lines
1)single 伸缩容器的所有伸缩项目一行或一列显示
2)multiple 指定伸缩容器多行或多列显示伸缩项目
10.主轴对齐 box-pack
a.start 伸缩项目向一行的起始位置靠齐
b.end 伸缩项目向一行的结束位置靠齐
c.center 伸缩项目向中间位置靠齐
d.justify 伸缩项目会平均分布在一行里
11.侧轴对齐 box-align
a.start 伸缩项目顶部边缘放置在伸缩容器的顶端,伸缩容器
b.end 与start值相反,所有伸缩项目底部边缘放置在伸缩容器底端,伸缩容器额外空间放置在伸缩项目底部
c.center 伸缩项目紧靠在,垂直居中于伸缩容器。伸缩容器额外的空间平均分配在伸缩项目的顶部和底部
d.baseline 伸缩项目根据它们的基线对齐,伸缩容器额外的空间可前后显示
e.stretch 伸缩项目填充整个伸缩容器
12.伸缩性box-flex
a.box-flex 可以灵活地控制伸缩项目的宽度来填充伸缩容器额外的空间,解决了传统web设计中习惯使用百分比定义伸缩布局的弊端

二、实践:

1.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" media="screen">
        *{
            margin: 0;
            padding: 0;
        }
        body>div{
            border:1px solid #ccc;
            margin:20px;
            padding:10px;
        }
        div>div{
            background-color: #123589;
            border:1px solid #a6f5f3;
            width:100px;
            height:100px;
            text-align: center;
            line-height: 100px;
        }
        .box{
            display: -moz-box;
            display: -webkit-box;

        }
        .inline-box{
            display:-moz-inline-box;

        }
    </style>
</head>
<body>
<div class="box">
    <div>A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
</div>
<div class="inline-box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
</div>
</body>
</html>
2.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" media="screen">
        *{
            margin:0;
            padding: 0;
        }
        body>div{
            border:1px solid #0055cc;
            margin: 20px;
            padding: 10px;
        }
        div > div{
            border:1px crimson #f36;
        }
        .box{
            display:-moz-box;
            display: -webkit-box;
            display: box;
        }
        .box-horizontal{
            -moz-box-orient:horizontal;
            -webkit-box-orient: horizontal;
            box-orient:horizontal;
        }
        .box-vertical{
            -moz-box-orient: vertical;
            -webkit-box-orient: vertical;
            box-orient:vertical;
        }
        .box-inline-axis{
            -moz-box-orient: inline-axis;
            -webkit-box-orient: inline-axis;
            box-orident:inline-axis;
        }
        .box-block-axis{
            -moz-box-orient: block-axis;
            -webkit-box-orient: block-axis;
            box-orident:block-axis;
        }
    </style>
</head>
<body>
<div class="box box-horizontal">
    <div>A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
</div>
<div class="box box-vertical">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
</div>
<div class="box box-inline-axis">
    <div>1-1</div>
    <div>2-1</div>
    <div>3-1</div>
    <div>4-1</div>
</div>
<div class="box box-block-axis">
    <div>1a</div>
    <div>2a</div>
    <div>3a</div>
    <div>4a</div>
</div>
</body>
</html>
3.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" media="screen">
        *{
            margin:0;
            padding: 0;
        }
        body>div{
            border:1px solid #0055cc;
            margin: 20px;
            padding: 10px;
        }
        div > div{
            border:1px crimson #f36;
        }
        .box{
            display:-moz-box;
            display: -webkit-box;
            display: box;
        }
        .box-horizontal{
            -moz-box-orient:horizontal;
            -webkit-box-orient: horizontal;
            box-orient:horizontal;
            width:250px;
        }
        .box-vertical{
            -moz-box-orient: vertical;
            -webkit-box-orient: vertical;
            box-orient:vertical;
            height:250px;
        }
        .box-direction-reverse{
            -moz-box-direction: reverse;
            -webkit-box-direction: reverse;
            box-direction:reverse;
        }
    </style>
</head>
<body>
<div class="box box-horizontal">
    <div>A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
</div>
<div class="box box-vertical box-direction-reverse">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
</div>
<div class="box box-inline-axis">
    <div>1-1</div>
    <div>2-1</div>
    <div>3-1</div>
    <div>4-1</div>
</div>
<div class="box box-block-axis box-direction-reverse">
    <div>1a</div>
    <div>2a</div>
    <div>3a</div>
    <div>4a</div>
</div>
</body>
</html>
4.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" media="screen">
        *{
            margin: 0;
            padding: 0;
        }
        body>div{
            border: 1px solid #0066cc;
            margin: 10px;
            width: 200px;
            height: 200px;
        }
        div > div{
            border: 1px crimson #f36;
            padding: 10px;
        }
        .box{
            display: -moz-box;
            display: -webit-box;
            display: box;

            -moz-box-pack: start;
            -webkit-box-pack: start;
            box-pack: start;
            -moz-box-align: start;
            -webkit-box-align:start;
            box-align:start;
            box-pack:start;
            -moz-box-lines:multiple;
            -webkit-box-lines:multiple;
            box-lines:multiple;
        }

        .box-horizontal{
            -moz-box-orient: horizontal;
            -webkit-box-orient:horizontal;
            box-orient:horizontal
        }

        .box-vertical{
            -moz-box-orient:vertical;
            -webkit-box-orient:vertical;
            box-orient:vertical;
        }
    </style>
</head>
<body>
<div class="box box-horizontal">
    <div>A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
    <div>E</div>
    <div>F</div>
    <div>G</div>
    <div>H</div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
</div>

<div class="box box-vertical">
    <div>A1</div>
    <div>B1</div>
    <div>C1</div>
    <div>D1</div>
    <div>E1</div>
    <div>F1</div>
    <div>G1</div>
    <div>H1</div>
    <div>11</div>
    <div>21</div>
    <div>31</div>
</div>
</body>
</html>
5.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" media="screen">
        .box{
            width: 500px;
            height: 200px;
            margin:20px;
            border:1px solid #ccc;
            font-size:20px;
            font-weight: bold;
            color:#fff;
        }
        .box-item{
            background-color: #6bb2ff;
        }
        .box,.box3 > div{
            padding: 10px;
        }
        .box div:nth-child(1){
            background-color: #819321;
            line-height: 50px;
        }
        .box div:nth-child(2){
            background-color: #168929;
            line-height: 50px;
        }
        .box div:nth-child(3){
            background-color: #197332;
            line-height: 50px;
        }
        .box div:nth-child(4){
            background-color: #390289;
        }
        .box div:nth-child(5){
            background-color: #702356;
        }
        .box{
            display: -webkit-box;
            display:-moz-box;
            display:box;
            -webkit-box-align: start;
            -moz-box-align: start;
            box-align:start;
            -webkit-box-pack:start;
            -moz-box-pack:start;
            box-pack:start;
        }
        .box-orient-vertical{
            -webkit-box-orient: vertical;
            -moz-box-orient: vertical;
            box-orient:vertical;
            height: 400px;
        }
        .box3{
            display: -webkit-box;
            display:-moz-box;
            display:box;
            -webkit-box-align: start;
            -moz-box-align: start;
            box-align:start;
            -webkit-box-pack:end;
            -moz-box-pack:end;
            box-pack:end;
            width:100px;
        }
        .box4{
            display: -webkit-box;
            display:-moz-box;
            display:box;
            -webkit-box-align: start;
            -moz-box-align: start;
            box-align:start;
            -webkit-box-pack:center;
            -moz-box-pack:center;
            box-pack:center;
            background-color: #238692;
            width:100px;
        }
        .box5{
            display: -webkit-box;
            display:-moz-box;
            display:box;
            -webkit-box-align: start;
            -moz-box-align: start;
            box-align:start;
            -webkit-box-pack:justify;
            -moz-box-pack:justify;
            box-pack:justify;
            background-color: #8f8f8f;
            width:100px;
        }
    </style>
</head>
<body>
    <div class="box box-pack-start">
        <div class="box-item">box~~1</div>
        <div class="box-item">box~~2</div>
        <div class="box-item">box~~3</div>
        <div class="box-item">box~~4</div>
        <div class="box-item">box~~5</div>
    </div>
    <div class="box box-pack-start box-orient-vertical">
        <div class="box-item">~~1</div>
        <div class="box-item">~~2</div>
        <div class="box-item">~~3</div>
        <div class="box-item">~~4</div>
        <div class="box-item">~~5</div>
    </div>
    <div class="box3 box-pack-start box-orient-vertical">
        <div class="box-item">~~1</div>
        <div class="box-item">~~2</div>
        <div class="box-item">~~3</div>
        <div class="box-item">~~4</div>
        <div class="box-item">~~5</div>
    </div>
    <div class="box4 box-pack-start box-orient-vertical">
        <div class="box-item">~~1</div>
        <div class="box-item">~~2</div>
        <div class="box-item">~~3</div>
        <div class="box-item">~~4</div>
        <div class="box-item">~~5</div>
    </div>
    <div class="box5 box-pack-start box-orient-vertical">
        <div class="box-item">~~1</div>
        <div class="box-item">~~2</div>
        <div class="box-item">~~3</div>
        <div class="box-item">~~4</div>
        <div class="box-item">~~5</div>
    </div>
</body>
</html>
6.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" media="screen">
        *{
            margin: 0;
            padding: 0;
        }
        body{
            color:#8f8f8f;
            font-size:20px;
        }
        .box-flex{
            width:910px;
            background: gray;
            margin:100px;
            display:-webkit-box;
            display:-moz-box;
            display:box;
        }
        .box-flex p:first-child{
            background: darkgreen;
            -moz-box-flex:1;
            -webkit-box-flex:1;
            box-flex:1;
        }
        .box-flex p:last-child{
            background: orange;
            -moz-box-flex:2;
            -webkit-box-flex:2;
            box-flex:2;
        }
    </style>
</head>
<body>
    <div class="box-flex">
        <p>
            我想吃一盘红烧肉~
        </p>
        <p>
            没有红烧肉,排骨我也很想吃~
        </p>
    </div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值