CSS圣杯布局和双飞翼布局的区别是什么?

区别:圣杯布局给中间div分别设置左右内边距后,将左右两个div进行定位并设置right和left属性,以便不遮挡中间div;双飞翼布局直接在中间div内部创建子div用于放置内容,在该子div里分别设置左右外边距为左右两栏div留出位置。

CSS圣杯布局和双飞翼布局的区别是什么?

本文操作环境:windows10系统、css 3、thinkpad t480电脑。

(推荐教程:CSS视频教程)

CSS中的圣杯布局和双飞翼布局

作用:

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

圣杯布局和双飞翼布局解决的问题是相同的,就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。

区别:

圣杯布局和双飞翼布局解决问题的方案在前一半是相同的,也就是三栏全部float浮动,但左右两栏加上负margin让其跟中间栏div并排,以形成三栏布局。

不同在于解决”中间栏div内容不被遮挡“问题的思路不一样:

圣杯布局,为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。

双飞翼布局,为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该子div里用margin-left和margin-right为左右两栏div留出位置。

多了1个div,少用大致4个css属性(圣杯布局中间divpadding-left和padding-right这2个属性,加上左右两个div用相对布局position: relative及对应的right和left共4个属性,一共6个;而双飞翼布局子div里用margin-left和margin-right共2个属性,6-2=4),个人感觉比圣杯布局思路更直接和简洁一点。

简单说起来就是”双飞翼布局比圣杯布局多创建了一个div,但不用相对布局了“,而不是你题目中说的”去掉relative”就是双飞翼布局“。

最终界面是一样的:

1.jpg

对比图:

2.png

圣杯布局:

优点:不需要添加dom节点

缺点:圣杯布局的缺点:正常情况下是没有问题的,但是特殊情况下就会暴露此方案的弊端,如果将浏览器无线放大时,「圣杯」将会「破碎」掉。如图:当middle部分的宽小于left部分时就会发生布局混乱。(middle

CSS圣杯布局和双飞翼布局的区别是什么?

CSS圣杯布局和双飞翼布局的区别是什么?

 当middle的宽度为大于left宽度时:

CSS圣杯布局和双飞翼布局的区别是什么?

                    圣杯布局                    #bd{                padding: 0 200px 0 180px;                height: 100px;            }            #middle{                float: left;                width: 100%;                height: 500px;                background:blue;            }            #left{                float:left;                width:180px;                height:500px;                margin-left:-100%;                background: #0c9;                position: relative;                left: -180px;            }            #right{                float: left;                width: 200px;                height: 500px;                margin-left: -200px;                background: #0c9;                position: relative;                right: -200px;            }                        
middle
left

其中:

左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置

#bd{                padding: 0 200px 0 180px;                height: 100px;            }

中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置

#left{                                position: relative;                left: -180px;            }

中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置

#right{                                position: relative;                right: -200px;            }

双飞翼布局:

优点:不会像圣杯布局那样变形

缺点是:多加了一层dom节点

CSS圣杯布局和双飞翼布局的区别是什么?

                   双飞翼布局        #center{     float:left;     width:100%;/*左栏上去到第一行*/          height:100px;     background:blue; } #left{     float:left;     width:180px;     height:100px;     margin-left:-100%;     background:#0c9;} #right{    float:left;    width:200px;    height:100px;    margin-left:-200px;      background:#0c9; } /*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/  #inside{    margin:0 200px 0 180px;     height:100px; }                    
middle
left
</html

更多编程相关知识,请访问:编程入门!!

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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 05:30:04
下一篇 2025年12月24日 05:30:20

相关推荐

  • css after是什么

    css after是CSS中的一种选择器,该选择器可用于在被选元素的内容后面插入内容,其语法如“p:after{ content:””;background-color:yellow;color:red;}”。 本文操作环境:windows7系统、Dell G3电脑、css3…

    2025年12月24日
    000
  • myeclipse css 不起作用怎么办

    myeclipse css不起作用的解决办法:首先关闭服务器;然后删除Tomcat目录中webapps下的工程文件夹和“work/Catalina/localhost”目录下的工程文件夹;最后在myeclipse中重新部署项目即可。 本教程操作环境:Windows10系统、css3&&amp…

    2025年12月24日
    000
  • css怎么设置图片不停旋转

    css设置图片不停旋转的方法:可以通过使用animation属性和transform属性来进行设置,如【-webkit-transform: rotate(360deg);animation: rotation;】。 本教程操作环境:windows10系统、css3版,该方法适用于所有品牌电脑。 (…

    好文分享 2025年12月24日
    000
  • resize不是已知的css属性?

    resize是已知的css属性。resize是CSS3中新增的一个属性,用于指定一个元素是否是由用户调整大小的;resize属性允许用户通过拖动的方式,来自由缩放元素的尺寸。 该方法适用于所有品牌的电脑。 相关推荐:《CSS3视频教程》 css resize属性 resize属性可以指定一个元素是否…

    2025年12月24日 好文分享
    000
  • css中的position是什么意思

    css中的position是规定元素的定位类型的属性。position属性定义建立元素布局所用的定位机制,任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。 环境: 本文适用于所有品牌的电脑。 (学习视频分享:css视频教程) 属性介绍: 立即学习“前端免费学习笔记…

    好文分享 2025年12月24日
    000
  • css中如何设置背景图片的大小

    css中设置背景图片的大小的方法:可以利用background-size属性来进行设置,如【background-size:80px 60px;】,【background-size】属性可以指定背景图片的宽度和高度。 本教程操作环境:windows10系统、css3版,该方法适用于所有品牌电脑。 (…

    好文分享 2025年12月24日
    000
  • css元素如何重叠?

    css元素重叠的方法:1、给元素设置负margin,负margin可以让元素的占用空间变小,后面的元素可以覆盖当前的元素;2、使用position属性,利用相对定位和绝对定位来让多个元素进行重叠。 本教程操作环境:windows10系统、css3版,该方法适用于所有品牌电脑。 CSS元素的重叠方式:…

    2025年12月24日 好文分享
    000
  • 使用HTML和CSS的新特性实现响应式布局

    除了使用媒体查询和现代CSS布局(如flexbox和grid)来创建响应式网站外,我们还可以做好某些被忽视的事情来制作响应式网站。在本文中,我们将探讨许多可用的工具(围绕HTML和CSS),从响应图像到相对较新的CSS函数,无论我们是否使用媒体查询,它们都可以正常工作。 事实上,媒体查询与这些功能一…

    2025年12月24日
    000
  • css强制文字不换行代码是什么

    css强制文字不换行代码是“div{white-space:nowrap;}”,其中white-space属性设置如何处理元素内的空白,而属性值normal就是使空白被浏览器忽略。 推荐:《css视频教程》 该方法适用于任何品牌的电脑。 css强制文字不换行实现代码 强制不换行,直接使用white-…

    2025年12月24日
    000
  • css中的空元素有哪些

    css中的空元素有:1、br;2、hr;3、img;4、input;5、link;6、meta;7、area;8、command。css规定每个元素都有display属性,且每个元素都有默认的display值。 本教程操作环境:windows10系统、css3+html5版,该方法适用于所有品牌电脑…

    2025年12月24日
    000
  • css是层叠什么表,可以使网页表现和内容分离?

    css是层叠样式表,可以使网页表现和内容分离。css样式表可以将所有的样式声明从HTML代码中移出,进行统一存放和管理;这样HTML代码中可以不包含样式代码,可以大大的减小页面的体积,加载页面时使用的时间也会大大的减少。 css是层叠样式表,可以使网页表现和内容分离。 在使用HTML定义页面效果的网…

    2025年12月24日
    000
  • css怎样让两个div重叠

    css让两个div重叠的方法:首先利用【position:absolute】属性对div设置绝对定位;然后利用z-index属性来确定哪个div在上层。z-index属性用于指定一个元素的堆叠顺序。 本教程操作环境:windows10系统、css2版,该方法适用于所有品牌电脑。 重要属性介绍: po…

    2025年12月24日
    000
  • 怎样用css实现无缝轮播图切换?

    css实现无缝轮播图切换的方法:首先使用animation属性设置要绑定到选择器的keyframes的名称、完成动画所花费的时间、动画的速度曲线、动画的播放次数;然后使用@keyframes规则创建轮播动画,指定每个关键帧中图片的定位样式。 本教程操作环境:windows7系统、css3版,该方法适…

    2025年12月24日
    000
  • css怎么实现两张图片叠加在一起

    css实现两张图片叠加在一起的方法:可以通过给left和top分别设置div距离页面左边缘的距离和距离页面上边缘的距离来实现。需要注意的是两张图片都要设置position:absolute属性。 环境: 本文适用于所有品牌的电脑。 (学习视频分享:css视频教程) 通过left和top分别设置div…

    2025年12月24日 好文分享
    000
  • css中的块级元素和行内元素(内联元素)有哪些

    css中的块级元素有:1、a;2、abbr;3、big;4、br;5、em;6、font;7、imput。行内元素(内联元素)有:1、address;2、blockquote;3、center;4、dir;5、form;6、menu。 环境: 本文适用于所有品牌的电脑。 (学习视频分享:css视频教…

    2025年12月24日
    000
  • css怎么设置粘性定位

    css设置粘性定位的方法:直接在css的选择器中写【position:sticky】就可以了。粘性定位可以被认为是相对定位和固定定位的混合,元素在跨越特定阈值前为相对定位,之后为固定定位。 本教程操作环境:windows10系统、css3版,该方法适用于所有品牌电脑。 (学习视频分享:css视频教程…

    2025年12月24日
    000
  • css中背景图片有哪些属性

      css中背景图片的属性有:1、background-image;2、background-repeat;3、background-position;4、background-size;5、background-attachment。 本教程操作环境:windows10系统、css3版,该方法适用…

    2025年12月24日
    000
  • css怎么设置字体阴影

    css设置字体阴影的方法:使用代码【text-shadow:3px 3px 3px #00f;】,【text-shadow】属性应用于阴影文本,语法为【text-shadow: h-shadow v-shadow blur color;】。 本教程操作环境:windows10系统、css3版,该方法…

    2025年12月24日
    000
  • css如何获取第几个元素

    css获取第几个元素的方法:1、通过“nth-child(3)”方法获取列表中的第3个标签;2、通过“nth-child(2n)”方法获取列表中的偶数标签;3、通过“nth-child(2n-1)”方法获取列表中的奇数标签等等。 本教程操作环境:windows7系统、css3版,该方法适用于所有品牌…

    2025年12月24日
    000
  • css a为什么设不了宽度

    css a设不了宽度是因为a标签是行内元素,不能设置宽度,其解决办法就是把行内元素转换为block或者【inline-block】即可设置宽度。 推荐:《css视频教程》 本教程操作环境:windows10系统、css3版,该方法适用于所有品牌电脑。 为什么a标签不能设置宽度? 在a标签上用css设…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信