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

article/2025/9/27 18:54:25

为啥写这篇文章

网上关于这两种布局的文章大多数都只是给了代码实现,而没有说出其中关键性代码的作用和原理。

布局实现的目的

1.三列布局,两端固定宽度(其实可以不用固定宽度),中间栏自适应。
2.中间栏优先渲染。
3.任意栏高度自由不限制。

效果展示

在这里插入图片描述

布局实现

一.圣杯布局

1.由于要实现中间栏先渲染,所以需要将center放置前面。

    <div class="content1 box"><div class="center">center</div><div class="left">left</div><div class="right">right</div></div>

2.将center,left,right设置浮动,并设置宽度。

        .box {overflow: hidden;}.box div{text-align: center;font-size: 30px;}.content1 div {float: left;min-height: 300px;}.content1 .center {width: 100%;background: #9ab;}.content1 .left {width: 300px;background: #aaa;}.content1 .right {width: 300px;background: #ddd;}

效果如下。
在这里插入图片描述
3.接下来是最为关键的步骤,设置left的margin-left为-100%,right的margin-left为本身宽度的负值。

        .box {overflow: hidden;}.box div{text-align: center;font-size: 30px;}.content1 div {float: left;min-height: 300px;}.content1 .center {width: 100%;background: #9ab;}.content1 .left {width: 300px;margin-left: -100%;//关键步骤background: #aaa;}.content1 .right {width: 300px;margin-left: -300px;//关键步骤background: #ddd;}

效果如下。
在这里插入图片描述

首先,left为什么要使用margin-left:-100%,right要使用margin-left: -300px呢?


原理:当给margin添加%值时,是根据父元素的宽度来计算的,所以当设置margin-left:-100%后,left刚好被移动到上一行相同位置。而right不需要移动到上一行相同位置,只需要自身在上一行就行,所以只需要设置margin-left为自身的宽度负值后,自动会往上行排。通过动图不难看出来。
在这里插入图片描述

其次,看了动图和布局结构,你应该发现了,left和right只是跑到center图层的上一层,遮挡住了center的内容,而不是排挤了center的内容。加过多的字可以看到center内容被遮挡了。


在这里插入图片描述
4.解决center被遮挡。
方法一

        .box {overflow: hidden;}.box div{text-align: center;font-size: 30px;}.content1 div {float: left;min-height: 300px;}.content1 .center {width: 100%;background: #9ab;padding: 0 300px;//神来之笔box-sizing: border-box;//神来之笔}.content1 .left {width: 300px;margin-left: -100%;background: #aaa;}.content1 .right {width: 300px;margin-left: -300px;background: #ddd;}

效果如下
在这里插入图片描述

解释一下为什么要这样子写

box-sizing: border-box;将容器变为怪异盒模型,使得容器实际宽度=内容宽度+边框宽度+填充宽度。那么,当我设置了padding: 0 300px;之后,内容的宽度就刚好是中间的部分了。而两边的填充宽度刚好就是left和right的宽度。

方法二
如果你看了其他人的解释,会发现大多人是使用相对布局的方法,在这儿我不多说。自行百度。

二.双飞翼布局

相对于圣杯布局来说,多加了一个容器。

<div class="content2"> <div class="main"><div class="center">center</div> </div><div class="left">left</div> <div class="right">right</div> 
</div>

这种做法看看其他的人怎么做的8 ,我主要讲的时候使用margin-left的作用和原理。😏


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

相关文章

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

双飞翼布局 一、实现效果二、使用弹性盒模型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…

Eclipse全局搜索

Eclipse中全局搜索和更替 Eclipse全局搜索步骤 使用快捷键“ctrlH”打开文件搜索对话框&#xff0c;选择“File Search”标签&#xff0c;在Containing text中输入你需要搜索的字符串&#xff0c;在Scope中&#xff0c;选择你要搜索的范围&#xff0c;点击Search。 在Sea…

VSCODE 全局搜索失效

背景 eslint 越来越风靡git 托管需要忽略文件全局搜索可能引起editor崩溃vscode自身不断更新以适应市场 现象 最近发现vscode的搜索越来越不对劲&#xff0c;甚至引发开发失误。因为检索的东西并不是没有&#xff0c;而是他没搜到 解决 -1. node_module目录下文件的搜索不到…

pycharm如何全局搜索

目录 CtrlN 按文件名搜索py文件 CtrlshiftN 按文件名搜索所有类型的文件 ctrlshiftf 全局字符串搜索 ctrlshifta 双shift搜索 CtrlN 按文件名搜索py文件 ctrln可以搜索py文件 勾选上面这个框可以搜索工程以外的文件 CtrlshiftN 按文件名搜索所有类型的文件 CtrlshiftN可…

vs全局搜索快捷键搜索失效

全局搜索文件是vs的重要功能。从VC时代起&#xff0c;博主就开始使用了。 一、快捷键&#xff1a; ctrl shilt F 可以弹出快速查找窗口&#xff0c;输入关键字&#xff0c;点“全部查找”即可搜索到整个工程全部关键字。 二、失效解决&#xff1a; 在上述窗口中输入关键字查找…

vim使用:全局搜索并跳转

很多人使用了vim之后&#xff0c;热衷于安装各种各样的插件&#xff0c;折腾的不亦乐乎。但是殊不知vim 本身自带的很多功能也非常的好用&#xff0c;熟练使用他们会使得我们在编程以及解决问题过程中提高不少效率。下面我就介绍第一个好用的技巧。全局搜索vim 命令。 先举个栗…

IDEA全局搜索快捷键方法

1、CtrlN 按名字搜索类 相当于eclipse的ctrlshiftR&#xff0c;输入类名可以定位到这个类文件&#xff0c;就像IDEA在其他的搜索部分表现一样&#xff0c;搜索类名也能对你所要搜索的内容多个部分进行匹配&#xff0c;而且如果能匹配的自己写的类&#xff0c;优先匹配自己写的类…

Vue3 如何实现一个全局搜索框

前言&#xff1a;自从学习 vue 以来&#xff0c;就对 vue 官网全局的 command K 调出全局关键词搜索这个功能心心念念。恰好最近项目也是需要实现一个全局搜索的功能&#xff0c;也正好可以正大光明的带薪学习这个功能的思路。网上的教程水平参差不齐&#xff0c;而恰好之前的…

VS Code全局搜索

全局搜索快捷键&#xff1a;CTRL SHIFT F “包含的文件”和“排除的文件”类型之间用 , 分割

IDEA 如何进行全局搜索

毕业季来临&#xff0c;很多小伙伴在忙于考公或者准备研究生复试等工作&#xff0c;因此从网上下载或者购买了源码。源码在本地运行成功之后&#xff0c;想要稍微修改一下&#xff0c;结果发现无从下手。本文就向大家介绍一个程序员在开发中最常见最常用的功能&#xff1a;全局…

IDEA: 全局搜索 、全局查找

在使用Eclipse的 时候用到了全局查找功能 Ctrl H ,还是非常好用的&#xff0c; 在IDEA中同样有全局搜索功能&#xff0c;我用的是Eclipse版本的快捷键&#xff0c;是CtrlH。 特此查找记录&#xff0c;分享。

人工智能基础——全局搜索方法

文章目录 引言局部搜索算法爬山法模拟退火局部束搜索遗传算法 连续空间中的局部搜索使用不确定动作搜索使用部分可观察信息搜索联机搜索问题总结 引言 这是最优化的内容&#xff0c;我们用状态&#xff08;包含很多参数&#xff09;描述一个对象。把这些参数作为坐标轴就会获得…