flex布局实现三栏布局和水平排列

本文介绍了如何利用CSS3的flex布局创建三栏布局,其中中间栏宽度自适应。通过设置flex-grow属性,使得中间栏在剩余空间中扩展。同时,讲解了水平排列的实现,涉及到flex-wrap、align-content和justify-content属性的使用,详细阐述了这些属性的作用和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三栏布局

注:flex中的flex item(子盒子)默认沿着主轴(main axis)排序。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;默认情况下main axis从左指向右。

利用flex布局,中间模块宽度自适应。

其中flex-grow 属性用于设置或检索弹性盒子的扩展比率。当flex父盒子中的flex item即子div,其中间div设为flex-grow:1,其余两个盒子不用设置,flex-grow默认值为0,即一行中被其余两个盒子占据剩下的空间全部分配给中间盒子。

注释:如果元素不是弹性项目,则 flex 属性无效。

<!DOCTYPE html>
<html>
    <head>
<title></title>
<style>
    *{
        height: 100%;
        margin: 0;
    }
      .wrapper{
          width: 100%;
          height: 100%;
        display: flex;
    }
    
   .left{
       width: 300px;
        background-color: blue;
        text-align: center;
    }
    .main{
        background-color: red;
        flex-grow: 1;
        text-align: center;
    }
    .right{
        width: 300px;
        background-color: green;
        text-align: center;
    }
</style>
    </head>
    <body>
        <div class="wrapper">
            <div class="left">
                这是左侧
            </div>  
            <div class="main">这是中间</div>
            <div class="right">这是右侧</div>
</div>
    </body>
</html>

其实现效果如图

水平排列

flex-warp属性定义如果一条轴线排不下,如何换行。

align-centent属性定义项目在交叉轴上如何对齐。

justify-centent属性定义了项目在主轴上的对齐方式。

实现代码如下

<!DOCTYPE html>
<html>
    <head>
<title></title>
<style>
    *{
        height: 100%;
        margin: 0;
    }
      .wrapper{
          width: 100%;
          height: 100%;
        display: flex;
        align-content: space-around;
        flex-wrap: wrap;/*默认情况下,项目都排在一条线上,flex-wrap定义,如果一轴线排不下,如何换行*/
        justify-content: space-evenly;/*定义项目在主轴上的对齐方式。*/
    }
    
   .left{
       width: 300px;
        background-color: blue;
        height: 300px;
    }
    .main{
        background-color: red;
        width: 300px;
        height: 300px;
    }
    .right{
        width: 300px;
        background-color: green;
        height: 200px;
    }
    .item{
        height: 200px;
        width: 200px;
        background-color: pink;
    }
</style>
    </head>
    <body>
        <div class="wrapper">
            <div class="left">
            </div>  
            <div class="main"></div>
            <div class="right"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
</div>
    </body>
</html>

具体效果如下

有关flex布局的具体用法如下

 Flex 布局教程:语法篇 - 阮一峰的网络日志

### 使用 CSS Flexbox 创建响应式导航栏 #### 导航栏 HTML 结构 为了创建一个简单的响应式导航栏,首先定义基本的HTML结构: ```html <nav class="navbar"> <div class="logo">Logo</div> <ul class="nav-links"> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Services</a></li> <li><a href="#">Contact</a></li> </ul> </nav> ``` 此结构包含了一个`<nav>`标签作为容器,其中有一个代表网站标志的`<div>`以及一组链接列表。 #### 基础样式设置 接着应用基础CSS来美化并配置Flexbox行为: ```css .navbar { display: flex; justify-content: space-between; align-items: center; background-color: #333; padding: 10px 20px; } .logo, .nav-links li a { color: white; text-decoration: none; } ``` 这里设置了`.navbar`为弹性盒子容器,并利用`justify-content``align-items`属性让其内部元素水平分布均匀且垂直居中[^1]。 #### 调整菜单项排列方式 为了让导航条目能够根据屏幕尺寸调整布局,在较小屏幕上堆叠显示而不是横向平铺,可加入如下规则: ```css .nav-links { list-style-type: none; margin: 0; padding: 0; display: flex; } @media (max-width: 768px) { .nav-links { flex-direction: column; } .nav-links li { width: 100%; text-align: center; } .nav-links li:not(:last-child){ border-bottom: 1px solid rgba(255,255,255,.2); } } ``` 当视口宽度小于等于768像素时,通过媒体查询改变`.nav-links`内的项目方向为纵向排列(`flex-direction:column`),使得各选项占据整个可用空间并居中对齐。同时给非最后一项添加下边框以区分各个链接[^2]。 #### 完成后的效果展示 最终得到的是一个既能在大屏上正常工作也能良好适应移动设备的小巧而实用的响应式导航栏组件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值