其实圣杯布局和双飞翼布局实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局。它们实现的效果都是一样的,差别在于其实现的思想。

一、圣杯布局

html代码中,将重要的内容middle放在container的最前面,然后是left、right

1、将三者均设置

float:left

2、将middle的宽度设置为

width:100%;

使得middle占满一行

3、将left放在middle所在行的最左边,给left设置

margin-left:-100%;

4、left覆盖了middle内容的最左端,此时给container设置

padding:0 100px;

5、将left填充container最左边的空白部分,为left设置

position:relative;
left:-100px;

6、同理先给right设置

margin-left:-100px;

7、然后给right添加

position:relative;
right:-100px;

实现圣杯布局的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>圣杯布局</title>
<meta name="description" content="">
<meta name="keywords" content="">
<style>
html,body{
margin:0;
padding:0;
}
.container{
border:1px solid;
padding:0 100px;
width:500px;
}
.container:after{
content:'';
display: block;
clear:both;
height: 0;
}
.main{
width:100%;
height:300px;
background-color: red;
float:left;
}
.aside{
width:100px;
height:100px;
background:blue;
float:left;
position: relative;
left:-100px;
margin-left:-100%;
}
.extra{
width:100px;
height:100px;
float:left;
background:yellow;
position: relative;
left:100px;
margin-left:-100px;
}
</style>
</head>
<body>
<div class="container">
<div class="middle"></div>
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>

二、双飞翼布局

双飞翼布局与圣杯布局不同的是,在中间重要的内容块里面再嵌套了一个div用于放内容,然后设置该div的margin,来达到三栏式的效果。

1、将三者均设置

float:left

2、将middle的宽度设置为

width:100%;

使得middle占满一行

3、将left放在middle所在行的最左边,给left设置

margin-left:-100%;

4、将right放到middle所在行的最右变,给right设置

margin-left:-100px;

5、middle的一部分给left和right覆盖了,给middle中添加

<div class="wrap"></div>

6、然后设置wrap

margin:0 110px;

双飞翼的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>双飞翼布局</title>
<meta name="description" content="">
<meta name="keywords" content="">
<style>
html,body{
margin:0;
padding:0;
}
.container{
border:1px solid;
width:500px;
}
.container:after{
content:'';
display: block;
clear:both;
height: 0;
}
.middle{
width:100%;
height:300px;
float:left;
}
.middle .wrap{
background:pink;
height:300px;
margin-left: 100px;
margin-right: 100px;
}
.left{
width:100px;
height:100px;
background:blue;
float:left;
margin-left:-100%;
}
.right{
width:100px;
height:100px;
float:left;
background:yellow;
margin-left:-100px;
}
</style>
</head>
<body>
<div class="container">
<div class="middle">
<div class="wrap"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>

三、两个布局的异同

  • 1.两种布局方式都是把主列放在文档流最前面,使主列优先加载;
  • 2.两者在实现上的相同点在于都让三列浮动,然后通过负外边距形成三列布局;
  • 3.两种布局方式的不同在于如何处理中间主列的位置:圣杯布局是利用父容器的左右内边距定位;双飞翼布局是把主列嵌套在div后利用主列的左右外边距定位。

CSS布局之圣杯布局和双飞翼布局的更多相关文章

  1. CSS圣杯布局、双飞翼布局详解

    三栏布局中,经典中的经典应该就是圣杯布局.双飞翼布局没跑了.双飞翼布局和圣杯布局其实是一样的,只不过在写法上有些不同,其布局都是左右固定宽度,中间宽度自适应. 先熟悉一下圣杯布局.双飞翼布局中的特点: ...

  2. 【CSS】 布局之圣杯布局

    在看众多大神的css布局指南时,经常看到一个布局:圣杯布局(也有称为双飞翼布局的).今天我们也来剖析一下. 其实,对于众多css布局,我们只要明确理解了3种技术,那么基本上大多数布局都难不倒我们了: ...

  3. CSS布局 -- 圣杯布局 & 双飞翼布局

    按照我的理解,其实圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应. 但在这里实现起来还是有一些区别的 [圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中 ...

  4. CSS布局经典—圣杯布局与双飞翼布局

    在我之前的博客网页整体布局完全剖析-剖完你不进来看一下么?中总结单列.两列.三列固宽与变宽布局,我还以为已经囊括了所有经典的网页布局方法了呢,当然除了CSS3的弹性盒模型没有涉及到,现在看来确实是自己 ...

  5. CSS之圣杯布局与双飞翼布局

    圣杯布局 三行等高 HTML: <!DOCTYPE html><html><head>    <meta charset="utf-8"& ...

  6. CSS经典布局-圣杯布局、双飞翼布局

    圣杯布局的来历是2006年发在a list part上的这篇文章:In Search of the Holy Grail · An A List Apart Article圣杯是西方表达“渴求之物&q ...

  7. CSS 圣杯布局 / 双飞翼布局的实现

    工作的越久,有些基础知识我们可能就逐渐淡忘了,今天我们来回顾一下css的圣杯布局和双飞翼布局, 这两个名词你可能不熟, 那三栏布局你肯定就非常熟悉了, 就是两边定宽, 中间自适应 的 布局 1 , 圣 ...

  8. css布局记录之双飞翼布局、圣杯布局

    双飞翼布局和圣杯布局是比较常用的布局方式,都是为了实现一行三列,并且两侧列固定宽度,中间列宽度自适应的效果:直接上代码记录下: <!DOCTYPE html> <html lang= ...

  9. css布局笔记(三)圣杯布局,双飞翼布局

    圣杯布局和双飞翼布局都是三列布局,两边定宽,中间自适应布局,中间栏要在放在文档流前面以优先渲染. 圣杯布局如下 <!-- 圣杯布局 --> <!DOCTYPE html> &l ...

  10. css中的圣杯布局和双飞翼布局

    圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩 ...

随机推荐

  1. PyCharm 2018最新激活码通用

    通用:Window.Mac.Ubantu都稳定有效,关键是这种激活方式不会产生其他影响 缺点:需要修改hosts文件 **1.修改hosts文件**将 0.0.0.0 account.jetbrain ...

  2. typeof 和 instanceof 区别

    typeof操作符返回一个字符串,表示未经计算的操作数的类型. 可能返回值有:"undefined"."object"."boolean". ...

  3. JQ+css3 导航栏到底部上移

    导航栏 .navigation { position: fixed; bottom: 100px; right: 100px; z-index:; } .navigation { transition ...

  4. PhpStorm中无法用post提交的解决方案

    这是一个简单的计算器,html页面: <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  5. 02.centos7上搭建hadoop集群

    接上一篇  https://www.cnblogs.com/yjm0330/p/10069224.html 一.准备工作:无密登陆 1.编辑/etc/hosts文件,分别增加 192.168.2.24 ...

  6. CDH升级 5.7.5 --> 5.13.3(tar包方式)

    博客园首发,转载请注明出处:https://www.cnblogs.com/tzxxh/p/9123231.html 一.准备 1.关闭cdh中的服务 hdfs.yarn等所有服务:关闭 cm-ser ...

  7. Navicat 报错1251连接不成功Mysql

    使用Navicat 连接数据库时候出现1251错误,解决方法. 1.首先打开mysql.exe,然后输入密码(mysql.exe可以在安装的位置搜索一下) 2.输入ALTER USER 'root'@ ...

  8. 2014年第五届蓝桥杯B组(C/C++)预赛题目及个人答案(欢迎指正)

    参考:https://blog.csdn.net/qq_30076791/article/details/50573512 第3题: #include<bits/stdc++.h> usi ...

  9. 20155210 潘滢昊 Java第三次实验

    Java第三次实验 实验内容 在IDEA中使用工具(Code->Reformate Code)把代码重新格式化 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二 ...

  10. 20155226-虚拟机与Linux之初体验

    虚拟机与Linux之初体验 虚拟机的安装 虚拟机对我来说不是很了解,但今天在安装过程中加深了我的理解.虚拟机是一个在原来系统基础上进行的又一个系统安装,可以在不影响前者的情况下完成一些其不能解决的问题 ...