双飞翼布局

article/2025/9/27 16:49:50

双飞翼布局

一、什么是双飞翼布局

双飞翼布局则是源于淘宝的UED,可以说是灵感来自于页面渲染。一起来看看淘宝的头部实现:就是两边定宽,中间自适应的三栏布局,中间栏要放在文档流前面以优先渲染。

 

二、HTML布局

首先设置一个container容器,里面放置左中右三个盒子,父元素的的三栏务必先写中间盒子。因为中间盒子是要被优先渲染

<div class="container">
    <div class="middle">中间</div>
    <div class="left">左边</div>
    <div class="right">右边</div>
</div>

三、每个盒子的样式

首先是容器设置高度,三个盒子设置左浮动,两侧盒子固定宽度,中间盒子设置100%

.container{ height:200px;}
.middle{width: 100%;height: 200px; background-color: #ffbcec;float:left;}
.left{ width: 200px;height: 200px;background-color: #ffe86c;float:left;}
.right{width: 200px;height: 200px;background-color: #f01b2d;float:left;}

这个时候可以看到效果图为

 

现在因为中间盒子设置了100%的宽度,左边和右边的盒子就掉下来了。

那么怎么才能让三个盒子并列一行呢?这个时候就要利用到负边距了。

四、利用负边距并行

左边的盒子设置.left {margin-left:-100%;}

右边的盒子设置.right {margin-left:-200px;}

 

现在看起来好像已经成功了。但是要记住,中间盒子是自适应的宽度,所以中间盒子里的内容会被左右盒子给压住一部分。
比如我在中间的盒子里加文字,就会出现如下的情况

 

五、父级盒子内边距

利用父级元素设置左右内边距的值,把父级的三个子盒子往中间挤。

代码如下:.container{ padding: 0 200px;} 这里的200px是左右盒子的宽度。
效果如下:

 

哎呀,此时可以看到中间的盒子是不占两侧位置了,可是设置了padding后,左右盒子也跟着过来了,那怎么才让左右贴边呢?

六、相对定位

给左右两个盒子加一个定位,加了定位之后左右两个盒子就可以设置leftright值。代码如下
.left{ position: relative; left: -200px;}
.right{position: relative;right: -200px;

 

现在,双飞翼终于实现了,中间的内容也不会超出了,缩小浏览器后的效果图如下

 

七、flex布局实现
 
接下来讲一下此实例的具体实现: 
1.首先将container块设置为一个Flex容器

.container {
    display: flex;
    overflow: hidden;
    height: 200px;
}

 

那么container下属的mainleftright这三个子元素自动成为容器成员,称为 Flex 项目(flex item 
3.通过order属性设置排列顺序

可以看出三个项目的排序方式不一样了,main排在了第一个,要让main在中间,left在左边,可以通过Flex容器下的项目的属性“order”属性来设置:

.left {
    order: -1;
    background-color: #ffe86c;
}

 

对于order属性:定义项目的排列顺序,越小越靠前,默认为0

.通过项目属性flex:1,将空余的空间用main来填充,使三个项目不满一整行;默认为0,也就是对剩余空间不做处理。可别忘了flex兼容性比较差,记得要把该加的浏览器兼容方案都加上去。

-moz-box-flex:1.; /* Firefox */
-webkit-box-flex:1.; /* Safari 和 Chrome */
flex: 1;

5.通过项目属性flex-basis 设置left和right的固定宽度

.left {
    order: -1;
    flex-basis:200px;
    background-color: #ffe86c;
}
.right {
    flex-basis:200px;
    background-color: #f01b2d;
}

这样就实现了我们的目标,是不是很简单?这就是flex布局的魅力。。。

八、绝对定位实现

1、首先给父级设置relative,三个盒子都设置绝对定位并且top值为0,左侧和右侧盒子分别设置leftright0

.left {
    position: absolute;
    left: 0;
    width:200px;
    background-color: #ffe86c;
}
.right {
    position: absolute;
    right: 0;
    width:200px;
    background-color: #f01b2d;
}

但是这是你会发现如下图

 

高度没有了!这是因为绝对定位脱离了文档流,父级的高度管不了它们了,所以我们需要给三个盒子都设置高度

.middle,.left,.right{
    top: 0;
    height: 200px;
}

然后就成功啦

九、比较总结

负外边距和绝对定位会有些问题就是当窗口小于两侧盒子固定宽度时,显示就会不全。flex布局就可以很好的让两侧固定宽带减少已达到自适应。但是flex方法毕竟兼容性差,ie10以上才能用。


flex布局和grid布局是趋势,也在蓬勃发展,但新旧事物还是有过度的,学习圣杯布局会让你对盒模型、浮动又更深的理解,也方便自己更灵活的应用。

 


http://chatgpt.dhexx.cn/article/uRSf1WBj.shtml

相关文章

圣杯布局和双飞翼布局

双飞翼布局与圣杯布局 圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同&#xff0c;都是为了实现一个两侧宽度固定&#xff0c;中间宽度自适应的三栏布局。 特点&#xff1a; 两侧宽度固定&#xff0c;中间宽度自适应&#xff08;三栏布局&…

圣杯布局和双飞翼布局详解

圣杯布局 刚学圣杯双飞翼布局&#xff0c;有点蒙&#xff0c;特写下来加深印象 首先要明确 圣杯布局和双飞翼布局 要解决的问题是什么&#xff1f; 要解决的就是让浏览器先加载最总要的那部分给客户看&#xff0c;我们做前端开发的时候要切合实际场景开发&#xff0c;合理布局…

实现双飞翼布局

说到圣杯布局和双飞翼布局&#xff0c;始终都是面试的高频考点&#xff0c;问题方式也大同小异&#xff0c;比如&#xff0c;实现一个左右固定&#xff0c;中间自适应的布局&#xff1b;实现一个中间部分优先加载的布局…… 现如今&#xff0c;很多web端的应用&#xff0c;他们…

CSS经典布局--圣杯布局和双飞翼布局

圣杯布局与双飞翼布局&#xff0c;都是属于三列布局的经典布局。 双飞翼布局是圣杯布局的优化版&#xff0c;由淘宝UED提出&#xff1b; 它们的效果图类似&#xff0c;但是实现方法不同。 文章目录 一、圣杯布局和双飞翼布局的常规方法1.圣杯 position 解决&#xff08;不推荐&…

前端页面布局之双飞翼布局

1.双飞翼布局说明 双飞翼布局分为 左&#xff0c;中&#xff0c;右三个部分。 左右宽度固定&#xff0c;中间部分自适应 2.双飞翼布局实例 2.1 双飞翼布局float实现 三个部分通过按顺序向左浮动实现。 <!DOCTYPE html> <html lang"en"><head>…

圣杯式布局和双飞翼布局的区别

圣杯布局和双飞翼布局的共同点&#xff1a; 三列布局&#xff0c;两边定宽&#xff0c;中间自适应布局&#xff0c;要注意的是中间栏(重要的东西)要在放在文档流前面以优先渲染。 1、圣杯式布局定义&#xff1a; 圣杯布局是两边固定宽度&#xff0c;中间自适应的三栏布局&…

圣杯布局和双飞翼布局的区别

相同点和不同点 两者的功能相同&#xff0c;都是为了实现一个两侧宽度固定&#xff0c;中间宽度自适应的三栏布局&#xff0c;并且中间部分在HTML代码中要写在前边&#xff0c;这样它就会被优先加载渲染。 主要的不同之处就是在解决中间部分被挡住的问题时&#xff0c;采取的…

双飞翼布局与圣杯布局完全解读

一、两种布局的目的 使得左右两边的宽度不随着浏览器窗口的变化而变化&#xff0c;是固定的&#xff0c;只有中间的部分才可以随着窗口变化而变化。 二、两种布局的要点 经典圣杯布局通过父亲padding给左右俩腾位置从而不会遮住middle内容&#xff0c;而双飞翼是通过设置margin…

双飞翼布局和圣杯布局

双飞翼布局和圣杯布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同&#xff0c;都是为了实现一个两侧宽度固定&#xff0c;中间宽度自适应的三栏布局。&#xff08;中间先加载渲染&#xff09; 双飞翼的布局与实现原理&#xff08;推荐使用双飞翼布局&#xff09;…

圣杯布局与双飞翼布局

圣杯布局 圣杯布局是三列布局&#xff0c;中间宽度自适应&#xff0c;两边定宽&#xff0c;这样做的优势是重要的东西放在文档流前面可以优先渲染。也就是在html文档中&#xff0c;中间的部分要写在左右布局之前。 当然&#xff0c;这种布局是面向PC端的&#xff0c;移动端由于…

双飞翼布局(css)

1. DOM结构 <div class"head"></div><div class"container column"><div class"center"></div></div><div class"left column"></div><div class"right column"><…

经典布局-双飞翼

文章目录 一、双飞翼布局1. 具体实现 一、双飞翼布局 产生的背景&#xff1a; 针对圣杯布局的缺点&#xff0c;淘宝的工程署们提出了双飞翼布局&#xff0c;原理&#xff1a;在中间区域加一层dom节点&#xff0c;然后添加左右margin&#xff0c;实现三栏布局。 1. 具体实现 代…

双飞翼布局详解

作用&#xff1a; 圣杯布局和双飞翼布局解决的问题是相同的&#xff0c;就是两边顶宽&#xff0c;中间自适应的三栏布局&#xff0c;中间栏要在放在文档流前面以优先渲染。 原理&#xff1a; 双飞翼布局为了让中间div内容不被遮挡&#xff0c;直接在中间div内部创建子div用于…

圣杯布局、双飞翼布局具体实现原理和实现方法

为啥写这篇文章 网上关于这两种布局的文章大多数都只是给了代码实现&#xff0c;而没有说出其中关键性代码的作用和原理。 布局实现的目的 1.三列布局&#xff0c;两端固定宽度(其实可以不用固定宽度&#xff09;&#xff0c;中间栏自适应。 2.中间栏优先渲染。 3.任意栏高度…

实现双飞翼布局(圣杯布局)的三种方式

双飞翼布局 一、实现效果二、使用弹性盒模型display:flex实现三、使用calc属性实现四、使用绝对定位实现 一、实现效果 为了实现一个两侧宽度固定&#xff0c;中间宽度自适应的三栏布局&#xff0c;效果如图所示&#xff1a; 二、使用弹性盒模型display:flex实现 静态页面思…

主流布局--双飞翼布局

主流布局–双飞翼布局 什么是双飞翼布局&#xff1f; 双飞翼布局最早是淘宝团队提出的&#xff0c;是针对圣杯局部优化的解决方案。主要是优化了圣杯布局中开启定位的问题。 HTML <div class"parent"><div class"center"><div class"…

css经典布局——双飞翼布局

圣杯布局的出现是来自由 Matthew Levine 在 2006 年写的一篇文章 《In Search of the Holy Grail》&#xff0c;在国内最早是淘宝UED的工程师&#xff08;玉伯大大&#xff09;对圣杯布局改进并传播开来&#xff0c;在中国的叫法是双飞翼布局 。 圣杯布局和双飞翼布局达…

vs code全局搜索内容不全的问题

vscode有时全局搜索内容明显不对&#xff0c;可能是搜索时使用了.ignore文件导致忽略了其中的内容&#xff0c;打开vscode的设置&#xff0c;搜索search&#xff0c;找到Search: Use Ignore Files&#xff0c;取消掉勾选&#xff0c;然后就可以搜索到所有的内容了

linux全局搜索

find / -name git 转载于:https://www.cnblogs.com/hd92/p/11138033.html