弹性布局的多种布局应用

 1.flex弹性布局

弹性布局,又称为flex布局布局,是css3.0新增的布局方式。

                弹性布局,用来给盒模型提供最大的灵活性。

                任何一个容器,都可以被设置弹性布局。

                采用弹性布局的标签,父元素被称为flex容器,简称为“容器”;它的所有子元素自动成为容器成员,子元素称为flex项目,简称为“项目”;

flex布局的属性:

                 容器属性和项目属性.

容器默认存在两根轴线:

.                        水平方向的主轴和垂直方向的交叉轴.

<style>
        section{
            border: solid 1px red;
            height: 100px;
            display: flex;
            flex-direction: row;
            justify-content: space-evenly;
            align-items: flex-end;
        }
        .box{
            border: solid 1px blue;
            width: 100px;
            height: 50px;
        }
    </style>
</head>
<body>
    <section>
        <div class="box">第1块</div>
        <div class="box">第2块</div>
        <div class="box">第3块</div>
        <div class="box">第4块</div>
    </section>
</body>
</html>

  section{

                display: flex;                                显示布局

                 flex-direction: row;                      设置弹性布局中项目的排列方向

                justify-content: space-evenly;      项目在主轴的对齐方向  

                 align-items: flex-end;                  定义当行项目在交叉轴如何对齐      

              }

1 display: flex;  定义弹性布局 

 flex布局,会影响子元素的布局方式。

                flex布局中的元素,子元素不在参与原有的流式布局,而是参与弹性布局。

                flex中,无论是行元素还是块元素,都会按照flex的方向进行排列。

2.flex-direction: 项目在主轴的对齐方向。

注意:项目从左往右排列的时候,起始线在左端,反之则在右端。

                    值:

                        flex-start:所有的项目在起始线对齐

                        flex-end:所有的项目在终止线对齐

                        center:所有项目在中间线对齐;居中

                        space-around:项目两端间距相等,项目之间的间距相等,是项目到两端的2倍。

                        space-between:项目两端对齐,项目之间的间距相等

                        space-evenly:项目之间的间距与项目到两端的间距相等

3.justify-content: 项目在主轴的对齐方向。

 注意:项目从左往右排列的时候,起始线在左端,反之则在右端。

                    值:

                        flex-start:所有的项目在起始线对齐

                        flex-end:所有的项目在终止线对齐

                        center:所有项目在中间线对齐;居中

                        space-around:项目两端间距相等项目之间的间距相等,是项目到两端的2倍。

                        space-between:项目两端对齐,项目之间的间距相等

                        space-evenly:项目之间的间距与项目到两端的间距相等

 4.align-items: 定义当行项目在交叉轴如何对齐。

                     值:

                        center:项目在交叉轴中点对齐

                        flex-start:项目在交叉轴的起点对齐

                        flex-end:项目在交叉轴的终点对齐


2.弹性布局

<style>
        body{
            margin: 0;
        }
        section{
            width: 100%;
            height: 500px;
            border: 5px solid red;
            box-sizing: border-box;
            display: flex;
            flex-wrap: wrap;
            align-content: space-evenly;
        }
        div{
            width: 33.33%;
            height: 100px;
            background-color: cornflowerblue;
            font-size: 30px;
            text-align: center;
            line-height: 100px;
        }
        div:nth-child(2n){
            background-color: darkcyan;
        }
    </style>
|||||||||||||||||||||||||||||||||||||||||||||||
<body>
    <section>
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
        <div>9</div>
    </section>
</body>

 section{
            border: 5px solid red;
            box-sizing: border-box;        盒模型改为块模型
            display: flex;                           显示居中    
            flex-wrap: wrap;                       换行显示,第一行在上方。
            align-content: space-evenly;    轴线两端的间距与轴线之间的间距相等。    
        }

1.flex-wrap: 定义项目在主轴一行排列不下时,如何换行。

                        值:

                        nowrap:默认值,不换行

                        wrap:换行显示,第一行在上方

                        wrap-reverse:换行显示,第一行在下方

2.align-content: 定义多跟轴线在交叉轴如何对齐。如果项目只有一根轴线,则该属性不起作用。

                        值:

                        center:多跟轴线在交叉轴的中点对齐

                        flex-start:多条轴线在交叉轴的起点对齐

                        flex-end:多条轴线在交叉轴的终点对齐

                        space-around:轴线两端的间距相等轴线之间的间距相等,是轴线两端的2倍。

                        space-between:多条轴线两端对齐,轴线之间间距相等。

                        space-evenly:轴线两端的间距轴线之间的间距相等


 3弹性布局——项目属性

    <style>
        body{
            margin: 0;
        }
        section{
            width: 100%;
            height: 500px;
            background-color: rgba(255, 140, 0, 0.466);
            display: flex;
            align-items: center;
        }
        div{
            height: 100px;
            background-color: #ccdf;
            font-size: 30px;
            text-align: center;
            line-height: 100px;
        }
        /* 3 1 4 2 */
        div:nth-child(1){
            order: 2;
            background-color: #ccf;
        }
        div:nth-child(2){
            order: 4;
            background-color: #ccf;
        }
        div:nth-child(3){
            order: 1;
        }
        div:nth-child(4){
            order: 3;
        }
    </style>
</head>
<body>
    <section>
        <div>01</div>
        <div>02</div>
        <div>03</div>
        <div>04</div>
    </section>
</body>
</html>

 

 order:定义项目的排列顺序。

                    值:

                        number,默认为0,值越小越靠前。

flex-grow: 定义项目的放大比例。

                    值:

                        number,默认值为0,存在剩余空间,也不放大。

                            放大空间为主轴的剩余空间。

    flex-basis: 定义项目占据的主轴空间。

 flex-basis: 20%;         flex-basis: 定义项目占据的主轴空间。

align-self: end;    align-self: 允许当个项目有与其他的项目在交叉轴有不同的对齐方式。

4.弹性布局——缩小比例

 <style>
        *{
            margin: 0;
        }
        div{
            width: 100%;
            height: 500px;
            border: 5px solid red;
            box-sizing: border-box;
            display: flex;
        }
        p{
            width: 200px;
            height: 500px;
            font-size: 40px;
            text-align: center;
            line-height: 500px;
            background-color: darkseagreen;
        }
        p:nth-child(2n){
            background-color: #fcf;
        }
        p:nth-child(2){

            flex-shrink: 3;     !!!!!!!!
        }
    </style>
</head>
<body>
    <div>
        <p>01</p>
        <p>02</p>
        <p>03</p>
        <p>04</p>
    </div>
</body>
</html>

 感叹号中flex-shrink定义项目的缩小比例。

                值:

                        number,默认值为1,当空间不足时,该项目将缩小。

                        如果所有项目flex-shrink: 都为1,表示当空间不足时,项目将等比例缩小。

                        如果flex-shrink取值为0时,表示当空间不足时,项目不缩小。

                        flex-shrink: 属性取值越大,表示当空间不足时,项目缩小的越快,空间缩小的越厉害。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter是一种跨平台的移动应用开发框架,它使用Dart语言编写,并提供了丰富的布局控件来帮助开发者构建灵活和美观的用户界面。下面是对Flutter布局的一些理解: 1. 布局控件:Flutter提供了多种布局控件,包括容器(Container)、行(Row)、列(Column)、层叠(Stack)等等。这些控件可以嵌套使用,通过设置不同的属性和约束条件来实现各种复杂的布局效果。 2. 弹性布局:Flutter中的弹性布局使用Flexible和Expanded控件来实现。Flexible控件可以根据可用空间进行伸缩,而Expanded控件则会占据剩余的可用空间。 3. 相对布局:Flutter中的相对布局使用Positioned控件来实现。通过设置相对于父容器的位置和大小,可以精确地定位子控件。 4. 约束布局:Flutter中的约束布局使用ConstrainedBox和AspectRatio控件来实现。ConstrainedBox可以设置子控件的最小和最大尺寸,而AspectRatio可以设置子控件的宽高比。 5. 响应式布局:Flutter中的响应式布局使用MediaQuery和LayoutBuilder控件来实现。MediaQuery可以获取屏幕的尺寸和方向等信息,而LayoutBuilder可以根据父容器的尺寸来调整子控件的布局。 6. 自定义布局:除了内置的布局控件,Flutter还允许开发者自定义布局控件。通过继承RenderObjectWidget类并实现performLayout方法,开发者可以创建自己的布局控件。 总的来说,Flutter提供了丰富而灵活的布局控件,可以满足各种复杂的布局需求。开发者可以根据具体的场景和需求选择合适的布局方式来构建用户界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值