CSS圣杯布局与双飞翼布局

一.圣杯布局

有些时候我们需要随着浏览器的窗口缩小,侧边栏不会改变,主体内容自适应,就会用到圣杯布局。
基本的思想;将主体和侧边栏放在一个div下
给这个div设置时用padding留下侧边栏的模块。将主体部分设置宽度自适应。再用margin-left属性和relative属性定位侧边栏。
先来看看效果图:
在这里插入图片描述

具体操作如下:

1.先设置整体框架

<div id="container">
  <header class="head">head</header>
  <article class="article">
   <section class="main">main</section>
   <aside class="left">left</aside>
   <aside class="right">right</aside>
  </article>
  <footer class="foot">foot</footer>
 </div>
 
 

2.设置主体部分样式

#container .article{
 overflow: hidden;
 padding: 0 200px;
 min-width: 300px;
 
 

1.先设置溢出隐藏
2.用padding预留侧边栏的位置
3.设置最小宽度

3.设置主要内容的样式

#container .main{
 width:100%;
 height: 500px;
 background: red;
 float: left;
}
 
 

1.将宽度设置为自适应,浮动方式设置为左浮动。这样就充满了整个主体部分的空间(先设置主体内容样式的目的是浏览器先加载主体)

4.设置侧边栏样式

当我们只设置侧边栏背景时会发现如图(截不下了)
在这里插入图片描述
这时我们将侧边栏设置为左浮动会发现
在这里插入图片描述
原因是三个div都是左浮动,但是由于空间被mainz充满,所以侧边栏被挤了下来。
所以我们用margin-left:-100%;来使第一个左侧边栏至于main的左侧,如下:
在这里插入图片描述
可以看到侧边来并没有到达预想的位置,此时,再用relative相对定位使左侧边栏左移:
在这里插入图片描述右侧设置同理。
具体代码如下:

#container aside{
  width: 190px;
  height: 500px;
  background: pink;
  position:relative;
}
#container .left{
 margin-left: -100%;
 left: -200px;
 float: left;
}
#container .right{
 margin-left: -190px;
 left:200px; 
 float: left;
 
 

1.设置浮动方式
2.设置左外边距,实现同处一行
3.使用相对定位置于预期位置

二.双飞翼布局

双飞翼布局源自UDE团队,和圣杯布局实现效果相同。但是思路有所改变。
基本思想是,在主体部分内嵌套一个div,设置这个div的外边距实现预留位置,在原有的圣杯布局上摒弃了position定位,减少了设计步骤。
具体步骤:

1.设置主体部分的样式

#container section{
 width: 100%;
 float: left;
}
 
 
  • 1
  • 2
  • 3

2.设置嵌套的div样式

.main{
 margin: 0 200px;
 height: 500px;
 background: red;
}
 
 

用margin预留左右侧边栏位置

3.设置左右两侧侧边栏样式

#container article .left{
 background: pink;
 height: 400px;
 width: 190px;
 margin-left: -100%;
 float: left; 
}
#container article .right{
 background: pink;
 height: 400px;
 width: 190px;
 margin-left: -190px;
 float: left;
}
 
 
  • 达到如下效果:
    在这里插入图片描述

    缩小浏览器,主要内容自适应如下;
    在这里插入图片描述两者的区别:
    1.双飞翼与圣杯布局相比多创建了一个div(为了控制外边距)
    2.双飞翼布局不用设置相对定位和偏移量
    3.双飞翼使用margin,圣杯布局使用padding实现空出位置
    注:实际开发中一般使用flex弹性盒子布局,但是不兼容早期IE浏览器,有些时候还需手动设置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值