圣杯布局

实现圣杯布局的三种方式 实现圣杯布局的三种方式。 阅读详情
圣杯布局我听就听了很久很久啦,而且每次看到圣杯布局总会离不开一篇文章,那就是a list apart里面的 In Search of the Holy Grail 。随着现在H5,CSS3的发展,IE6,IE7的逐渐退出舞台,或许现在工程师也没那么纠结了(或许而已,移动的大肆发展,还是出现了更多要兼容的东西,但是现在也逐渐不用再纠结那个IE6了吧,起码做移动端的就可以不用)。这篇文章06发布的,或许将来有一天人人的浏览器都支持CSS3的盒布局了,那浮动布局,绝对定位布局就可以退出舞台咯。

  圣杯布局它的目标是左右两栏定宽,中间那一行流式。首先是html代码(为了简便处理这里就用位置命名ID,实际操作上还是使用语义化的词命名ID):

复制代码
<div id="header"></div>

<div id="container">
  <div id="center" class="column"></div>
  <div id="left" class="column"></div>
  <div id="right" class="column"></div>

</div>

<div id="footer"></div>
复制代码

  一、圣杯布局需要比较多的数学计算,这里我设left的宽度为X,right的宽度为Y。这里先不考虑padding和margin。

  第一步,设置Container的padding-left为left的宽度,padding-right为right的宽度。(图片来自 a list apart,假设了left宽为200px,right宽为150px)

#container{
        padding-left:Xpx;
        padding-right:Ypx;
}

  第二步,将每一列都设定好宽度。

  

复制代码
#container .column{
        float:left;
}
#center{
        width:100%;
}
#left{
        width:Xpx;
}
#right{
        width:Ypx;
}
#footer{
        clear:both;
}
复制代码

  

  第四步,把left放到应该到的位置上,就是center的左边。

#left{
        width:Xpx;
        margin-left:100%;
}

接着设置left层移到padding-left的位置那边,使用相对定位,跟它自己的位置相距离它的宽。

复制代码
#container .column{
        float:left;
        position:relative;
}
#left{
        width:Xpx;
        margin-left:-100%;
        right:Xpx;
}    
复制代码

  第五步,把right层移到padding-right的那个位置上

  

#right{
        width:Ypx;
        margin-right:-Ypx;
}

  最后一步,可用性的修改。由于中间center层是流式的,当窗口大小缩小到X+Y的时候,center就没有了,所以应该给#container设置一个最小宽度

body{
        min-width:(2X+Y)px;
}

接着就是修改IE6以下的bug了,margin负值在IE6上会失效把left层弄到很远的地方,需要把它拉回来

* html #left {
  left: Ypx;
}

至于为什么用right层的宽度,文中没有给出解析,要我们去尝试或者直接把它当成护身符。

二、带有padding的圣杯布局,假设left层的左右padding为x,center层的padding为y,right层的padding为z.

复制代码
body {
  min-width: 2(2x+X+2y)+(2z+Y)px;      
}
#container {
  padding-left: (2x+X)px;   
  padding-right: (2z+Y+2y)px; 
}
#container .column {
  position: relative;
  float: left;
}
#center {
  padding: 0 ypx;    
  width: 100%;
}
#left {
  width: Xpx;          
  padding: 0 xpx;      
  right: (X+2x+y)px;         
  margin-left: -100%;
}
#right {
  width: Ypx;         
  padding: 0 zpx;      
  margin-right:(Y+2z+y)px;  
}
#footer {
  clear: both;
}

/*** IE Fix ***/
* html #left {
  left: (2z+Y)px;         
}
复制代码

      圣杯布局是一个经典,或许在IE6还有点点问题,但是随着IE6的退出舞台,技术的快速发展,或者过多几年,这个技术也可能没人在用了,但是经典是不会被遗忘的。


圣杯布局图解 圣杯布局图解 圣杯布局和双飞翼布局实现的问题都是三列布局,两边定宽,中间自适应布局,中间栏要在放在文档流前面以优先渲染。 1、给middle部分设 width:100%,给left、right设宽度,三者都 float:left。 2、给外面最大的块all设左右padding,把middle拉出来,这样left和right去了自己的位置之后就不会把middle内容盖住了。 ... 阅读详情

相关推荐

页面布局之圣杯布局

圣杯布局作为我们平时处理三列布局来说还是很有用的,一般情况下他要求的是中间宽度自适应,两边的宽度是固定的,这样能够在页面解析的时候能使中间的主要内容先解析。 首先写好布局和基本的样式如下 布局<body> <div class="header">header</div> <div class="main"> <div class="center">center

WL 1527

自适应三栏式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Doc

m0_55041880的博客 515

ubuntu18.04安装gtsam过程及报错error: invalid initialization of reference of type ‘const std::vector<bool>&’

这里建议从这个链接下,不要从官网下,可能会有版本冲突 2.安装依赖 3.编译 报错: 1. error: invalid initialization of reference of type ‘const std::vector&’ from expression of type ‘const std::vector’ 124 | const std::vector& mask() const { retur...

qq_35102059的博客 2913

圣杯布局(三种方法)

在 CSS 中的用法主要用于弹性盒子布局,它允许子元素根据容器的剩余空间进行放大和缩小,以实现响应式布局。第三个方法中需要注意的是元素排列顺序,由于浮动元素影响不了上级的块级元素所以一定注意div元素先后顺序。1.2 给左右盒子的 width 设置父盒子的 padding 值,2.1 父盒子设置 display:flex;3、利用 bfc 块级格式化上下文, 实现两侧固定中间自适应。2.3 中间盒子设置 flex:1;2、利用 flex 布局实现两侧固定中间自适应。1、利用定位实现两侧固定中间自适应。

weixin_62716073的博客 2046

嵌入式开发面试题全解析:指针、内存、数据类型关键问题总结

本文对嵌入式开发典型面试题进行深度解析,涵盖多方面关键知识。题目 19 揭示字符指针修改字符串常量的错误操作;题目 20 展现strcpy引发的缓冲区溢出风险;题目 21 体现未初始化数组与strlen结合的不可预测性;题目 22 通过位域与对齐规则计算结构体大小;题目 23 因unsigned char溢出导致循环异常。这些题目全面覆盖指针操作、内存管理、数据类型特性等核心内容,精准指出开发中易疏忽的陷阱,有助于理解编程规范,规避风险,提升代码质量与稳定性,是深入掌握嵌入式开发要点的实用指南。

嵌入式中手 1364

相位相关匹配法的opencv C++实现

这一段就是PCIAM算法的核心了,计算两幅图像的峰值相关矩阵,也是完全按照matlab移植过来的,但是后面几行,是为了筛选一些不可能存在的情况,比如边缘处的完全重合,或者只有一行,或者一列重合等等情况,由于PCIAM算法在边缘处的响应值高,所以在一些场景下可能是一种干扰,所以进行了剔除,当然可以不剔除,就是对后期的峰值选取会有影响。头文件,以及各类函数,还有主函数,第一次独立的写这种分文件类型的项目,写的拉跨还请包涵,以及当然可以转成类的形式,但感觉有点小麻烦,后期再修改吧。

qq_43616651的博客 4267

圣杯布局实现

css

Clover ‘s Blog 1224

高等数学第五章---定积分(§5.3定积分的计算方法)

这篇博客详细讲解定积分的计算方法,包括直接法、凑微分法、变量代换法和分部积分法。通过典型例题演示如何运用这些技巧计算定积分,特别强调换元必换限的原则和奇偶函数的简化处理。内容涵盖代数变形、三角代换、分段函数积分等常见题型,并附有详细的解题步骤和常见错误分析。适合微积分学习者系统掌握定积分计算技巧,提升解题效率。文中还包含积分等式证明和变限积分函数求导等进阶内容,帮助读者深入理解定积分的应用。

2302_77045867的博客 4350

圣杯布局-三种实现方式,css经典布局

经典布局:圣杯布局,三种实现方式

annans的博客 2200

paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

a486259的博客 1916

11、改进的加权轮询调度算法

本文详细介绍了对传统加权轮询(WRR)调度算法的改进方法,包括动态权重调整、优先级调度和预测机制,旨在提升系统的公平性、响应速度和适应性。通过设计与实现改进算法,并结合实验验证其在响应时间、资源利用率和公平性方面的显著提升,同时列举了该算法在数据中心、云服务平台、CDN及电商平台等实际场景中的应用案例。

day7的博客 191

css经典布局——圣杯布局

圣杯布局和双飞翼布局一直是前端面试的高频考点,圣杯布局的出现是来自由 Matthew Levine 在 2006 年写的一篇文章《In Search of the Holy Grail》。比起双飞翼布局,它的起源不是源于对页面的形象表达。在西方,圣杯是表达“渴求之物”的意思。而双飞翼布局则是源于淘宝的UED,可以说是灵感来自于页面渲染。 效果图 原本录制了...

越努力,越幸运! 5万+

论文复现5:UMI Universal Manipulation Interface

UMI 采用手持式夹具,加上精心的界面设计,可实现便携式、低成本和信息丰富的数据收集,以进行具有挑战性的双手和动态操作演示。配备这些功能后,UMI 框架解锁了新的机器人操作功能,只需更改每个任务的训练数据,即可实现零样本可推广的动态、双手、精确和长视野行为。我们通过全面的现实世界实验展示了 UMI 的多功能性和有效性,其中通过 UMI Zeroshot 学习的策略在对不同的人类演示进行训练时可以推广到新的环境和对象。项目主页:https://umi-gripper.github.io/

github_38060285的博客 1979

双飞翼布局和圣杯布局

实现左右固定宽度 ,中间自适应的布局(中间先加载渲染), 代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>css</title> </head> <style type="text/css"> *...

flowRight的博客 3万+

js逆向第24例:FastMoss数据分析网站Fm-Sign加密字段破解

破解:FastMoss数据分析网站Fm-Sign加密字段。FastMoss主要是TikTok为主的大数据分析服务的一个网站

花臂不花Home 2154

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

圣杯布局的三种方式

圣杯布局

pretend88的博客 3153

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

圣杯布局的四种实现方式

圣杯布局

llj1028的博客 2431

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

圣杯布局和双飞翼布局

双飞翼布局与圣杯布局 圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。 特点: 两侧宽度固定,中间宽度自适应(三栏布局) 中间部分在DOM结构上有限,以便先行渲染 允许三列中的任意一列成为最高列 只需要使用一个额外的div标签 圣杯布局: DOM结构: <div class="header"></div> <div class="container"> <div class=

qq_43539854的博客 3213

圣杯布局的原理

圣杯布局的起源In Search of the Holy Grail圣杯布局解决的问题 两边定宽,中间自适应的三栏布局,中间栏要放在文档流前面以优先渲染。 圣杯布局的原理HTML代码<div class="content"> <div class="center col"> </div> <div class="left col"> </div>

止于至善 3868

HTML经典布局之圣杯布局详解

圣杯布局预览如下 在遇到以下两个要求时(也是圣杯布局的特点),就需要使用到圣杯布局 三栏布局中,左栏和右栏需要固定宽,中间栏自动占满剩余宽度 要求中间栏优先渲染 示例代码如下,为了方便快速阅读和理解,我将所有除*的样式都写为内联样式并11解释其作用。 注: 在圣杯布局中主要是关注宽度的自适应,不关注高度,因此不必关注实例代码中的高度,所哟高度可以根据需求进行随意设置 <!DOCTYPE html> <html> <head> <meta ch.

Xu_Lisa的博客 3660

前端布局之圣杯布局

前端布局之圣杯布局圣杯布局 今天学习圣杯布局和双飞翼布局,以下是自己的总结和练习。 圣杯布局 圣杯布局是一种三列布局,两边定宽,中间自适应的布局。 圣杯布局的原理: 当子元素处于浮动状态时,设置负margin,子元素会覆盖到兄弟元素上 方法一: 利于BFC元素与浮动元素不会相互覆盖的特性实现圣杯布局。 先写出三个盒子: <div class="left"></div> ...

wyh1996wyh的博客 593

CSS中的圣杯布局,以及圣杯布局与双飞翼布局的区别

为了实现经典的左右边列宽度一定,中间列宽度自适应,可以采用早期的圣杯布局,之后的改良效果为双飞翼布局,这里介绍了圣杯布局,并比较了圣杯布局与双飞翼布局之间的区别

liwusen的博客 3744

详解圣杯布局

圣杯布局 html结构: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-sc...

技术无止境,人生仍探索。 1280
上一篇: 我是如何同时拿到阿里和腾讯offer的
下一篇: 前端面试之模块化-2、AMD规范和CommonJS规范
hellochenlu
博客等级 码龄14年 97粉丝 184原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值