CSS什么是圣杯布局?

在CSS中,圣杯布局是指两边盒子宽度固定,中间盒子自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染;三栏全部使用“float:left”浮动,并配合left和right属性。

CSS什么是圣杯布局?

前端的两个经典布局想必大家都有多了解–圣杯布局和双飞翼布局,因为它既能体现你懂HTML结构又能体现出你对DIV+CSS布局的掌握。

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

通过缩放页面就可以发现,随着页面的宽度的变化,这三栏布局是中间盒子优先渲染,两边的盒子框子固定不变,即使页面宽度变小,也不影响我们的浏览。注意:当你缩放页面的时候,宽度不能小于700PX,为了安全起见,最好还是给body加一个最小宽度!
如果你有了那么一点理解以后,我们来看看圣杯布局的实现:

注:reset部分的代码大家自行添加

立即学习“前端免费学习笔记(深入)”;

1、HTML结构:

    

Header内容区

    
        

中间弹性区

    
    
        

左边栏

    
    
        

右边栏

    
    

Footer内容区

登录后复制

有人可能会有疑惑,为什么中间的主体部分要写在最前面。因为中间盒子是要被优先渲染嘛~并且设置其自适应,也就是width:100%。

2、css样式:

header{    width: 100%;    height: 40px;    background-color: #8ecfd4;}.container{    overflow:hidden;}.middle{    width: 100%;    background-color: #f7f537;    float:left;}.left{     width: 200px;    background-color: #37f7c8;    float:left;}.right{    width: 200px;    background-color: #eb6100;    float:left;}footer{    width: 100%;     height: 30px;    background-color: #8ecfd4;}

登录后复制

此时的效果图:

CSS什么是圣杯布局?

这时中间的三栏并没有在一行内显示,原因也很明确。三栏都浮动起来了,但是middle栏的宽度设置成了100%,到时左右两边的撑不下换行显示了。

现在我们需要做的是将left栏放到左侧,right栏放到右侧。那么我们就需要css的负margin了。

3、利用负边距布局

让左边的盒子上去
.left{    margin-left:-100%;}

登录后复制

让右边的盒子上去

.right {    margin-left:-200px;}

登录后复制

此时的效果图

CSS什么是圣杯布局?

实现固比固布局

虽然现在貌似已经实现了我们想要的布局,但是在中间填充内容的时候我们还是会发现问题。这一步我们也将中间的主体部分给一个高度,方便视觉效果。

.middle{    width: 100%;    height: 200px;     background-color: #f7f537;    float:left;}.left{        width: 200px;    height: 200px;    background-color: #37f7c8;    float:left;}.right{    width: 200px;    height: 200px;    background-color: #eb6100;    float:left;}

登录后复制

CSS什么是圣杯布局?

从上面的效果图可以看出,middle栏的内容被两边的部分遮挡住的,这并不是我们想要的,所以我们的工作还得继续。

4、让中间自适应的盒子安全显示(利用父级元素设置左右内边距的值,把父级的三个子盒子往中间挤。)

.container{     padding: 0 200px;}

登录后复制

这里的200px是左右盒子的宽度。

效果如下: 

CSS什么是圣杯布局?

利用父级的内边距将盒子往中间挤

我们可以看到,左右两边的内边距是有了,但是中间盒子上的内容还是被压着。

5、左右两边分开来(给左右两个盒子加一个定位,加了定位之后左右两个盒子就可以设置left和right值。)

.left{     position: relative;     left: -200px;}.right{    position: relative;    right: -200px;}

登录后复制

看最终效果图 

CSS什么是圣杯布局?

现在我们的圣杯布局就OK啦!实现了我们要的效果,左右侧的盒子固定,中间盒子自适应,而且中间盒子的内容完全不受影响。希望对大家有帮助。

更多编程相关知识,请访问:编程学习!!

以上就是CSS什么是圣杯布局?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2883570.html

(0)
上一篇 2025年3月10日 20:20:36
下一篇 2025年3月8日 08:16:44

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • CSS布局的实用小技巧:margin负值

    负边距即margin属性的值设为负值,在CSS布局中时一个很有用的技巧。值为正的场景很常见,大家都很熟悉其表现 当margin-top、margin-left为负值的时候,会把元素上移、左移,同时文档流中的位置也发生相应变化,这点与posi…

    2025年3月10日 编程技术
    200
  • css中字体常用单位有哪些?

    css中字体常用单位有:1、px(像素),是固定大小的单位;2、em,相对长度单位,相对于父级元素的字体大小;3、rem,相对长度单位,是相对于根节点(或者是html节点)的字体大小;4、%,相对长度单位,相对于父级元素。 本教程操作环境:…

    2025年3月10日 编程技术
    200
  • css如何设置字体为微软雅黑

    css设置字体为微软雅黑的方法:可以利用font-family属性来设置,如【font-family:”微软雅黑”】或【font-family:”Microsoft YaHei”;】。 相关属…

    2025年3月10日
    200
  • css如何实现圆形头像

    css实现圆形头像的方法:可以通过直接设置img为圆形的方式来实现,如【border-radius: 30px;】。需要注意的是使用这种方式如果图片不是正方形,那么图片会被拉伸。 可以通过如下两种方式来实现: 方法一:直接设置img为圆形,…

    2025年3月10日
    200
  • css层叠样式表是什么

    css层叠样式表是一种用来表现HTML或XML等文件样式的计算机语言。css能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式。 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTM…

    2025年3月10日
    200
  • css如何设置下划线为虚线

    css设置下划线为虚线的方法:可以利用text-decoration-style属性来进行设置,如【text-decoration-style: dotted;】。text-decoration-style属性用于规定线条如何显示。 相关属…

    2025年3月10日
    200
  • “margin:0 atuo;”是什么意思?

    “margin:0 atuo;”代表的意思是“水平居中”。css margin属性设置对象外边距,如果值只有两个参数的话,第一个表示上下边距,第二个表示左右编辑;因为0 auto,表示上下边界为0,左右则根据宽度自适应相同值(即水平居中)。…

    2025年3月10日
    200
  • css怎样设置图片之间的间隔

    css设置图片之间的间隔的方法:首先新建一个html文件,并创建一个div;然后在div内使用img标签创建两张图片;最后使用margin属性设置两张图片之间的距离即可。 本教程操作环境:windows10系统、css3,本文适用于所有品牌…

    2025年3月10日 编程技术
    200
  • css如何改变文本框颜色

    css改变文本框颜色的方法:可以利用border-color属性来改变文本框颜色,如【border-color:#0000ff;】。border-color属性用于设置一个元素的四个边框颜色。 相关属性: border-color属性设置一…

    2025年3月10日
    200
  • css怎么设置字体为宋体

    css设置字体为宋体的方法:可以利用font-family属性来进行设置,如【font-family: 宋体;】或【font-family: SimSun;】。font-family属性用于指定一个元素的字体。 相关属性: font &#8…

    2025年3月10日
    200

发表回复

登录后才能评论