div的布局

本文介绍多种网页布局方法,包括左右固定宽度自适应布局、中间自适应布局及垂直居中等,并探讨了不同布局方式如圣杯布局和双飞翼布局的特点。

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

左边固定宽度 右边自适应布局 两栏自适应
左侧浮动 右侧使用margin-left
<!--左边固定宽度 右边自适应布局  两栏自适应布局 -->
<!DOCTYPE html>
<html>

<head>
    <title>自适应布局</title>
    <style>
    .container {
        overflow: hidden;
        border: 1px solid red;
    }
    
    .left {
        float: left;
        width: 200px;
        height: 150px;
        background: green;
    }
    
    .right {
        margin-left: 200px;
        height: 150px;
        background: pink;
    }
    </style>
</head>

<body>
    <div class="container">
        <div class="left">固定的区域</div>
        <div class="right">自适应区域</div>
    </div>
</body>

</html>

注意父元素要使用overflow: hidden

第二种 使用双float和calc进行布局

css的代码如下

.outer {
        overflow: hidden;
        border: 1px solid red;
    }
    
    .left {
        float: left;
        width: 200px;
        background: pink;
        height: 150px;
    }
    
    .right {
        float: left;
        width: calc(100%-200px);
        height: 100px;
        background: green;
    }
左右两边宽度100 中间自适应布局
第一种解法 使用浮动和margin

需要注意的是 将middle写在最后面 这个可以保证元素在同一行

左右两侧使用浮动 中间使用margin 就可以

<style>
    * {
        margin: 0;
        padding: 0;
    }
    
    .outer {}
    
    .left,
    .right {
        width: 100px;
        height: 100px;
    }
    
    .left {
        float: left;
        background: pink;
    }
    
    .right {
        float: right;
        background: green;
    }
    
    .middle {
        height: 100px;
        background: red;
        margin: 0 100px;
    }
    </style>
</head>

<body>
    <div class="outer">
        <div class="left">固定区</div>
        <div class="right">固定区</div>
        <div class="middle">自适应区</div>
    </div>

元素垂直居中

 .outer {
        margin: auto;
        width: 500px;
        height: 100px;
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        right: 0;
    }
    这种方式的垂直居中  不适合在页面上有另一个相邻的页面页进行定位垂直  
    两者会互相影响的   会有意想不到的布局  情况

第二种元素垂直居中

.outer {
        height: 100px;
        width: 100px;
        position: absolute;
        left: 50%;
        top: 50%;
        margin-left: -50px;
        margin-top: -50px;
 }
 这种不适合在有自适应宽高的布局中进行使用
 

第三种垂直居中

.outer {
        width: 200px;
        height: 200px;
        background: green;
        position: absolute;
        left: 50%;
        /*定位父级的50% */
        top: 50%;
        transform: translate(-50%, -50%);
        /*自己的50% */
    }
    这种在ie8中不支持
弹性布局找一下 为什么失效了
        height: 300px;
        -webkit-display: flex;
        display: flex;
        -webkit-align-items: center;
        align-items: center;
        -webkit-justify-content: center;
        justify-content: center;
        border: 1px solid #ccc;
第二种解法 两边绝对定位 中间使用margin
    .left,
    .right {
        width: 100px;
        height: 100px;
    }
    
    .left {
        position: absolute;
        left: 0;
        top: 0;
        background: green;
    }
    
    .right {
        position: absolute;
        right: 0;
        top: 0;
        background: pink;
    }
    
    .middle {
        height: 100px;
        background: red;
        margin: 0 100px;
    }
第三种解法 圣杯布局

利用的是三个div进行浮动 利用margin-left的负值进行相关的移动

<!DOCTYPE html>
<html>

<head>
    <title>圣杯布局</title>
    <style>
    .container {
        height: 200px;
        background: #666;
    }
    
    .center {
        box-sizing: border-box;
        /*这只padding是为了防止内容过多  内容被两边的盒子压住*/
        padding: 0 210px;
        float: left;
        width: 100%;
        height: 200px;
        background: red;
    }
    
    .left {
        height: 200px;
        width: 200px;
        float: left;
        background: pink;
        margin-left: -100%;
    }
    
    .right {
        float: right;
        width: 200px;
        height: 200px;
        background: yellow;
        margin-left: -200px;
    }
    </style>
</head>

<body>
    <div class="container">
        <div class="center">中间</div>
        <div class="left">固定区域</div>
        <div class="right">固定区域</div>
    </div>
</body>

</html>
第四种解法 弹性布局的两栏自适应
.wrap {
        display: flex;
        width: 100%;
        height: 100%;
    }
    
    .left,
    .right {
        width: 200px;
        height: 200px;
        background: blue;
    }
    
    .center {
        flex: 1;
        height: 200px;
        background: red;
    }
    
 <div class="wrap">
        <div class="left">固定区域</div>
        <div class="center">自适应区域</div>
        <div class="right">固定区域</div>
 </div>

####双飞翼布局 第五种

和圣杯布局的区别在于中间栏div内容不被遮挡”问题的思路不一样。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>双飞翼布局</title>
    <style>
    .container {
        overflow: hidden;
    }
    .center,
    .left,
    .right {
        float: left;
        height: 200px;
    }
    .left {
        margin-left: -100%;
        background: pink;
        width: 200px;
        height: 200px;
    }  
    .right {
        margin-left: -200px;
        width: 200px;
        height: 200px;
        background: red;
    }   
    .content {
        margin: 0 220px;
    } 
    .center {
        width: 100%;
        background: yellow;
    }
    </style>
</head>

<body>
    <div class="container">
        <div class="center">
            <div class="content">中间内容</div>
        </div>
        <div class="left">固定区域</div>
        <div class="right">固定区域</div>
    </div>
</body>
</html>
双飞翼布局和圣杯布局的区别

两者都是利用margin-left的负值这个属性,只不过处理中间的内容被遮住的方法不一样

圣杯布局主要中间只有三个div 通过box-sizing: border-box进行设置padding的大小

双飞翼的布局 多了在center中多了一个div 在这个div进行设置margin 防止中间的内容被压住

你正在学习 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、付费专栏及课程。

余额充值