flex布局

Flex布局

弹性盒子布局

基本概念:首先将元素设置为display:flex; 元素会变为一个flex容器

容器内部的元素为flex元素或者叫flex项目(flex-item)

之前学过:Display:none 设置元素隐藏

Display:block;可以转换成块元素

Display:inline;  设置成行内元素

<style>
    .container {
        display: flex;
        background-color: yellow;
        width: 800px;
        height: 300px;
    }
    .item{
        width: 100px;
        /* height: 100px; */
        background-color: red;
        border: 1px solid blue;
    }
</style>
<body>
    <div class="container">
        <div class="item">123</div>
        <div class="item">456</div>
        <div class="item">789</div>
    </div>
</body>
</html>

Main axis:主轴

Cross axis:交叉轴

默认:

Flex项目在flex容器中延主轴排列

Flex项目高度适应flex容器高度(同行内元素)

设置flex容器:

Flex-direction:  设置flex项目排列方向

Jusrif-content:  flex项目主轴排列方式

Align-items:    flex项目交叉轴的排列方式

Flex-direction:

Row(默认值):主轴为水平方向,起点在左端

Row-reverse: 主轴为水平方向,起点在右端

Column:主轴为垂直方向,起点在上沿

Column-reverse:主轴为垂直方向,起点在下沿

<style>
    .container {
        display: flex;
        /* flex-direction: column;往左上方横向 */
        /* flex-direction:column-reverse; 往左下方横向*/
        /* flex-direction: row;往左边纵轴 */
        /* flex-direction: row-reverse;往右边纵轴 */
        background-color: yellow;
        width: 800px;
        height: 300px;
    }
    .item{
        width: 100px;
        /* height: 100px; */
        background-color: red;
        border: 1px solid blue;
    }
</style>
<body>
    <div class="container">
        <div class="item">123</div>
        <div class="item">456</div>
        <div class="item">789</div>
    </div>
</body>
</html>

    

 Justif-content:    、    主要用来控制flex对齐效果的。

flex-start(默认):左对齐

flex-end:右对齐

center:居中

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

space-around:每个项目两侧的间隔相等,所以项目之间的间隔比项目与边框的间隔大一倍。

<style>
    .container {
        display: flex;
        background-color: yellow;
        width: 800px;
        height: 300px;
        justify-content: flex-start;
        /* justify-content: flex-end; */
        /* justify-content: center; */
        /* justify-content: space-between; */
        /* justify-content: space-around; */
    }
    .item{
        width: 100px;
        /* height: 100px; */
        background-color: red;
        border: 1px solid blue;
    }
</style>
<body>
    <div class="container">
        <div class="item">123</div>
        <div class="item">456</div>
        <div class="item">789</div>
       
      
    </div>
</body>
</html>

 

Align-items:    

flex-start:交叉轴的起点对齐;

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

center:交叉轴的中点对齐;

stretch:(延伸)(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

<style>
    .container {
        display: flex;
        background-color: yellow;
        width: 800px;
        height: 300px;
        justify-content: flex-start;
        justify-content: space-between;
        /* align-items: flex-start; */
        /* align-items: flex-end; */
        /* align-items: center; */
        align-items: stretch;
        
    }
    .item{
        width: 100px;
        /* height: 100px; */
        background-color: red;
        border: 1px solid blue;
    }
</style>
<body>
    <div class="container">
        <div class="item">123</div>
        <div class="item">456</div>
        <div class="item">789</div>
        <div class="item">123</div>
        <div class="item">111</div>
        <div class="item">222</div>
    </div>
</body>
</html>

 

 

 

flex项目:

flex-grow:属性定义项目的放大比例,默认0,空间充足,等比例补全。

flex-shrink:定义了项目的缩小比例,默认1,即如果空间不足,该项目将缩小

flex-basis:主轴排列为宽度,交叉轴排列为高度,设置px,默认值是auto。

flex:综合上面三个样式。flex: 0 1 auto ;

align-self:flex项目的对其方式(auto、flex-start  、 flex-end 、center 、 baseline 、 stretch)

<style>
    .container {
        display: flex;
        background-color: yellow;
        width: 800px;
        height: 300px;
    }
    .item{
       
        background-color: red;
        border: 1px solid blue;
        flex-grow: 1;
    }
    .big{
        flex-grow: 3;
    }
</style>
<body>
    <div class="container">
        <div class="item">123</div>
        <div class="item">456</div>
        <div class="item big">789</div>
        <div class="item">123</div>
        <div class="item">111</div>
        <div class="item">222</div>
    </div>
</body>
</html>

 .big{

        width: 300px;

        /* 如果整个flex项目的话都是等比例缩小的话,那flex-shrink的值就越大,缩小的程度也就越大,越小 ,用的不多了解*/

        flex-shrink: 2;

    }

 .big{

        /* flex-basis的作用就是在主轴排列时设置宽度600px,不常用了解一下 */

        flex-basis:600px;

    }

<style>
    .container {
        display: flex;
        background-color: yellow;
        width: 800px;
        height: 300px;
    }
    .item{
       
        background-color: red;
        border: 1px solid blue;
        /* 设置默认值 */
        /* flex: 0 1 auto ; */    这里补充一下,0是flex-grow、1是flex-shrink、auto是flex-basis的意思。
        /* flex-shrink: 2;可以简写一下: */
        flex:1;
    
    }
    .big{
        /*   flex-basis:600px;可以简写一下: */
        flex:2;
    }
</style>
<body>
    <div class="container">
        <div class="item">123</div>
        <div class="item">456</div>
        <div class="item big">789</div>
        <div class="item">123</div>
        <div class="item">111</div>
        <div class="item">222</div>
    </div>
</body>
</html>

案例:设置一个元素在容器中垂直水平居中:

<style>
    *{
        margin: 0px;
        padding: 0px;

    }
    body,html{
        height: 100%;
    }
    .container {
        background-color: yellow;
        height: 100%;
        display:flex;
        justify-content: center;
        /* align-items: center;水平居中 */
    }
    .box{
        width: 100px;
        height: 100px;
        background-color: blue;
        /* align-self: center;=align-items: center;水平居中 */
        align-self: center;
    }
 
</style>
<body>
    <div class="container">
        <div class="box"></div>
    </div>
</body>
</html>

案例制作右侧网页的底部菜单:

</head>
<style>
    *{
        margin: 0px;
        padding: 0px;
    }
  
   .menu{
        position: fixed;
        background-color: yellow;
        bottom: 0px;
        display: flex;
        width:100%;
        height: 70px;
        align-items: center;
    }
    .sub{
        flex:1;
        text-align: center;
    }
    .sub img{
        height: 30px;

    }
 
</style>
<body>
    <div class="menu">
        <div class="sub">
            <img src="images/open.png" alt="">
            <p>首页</p>
        </div>
        <div class="sub">
            <img src="images/error.png" alt="">
            <p>首页</p>
        </div>
        <div class="sub">
            <img src="images/success.png" alt="">
            <p>首页</p>
        </div>
        <div class="sub">
            <img src="images/open.png" alt="">
            <p>首页</p>
        </div>
        <div class="sub">
            <img src="images/close.png" alt="">
            <p>首页</p>
        </div>
    </div>
    
</body>
</html>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flex布局(也称为弹性布局)是种主流的CSS布局方式,它可以方便地实现页面元素的自适应和排列Flex布局通过定义容器和子元素的属性来实现灵活的布局效果。 在Flex布局中,有两个重要的概念:容器和子元素。容器是指应用Flex布局的父元素,而子元素则是容器内部的直接子元素。 以下是Flex布局的一些主要特点和属性: 1. 容器属性: - display: flex;:将容器设置为Flex布局。 - flex-direction:指定主轴的方向,可以是row(水平方向)、column(垂直方向)、row-reverse(水平反向)或column-reverse(垂直反向)。 - justify-content:定义了子元素在主轴上的对齐方式,可以是flex-start(起始对齐)、flex-end(末尾对齐)、center(居中对齐)、space-between(两端对齐,项目之间间隔相等)或space-around(每个项目两侧的间隔相等)。 - align-items:定义了子元素在交叉轴上的对齐方式,可以是flex-start(起始对齐)、flex-end(末尾对齐)、center(居中对齐)、baseline(基线对齐)或stretch(拉伸对齐)。 - flex-wrap:定义了子元素是否换行,可以是nowrap(不换行)、wrap(换行)或wrap-reverse(反向换行)。 2. 子元素属性: - flex:指定子元素的伸缩比例,用于控制子元素在容器中的占比。 - align-self:定义了单个子元素在交叉轴上的对齐方式,可以覆盖容器的align-items属性。 以上是Flex布局的一些基本概念和属性,通过灵活地使用这些属性,可以实现各种不同的布局效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值