圣杯布局与双飞翼布局

article/2025/9/27 17:19:53

圣杯布局

圣杯布局是三列布局,中间宽度自适应,两边定宽,这样做的优势是重要的东西放在文档流前面可以优先渲染。也就是在html文档中,中间的部分要写在左右布局之前。
当然,这种布局是面向PC端的,移动端由于屏幕宽度较小,不推荐多列布局。
在这里插入图片描述
DOM结构:

	<div class="header">Header</div><div class="bd"><div class="main">Main</div><div class="left">Left</div><div class="right">Right</div></div><div class="footer">Footer</div>

1、浮动 + margin-left 的负值(最常用)

<style>*{margin: 0;padding: 0;}html, body {width: 100%;height: 100%;}.header,.footer {width: 100%;height: 80px;line-height: 80px;background-color: antiquewhite;text-align: center;}/* 中间布局的样式 */.content {height: calc(100% - 160px);/* 根据左边栏和右边栏的宽度设置padding,留出位置放left和right */padding: 0 150px 0 200px;}/* main优先渲染,宽度设为100% */.main {width: 100%;height: 100%;float: left;background-color: rgb(233, 193, 215);}/* 左右栏的宽度固定 */.left {height: 100%;width: 200px;float: left;background-color: rgb(204, 245, 224);margin-left: -100%;/* 开启定位 设置left */position: relative; left: -200px;}.right {height: 100%;width: 150px;float: left;background-color: rgb(200, 226, 244);margin-left: -150px;position: relative;right: -150px;}</style>

2、定位布局

  <style>*{margin: 0;padding: 0;}html, body {width: 100%;height: 100%;}.header,.footer {width: 100%;height: 80px;line-height: 80px;background-color: antiquewhite;text-align: center;}/* 中间布局的样式 */.content {width: 100%;height: calc(100% - 160px);/* 根据左边栏和右边栏的宽度设置padding,留出位置放left和right */padding: 0 150px 0 200px;position: relative;box-sizing: border-box;}.content div {position: absolute;height: 100%;text-align: center;}/* main优先渲染,宽度设为100% */.main {width: 100%;right: 0;background-color: rgb(233, 193, 215);}/* 左右栏的宽度固定 */.left {width: 200px;left: 0;background-color: rgb(204, 245, 224);}.right {width: 150px;right: 0;background-color: rgb(200, 226, 244);}</style>

3、flex布局(不用)

	<div class="header">Header</div><div class="bd"><div class="left">Left</div><div class="main">Main</div><div class="right">Right</div></div><div class="footer">Footer</div>
  <style>*{margin: 0;padding: 0;}html, body {width: 100%;height: 100%;}.header,.footer {width: 100%;height: 80px;line-height: 80px;background-color: antiquewhite;text-align: center;}/* 中间布局的样式 */.content {display: flex;justify-content: space-between;height: calc(100% - 160px);}/* main优先渲染,宽度设为100% */.main {width: 100%;right: 0;flex: 1;background-color: rgb(233, 193, 215);}/* 左右栏的宽度固定 */.left {width: 200px;height: 100%;background-color: rgb(204, 245, 224);}.right {width: 150px;height: 100%;background-color: rgb(200, 226, 244);}</style>

圣杯布局的问题

在浏览器窗口变窄到一定程度之后,布局全都乱掉了,原因是:因为左右盒子设置了相对定位,所以当左右盒子应该在的位置发生重叠时,一行放不下了,就会换行,造成布局混乱,有两种解决办法:
1、给父容器设置最小宽度,这个最小宽度的计算为:left盒子宽度*2 + right盒子宽度
2、使用双飞翼布局
在这里插入图片描述

双飞翼布局

给中间部分在套上一层容器,这样做以后,大的容器就不再需要设置padding值,左右栏盒子也不用再设置相对布局,代码精简了很多,而且不会出现上面变的特别窄布局会乱掉的问题。

DOM结构:

	<div class="container"> <div class="main"><div class="content">main</div> </div><div class="left">left</div> <div class="right">right</div> </div>
  <style>.left, .main,.right {float: left;text-align: center;min-height: 500px;}.left {width: 200px;background-color: rgb(204, 245, 224);margin-left: -100%;}.right {width: 300px;background-color: rgb(200, 226, 244);margin-left: -300px;}.main {width: 100%;background-color: rgb(233, 193, 215);}.content {margin: 0 300px 0 200px;}</style>

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

相关文章

双飞翼布局(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…

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;而恰好之前的…