div布局

本文介绍三种CSS实现三列布局的方法:使用flex布局使两边固定宽,中间自适应;使用定位和margin实现;利用overflow:hidden布局(BFC)。重点讨论了每种方法的特点和局限。

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

用css实现如下效果:有三列div,两边两列固定宽200px,中间宽自适应,三列高度被内容撑开,并且始终与最高div那列的高度保持一致。

  • 方法1-flex布局
<style>
    *{
        padding: 0;
        margin: 0;
    }
    .box{
        display: flex;
    }
    .left{
        width: 200px;
        background: rgba(59, 66, 128, 0.62);
    }
    .center{
        flex: 1;/*把所有空白位置都占据了!!!!*/
        background: rgba(59, 109, 40, 0.62);
        height: 300px;
    }
    .right{
        width: 200px;
        background: rgba(218, 145, 110, 0.89);
    }
</style>
<div class="box">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
</div>
  • 方法2-使用定位和margin的方法
<style>
    * {
        padding: 0;
        margin: 0;
    }

    h3 {
        margin: 20px 0 0;
    }

    .box {
        position: relative;
    }

    .left, .right {
        width: 200px;
        background-color: #ffe6b8;
        position: absolute;
        top: 0px;
    }

    .left {
        left: 0px;
    }

    .right {
        right: 0px;
    }

    .center {
        margin: 0px 200px;
        background-color: #eee;
    } 
</style>
<h3>实现三列宽度自适应布局</h3>
<div class="box">
    <div class="left">我是左边</div>
    <div class="right">我是右边</div>
    <div class="center">我是中间</div>
</div>

也可以是浮动过去的!(浮动和定位一样的 效果)
注:h没有办法自适应最高的那一列;对比来说,还是flex布局好一些

  • 方法3-overflow:hidden布局(BFC)
<style>
    * {
        padding: 0;
        margin: 0;
    }
    .box{

    }
    .left{
        width: 200px;
        float: left;
        background: #d29a97;
    }
    .right{
        width: 200px;
        float: right;
        background: #9bb9d2;
    }
    .center{
        overflow: hidden;
        background: #8ed292;
        height: 200px;
    }

</style>

<div class="box">
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="center">center</div>
</div>

注:html的写法:浮动的盒子要在overflow的盒子上面,顺序变了就不生效的!!!
缺点:h没有自适应

你正在学习 CSS 布局吗?是不是还不能完全掌握纯 CSS 布局?通常有两种情况阻碍你的学习: 第一种可能是你还没有理解 CSS 处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构, 然后再针对语义、结构添加 CSS。这篇文章将告诉你应该怎样把 HTML 结构化。 另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,、hspace、align="left"等等)束手无策,不知道该 转换成对应的什么 CSS 语句。当你解决了第一种问题,知道了如何结构化你的 HTML,我再给出一个列表,详细列出原来的表 现属性用什么 CSS 来代替。 结构化 HTML 我们在刚学习网页制作时,总是先考虑怎么设计,考虑那些图片、字体、颜色、以及布局方案。然后我们用 Photoshop 或者 Fireworks 画出来、切割成小图。最后再通过编辑 HTML 将所有设计还原表现在页面上。 如果你希望你的 HTML 页面用 CSS 布局(是 CSS-friendly 的),你需要回头重来,先不考虑“外观”,要先思考你的页面 内容的语义和结构。 外观并不是最重要的。一个结构良好的 HTML 页面可以以任何外观表现出来,CSS Zen Garden 是一个典型的例子。CSS Zen Garden 帮助我们最终认识到 CSS 的强大力量。 HTML 不仅仅只在电脑屏幕上阅读。你用 photoshop 精心设计的画面可能不能显示在 PDA、移动电话和屏幕阅读机上。但 是一个结构良好的 HTML 页面可以通过 CSS 的不同定义,显示在任何地方,任何网络设备上。 开始思考 首先要学习什么是"结构",一些作家也称之为"语义"。这个术语的意思是你需要分析你的内容块,以及每块内容服务的 目的,然后再根据这些内容目的建立起相应的 HTML 结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值