圣杯布局和双飞翼布局

两种布局的由来

  • 这是需求导致。两个需求: 一,优先加载中间的盒子;二,中间盒子能自适应宽度,两边盒子不变。为了实现这样的需求,产生了这两种布局

布局思路

  • 为了满足第一个需求,所以中间的盒子必须得先写,然后,两边的盒子写在后面。同时为了满足中间盒子能够自适应,宽度需要设置为100%,然后再布局两边的盒子

圣杯布局

<style>
.main {
padding: 0 200px;
}
.middle {
width: 100%;
float: left;
min-width: 500px;
}
.left {
width: 200px; 数值只是举例
float: left;
margin-left: -100%; 这样才能与中间盒子显示为一行,移动到左边
position: relative;
left: -200px; 因为设置内边距,两边盒子也会挤到中间,所以要用定位移动
}
.right {
width: 200px; 数值只是举例
float: left;
margin-left: -200px; 这样才能与中间盒子显示为一行,移动到右边
position: relative;
left: 200px; 因为设置内边距,两边盒子也会挤到中间,所以要用定位移动
}
</style>
<div class="main">
<div class="middle"></div>
<div class="left"></div>
<div class="right"></div>
</div>

双飞翼布局

<style>
.middle {
width: 100%;
float: left;
}
.middle-in{
margin: 0 200px; 双飞翼和圣杯的差别就在这里,当middle里面再嵌套一个盒子后,就可以直接设置margin来调整宽度,而不影响外边的盒子,两边的就不用再定位了
min-width: 500px;
}
.left {
width: 200px; 数值只是举例
float: left;
margin-left: -100%; 这样才能与中间盒子显示为一行,移动到左边
}
.right {
width: 200px; 数值只是举例
float: left;
margin-left: -200px; 这样才能与中间盒子显示为一行,移动到右边
}
</style>
<div class="main">
<div class="middle">
<div class="middle-in"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</div>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 稍微了解前端的人都知道,圣杯布局和双飞翼布局是前端面试时必问的问题,因为它既能体现你懂HTML结构又能体现出你对D...
    森西悠然阅读 77,540评论 46 173
  • 在前端布局中,事实上,圣杯布局其实和双飞翼布局是一回事。它们实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应...
    风铭阅读 1,490评论 1 6
  • 圣杯布局 在html中,先把中间的主区块middle放在容器的最前面,接着是left,最后是right。这样可以先...
    Maggie_77阅读 432评论 0 0
  • 圣杯和双飞翼布局都是左右两栏宽度固定,中间部分宽度自适应。 圣杯布局 参考:http://www.alistapa...
    饥人谷_NewClass阅读 729评论 0 2
  • 林间嬉戏,花下呢喃,时间这辆老旧的火车,载着我们向前。 风起波澜,命运叫板,故事里的悲伤主角,在迷宫里走散。 一生...
    一席之言阅读 219评论 0 2