实现双飞翼布局

article/2025/9/27 17:08:45

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

        现如今,很多web端的应用,他们的布局方式都是圣杯布局和双飞翼布局,既然用到的这么多,那么,双飞翼布局是如何实现的呢?带着这个问题,咱们一起把他说道说道

双飞翼布局的实现方式一、(position+margin+float)

        首先我们从上面简介部分得知,双飞翼布局是一个两边固定,中间自适应的布局,并且中间部分还可以优先加载,那么从此条消息中,我们可以构想出一个HTML结构,结构如下

<body><div class="box"><div class="header">header</div><div class="main"><div class="center">center</div><div class="left">left</div><div class="right">right</div></div><div class="footer">footer</div></div></body>

下面我们来一步步实现css部分

        1. 首先我们把基础的东西写好 ,在这里为了样式的好看,将box容器的宽度调整到了80%,并用margin-left给他实现了居中(其中实现居中的方式有很多很多很多种,对居中不太熟悉的同学可以自行百度下)

.box {width: 80%;margin-left: 10%;
}
.header {width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aqua;font-weight: 600;
}
.footer {clear: both;width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aquamarine;font-weight: 600;
}.main {height: 150px;
}.center {width: 100%;height: 150px;background-color: red;
}.left {width: 150px;height: 150px;background-color: royalblue;
}
.right {width: 150px;height: 150px;background-color: sandybrown;
}

效果图:

注意:center的宽度一定要设置为100%

 2. 让center,left,right都设置为左浮动。这时因为center设置了宽度100%,所以left和right被“挤”到了下面

.box {width: 80%;margin-left: 10%;
}
.header {width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aqua;font-weight: 600;
}
.footer {clear: both;width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aquamarine;font-weight: 600;
}.main {height: 150px;
}.center {float: left;width: 100%;height: 150px;background-color: red;
}.left {float: left;width: 150px;height: 150px;background-color: royalblue;
}
.right {float: left;width: 150px;height: 150px;background-color: sandybrown;
}

效果图:

3. 现在我们项让left和right变到上面去,即跟center在同一行,但是呢,center的宽度为100% ,没有left和right的空间了,怎么办呢?我们可以先通过给main加padding,把left和right的空间预留出来,这里有一个需要注意的点。如果一个元素,同时设置了width和padding的话,盒子的总宽度会增加,什么意思呢,看下面这张图

代码:

.main {height: 150px;width: 100%;padding: 0 150px;
}
/* 这里相对于上面的代码,我只对main进行了更改 */

效果图:

 但是呢,如果只存在padding,没有width的话,效果图是这样的

对于padding和width的关系。不懂的同学可以自行百度查一下(博主有点懒。。。。),到这里,是不是发现,我们已经预留出来了right和left的位置!!

4. 我们将left和right移动到我们预留出来的位置,这里用到了-margin

 

.box {width: 80%;margin-left: 10%;
}
.header {width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aqua;font-weight: 600;
}
.footer {clear: both;width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aquamarine;font-weight: 600;
}.main {height: 150px;padding: 0 150px;
}.center {float: left;width: 100%;height: 150px;background-color: red;
}.left {float: left;margin-left: -100%;width: 150px;height: 150px;background-color: royalblue;
}float: left;margin-left: -150px;width: 150px;height: 150px;background-color: sandybrown;
}

效果图:

这里,同学有没有发现一个问题,left和right把center的左右两端挡住了(center这个文案不见了),思考下怎么解决,答案马上揭晓

 是的!!!就是position属性,给他加定位!!!分别向左向右移动自身大小!!!

 最终代码如下

.box {width: 80%;margin-left: 10%;
}
.header {width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aqua;font-weight: 600;
}
.footer {clear: both;width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aquamarine;font-weight: 600;
}.main {height: 150px;padding: 0 150px;
}.center {float: left;width: 100%;height: 150px;background-color: red;
}.left {position: relative;left: -150px;float: left;margin-left: -100%;width: 150px;height: 150px;background-color: royalblue;
}
.right {position: relative;left: 150px;float: left;margin-left: -150px;width: 150px;height: 150px;background-color: sandybrown;
}

效果图:

到这里,一个两边固定,中间自适应,并且中间优先加载的双飞翼布局就完成了!!!!!!

 

双飞翼布局的实现方式二、(flex)

        其实,flex布局很简单,因为flex本身的定义就是弹性盒,他有一个属性flex:1,就是专门解决自适应问题的,如果对flex不熟悉的同学可以戳   flex:1是什么?_CSDN_156的博客-CSDN博客   这篇文章(别问为什么这里有链接,问就是博主给自己做宣传哈哈哈哈哈哈~),废话不多说,代码如下

.box {width: 80%;margin-left: 10%;
}
.header {width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aqua;font-weight: 600;
}
.footer {clear: both;width: 100%;height: 50px;text-align: center;line-height: 50px;background-color: aquamarine;font-weight: 600;
}.main {height: 150px;display: flex;
}.center {flex: 1;display: flex;background-color: red;
}.left {/* order order默认为0,不起作用,从小到大排序,1在前,以此类推 */order: -1;flex-basis: 150px;background-color: royalblue;
}.right {flex-basis: 150px;background-color: rgb(195, 196, 195);
}

效果图:

最后!有哪位好心的同学能教教我CSDN怎么放GIF的动图呢,可以私信教教我!!感激不尽

the last, 创作不易,如果这篇文章对您有些许帮助,请留下您的赞~感激不尽!!!

深夜创作,临表涕零,不知所言~~ 


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

相关文章

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

android全局搜索

如果想在同一个工程里面找就需要用到全局搜索

idea全局搜索及替换

选中一段代码后CTRLF搜索 CTRLR替换 替换 选择match case区分大小写&#xff0c;上图的Cc。可悬停查看具体信息。 部分CTRLR后出现的是下图 慢速操作&#xff0c;不推荐 选中代码-> Edit -> Find -> Find&#xff08;只选择&#xff09;/Replace&#xff08;选择替换&…

pycharm全局搜索方法

pycharm全局搜索方法 1、本文件中搜索&#xff1a;CtrlF 2、全局搜索&#xff08;整个项目中搜索&#xff09;&#xff1a;CtrlShiftF 3、全局搜索&#xff08;整个项目中搜索&#xff09;&#xff1a; 参考文献&#xff1a;https://blog.csdn.net/u013066730/article/deta…