圣杯布局与双飞翼布局

圣杯布局和双飞翼布局

01圣杯布局 

  1. 先简单设置headerfooter(蓝色)width:100%;height:100px;
  2. 设置 父容器container(黄色),不设置width
    middle,left,right 均设置为float:left;
  3. middle(红色)设置width:100%;
  4. left(绿色)设置margin-left:-100%;
    right(粉色)设置margin-left:负的right(粉色)的width;
    从而把left(绿色)和right(粉色)移动到container(父容器)盒子中
  5. container(父容器)设置 padding-left和padding-right
    为left和right预留方(可以将container的左右边距设置大于left和right的宽 度,就可以在第6步使左left(绿色),右right(粉色),中middle(红色)之间有间距)
  6. leftright使用position:relative;(相对定位)
    left(绿色):负的container的padding-left的宽度;
    right(粉色):负的container的padding-right的宽度;
    定位到指定位置

    效果如下
    圣杯布局

代码如下
css

html,
body{
    margin:0;
    padding:0;
    text-align:center;
    /*防止窗口缩放太小无法正常展示*/
    min-width:500px;
}
header,
footer{
    width:100%;
    height:100px;
    margin:0 auto;
    background:blue;
}
.container{
    margin:0 auto;
    /*不设置width*/
    height: 300px;
    padding-left:200px;
    padding-right:200px;
    background:yellow;
}
.middle,
.left,
.right{
    height:300px;
    float:left;
}
.middle{
    width:100%;
    background:red;
}
.left{
    position:relative;
    width:100px;
    left:-200px;
    margin-left:-100%;
    background: green;
}
.right{
    position:relative;
    right:-200px;
    width:100px;
    margin-left:-100px;
    background:pink;
}

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圣杯布局</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
<header>头部</header>
<div class="container">
    <div class="middle">主体部分</div>
    <div class="left">左边</div>
    <div class="right">右边</div>
</div>
<footer>尾部</footer>
</body>
</html>

02双飞翼布局

  1. 先简单设置headerfooter width:100%;height:100px;
  2. 设置 main,sub, extra 均为float:left;
  3. main(红色)设置width:100%;
    main_inner(橙色)设置margin-leftmargin-right
    为sub和extra预地方
    (可以将main_inner的左右边距设置大于sub和extra的宽度,
    就可以在第4步使左sub(绿色),右extra(粉色),中内main_inner(橙色)之间有间距)

  4. sub(绿色)设置margin-left:-100%;
    extra(粉色)设置margin-left:负的extra的width;
    从而把sub和extra移动到上方去,即盖住部分main(红色)

    5.footer清除浮动 clear:both;

    效果如下
    2018-09-02_双飞翼布局

代码如下
css

html,
body{
    margin:0;
    padding:0;
    text-align:center;
    /*防止窗口缩放太小无法正常展示*/
    min-width:500px;
}
header,
footer{
    width:100%;
    height:100px;
    margin:0 auto;
    background:blue;
}
footer{
    /*清除浮动,缺点:margin失效*/
    clear:both;
    /*overflow:hidden;*/
     /*即将溢出父容器的内容隐藏*!*/
}
.main,
.sub,
.extra{
    height:300px;
    float:left;
}
.main{
    width:100%;
    background:red;
}
.main_inner{
     margin-left: 120px;
     margin-right: 120px;
    height: 300px;
    background:orange;
}
.sub{
    width:100px;
    margin-left:-100%;
    background: green;
}
.extra{
    width:100px;
    margin-left:-100px;
    background:pink;
}

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02双飞翼布局</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
<header>header</header>
<div class="main">
    <div class="main_inner">main_inner</div>
</div>
<div class="sub">sub</div>
<div class="extra">extra</div>
<footer>footer</footer>
</body>
</html>

个人理解:

圣杯和双飞翼布局都是实现两边宽度固定,中间部分可缩放的功能

相同点:

(1)三个div设置为float:left;
(2)中间部分width:100%;左右部分 分别用margin-left:-100%;margin-left:负的宽度;移动到中间。

不同点:

圣杯布局:一个大的div(container)包裹三个同级的div。
左右通过相对定位position:relative;。固定左右部分的位置。
双飞翼布局:中左右,设置为三个同级的div。“左”“右”部分覆盖在“中”部分上
中间的div嵌套一个div(main_inner)为内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值