2. 双飞翼布局

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

前端面试总结


本笔记由作者在复习前端CSS部分的相关的一些总结, 如果有什么错误的地方或者有什么相关的建议欢迎联系我

这份笔记借鉴了很多网上的文章, 如果有雷同或者相似的地方, 不用怀疑, 那就是搬得, 如果你是当中一些文章得作者,

如果觉得这种行为不恰当, 请与我联系, 收到消息后我会尽快处理

邮箱: zwn_fobj@foxmail.com

QQ: 1879154660

QQ昵称: 只为你乱了浮生

感谢各位观看者的支持, 希望能对正在面临面试的你有所帮助,


目录

  • 1. z-index的作用和用法

  • 2. 圣杯布局的实现过程

  • 2.1圣杯布局实现过程

  • 2.2双飞翼布局实现过程

  • 3.什么使BFC,IFC

  • 3.1 BFC(Block Formatting Contexts)块级格式化上下文

  • 3.2 IFC(Inline Formatting Contexts)行内格式化上下文

  • 4.清除浮动方式


1.z-index的作用和用法

z-index 属性设定了一个定位元素及其后代元素或 flex 项目的 z-order。当元素之间重叠的时候,z-index 较大的元素会覆盖较小的元素在上层进行显示。

z-index可以是0, 处于正值下面, 处于auto前面

z-index可以是负数,处于auto下面

2.圣杯布局和双飞翼布局

圣杯布局和双飞翼布局都是三栏布局: 两边高度固定, 中间栏自适应, 中间栏优先渲染

尾部: 清除浮动

容器: bfc

三栏: float:left; positive:relative;height:500px

左右栏: 宽度+背景颜色

左侧挪到上一行前面: margin-left: -100%

右侧往前挪: right: -150px

给容器: pandding-left: 200px; padding-right:150px

  • 具体实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>body{min-width: 550px;font-weight: bold;font-size: 20px;}.header,.footer{background-color: rgba(29,27,27,0.726);;text-align: center;height: 60px;line-height: 60px;}.footer{/*清除浮动*/clear: both;}.middle,.left,.right{height: 100px;}.content{padding-left: 200px; /*空出left的位置*/padding-right: 150px; /*空出right的位置*/overflow: hidden;}.content div{position: relative;float: left;text-align: center;height: 300px;line-height: 300px;}.middle {width: 100%;background-color: orange;}.left {width: 200px;           /* leftContent width */right: 200px;           /* leftContent width */margin-left: -100%;background-color: green;}.right {width: 150px;           /* rightContent width */margin-left: -150px;   /* rightContent width */right: -150px;background-color: skyblue;}</style>
</head>
<body>
<div class="header">header</div>
<div class="content wrapper"><div class="middle">middle</div><div class="left">left</div><div class="right">right</div>
</div>
<div class="footer">footer</div>
</body>
</html>
  • 效果展示

中间栏里再放inner

容器:bfc

三栏: float:left; height: 500px

左右栏: 宽度+背景颜色

中间栏: 100%+背景颜色

左右栏: 宽度+背景颜色

左侧挪到上一行前面: margin-left:-100%;

右侧挪到上一行后面: margin-left: -150px;

inner里面margin: 0 200px 0 150px;

  • 具体实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>双飞翼布局</title><style>body {min-width: 550px;font-weight: bold;font-size: 20px;}#header, #footer {background: darkgoldenrod;text-align: center;height: 60px;line-height: 60px;}#container {/*这里预留位置用再预留*//*该元素大小有center撑开*/overflow: hidden;}.column {text-align: center;height: 300px;line-height: 300px;}#left, #right, #center {float: left;}#center {width: 100%;background: gray;}#left {width: 200px;/*移动到上一行首首*/margin-left: -100%;background: skyblue;}#right {width: 150px;/*移动到上一行行尾*/margin-left: -150px;background: orange;}.content {/*内容区显示的位置*/margin: 0 150px 0 200px;}</style></head>
<body><div id="header"># header</div><div id="container"><div id="center" class="column"><div class="content"># center</div></div><div id="left" class="column">#left</div><div id="right" class="column">#right</div></div><div id="footer">#footer</div>
</body>
</html>
  • 效果展示

3.什么是BFC,IFC

块级格式化上下文使页面上的一块渲染区域, 这块区域由符合条件的容器产生.

容器内的子元素会由块盒子和浮动元素按如下规则排列:

  • 纵向一个挨着一个排列

  • 两个贺子的纵向间距由margin属性决定, 两个相邻的盒子在垂直方向上的margin

会有种"重叠合并"的效果,此时纵向间距距离取较大的那个margin值

这个容器可以看作一个独立的布局环境,容器外的元素与容器内的元素(包括浮动元素)

再布局上不会影响到对方

  1. BFC容器的高度将浮动圆度的高度计算进去

  1. 浮动清除效果. BFC会排斥外部浮动元素,让浮动元素和块元素在视觉上不会由重叠的效果:

产生块格式上下文的方式有:

1. 根元素 - <html>2. 浮动元素 - 非float: none的元素3. 绝对定位元素 - position为absolute或fixed的元素(和产生粘滞效果sticky的元素?)4. 行内块元素 - display为inline-block的元素5. 表格元素display: table-cell的元素,如<td>display: table-caption的元素,如<th>display: table的元素,如<table>display: table-row的元素,如<tr>display: table-row-group的元素,如<tbody>display: table-header-group的元素,如<thead>display: table-footer-group的元素,如<tfoot>display: inline-table的元素6. overflow不为visible的块元素7. display: flow-root的元素8. contain: layout | content | paint的元素9. 弹性元素 - display: flex | inline-flex的直接子元素10. 网格元素 - display: grid | inline-grid的直接子元素11 .多列容器 - column-count或column-width不为auto12. column-span: all的元素

行内格式化上下文的布局首先要根据水平, 垂直和左右书写模式来说明:

  • 在水平书写模式 writing-mode: hortizontal-td下,盒子会在时评方向上从左到右排列,空间不够时换到下一行继续

  • 在垂直书写模式下 writing-mode: vertical-rl | vertical-lr, 盒子会在垂直方向上从上到下排列, 空间不够时换到下一行继续, 只是这里的下一行有左右之分

writing-mode: vetical-rl时就像古人书写以及日本台湾书籍的格式一样,从右到左排列; writing-mode: vertival-lr则时从左到右排列

每"行"在浏览器中会被作为一个盒子处理, 这个盒子叫行框(line box),他的高度由其包含行内元素的最低位置到最高位置(不包含margin)计算而来; 因为考虑盒子件对齐处理的关系,

这个值可能会被行内最高的元素要搞

当由浮动元素在行内式化上下文时, 在浮动元素的行框可能会因为它而缩短宽度,产生"文字环绕"效果

当行框内的行内元素没有占满整行的空间时, 他们在水平方向的位置会受到text-align属性的影响

而当行内元素太长时, 会被分割为多行, 也就是说这个元素内产生了多个行框排列在一起,此时margin.

border, padding都不会在断裂处生效

满足以下条件时,行框会被当做高度为0的盒子处理:

  • 不包含文字

  • 非white-space: pre | pre-wrap | pre-line

  • 不含margin、padding、border值不为零的元素

  • 不含在常规流中的元素,如图片、表格之类

4.清除浮动方式

清除浮动: 清除浮动后造成的影响-->清除浮动主要为了解决父级元素因为浮动引起内部高度为0的问题

  1. 额外标签法(在最后一个浮动标签后,新新加一个标签, 给其设置clear: both;)(不推荐)

<div style="clear:both"></div>

我们清除了浮动,父元素自动检测盒子的高度,然后与其同高

  • 优点: 通俗易懂, 方便

  • 缺点: 添加无意义标签, 语义化差

  1. 父级添加overflow属性, 变成BFC(块级格式化上下文),就可以解决浮动带来的影响(不推荐)

通过除法BFC方式,实现清除浮动

  • 优点:代码简洁

  • 缺点: 内容增多的时候容易造成不会自动换行,导致内容被隐蔽掉,无法显示要溢出的元素

    .fahter{width: 400px;border: 1px solid deeppink;overflow: hidden;}
  1. 使用before和after伪元素清除浮动(推荐使用):

这种方式也是使用额外标签方式达到效果,只是变相的使用了伪元素after/before,使得页面结构更简介,也是常用的清除浮动的方式

  • 优点: 符合闭合浮动思想,结构语义化正确

  • 缺点: ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.

.clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/content: ""; /*元素设置为空*/display: block; /*转换为块级元素*/height: 0; /*高度为0*/clear:both;/*清除浮动*/visibility: hidden;/*将元素隐藏*/
}
/*下面为了兼容IE*/
.clearfix{*zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
}
  • 具体使用


<body><div class="fahter clearfix"><div class="big">big</div><div class="small">small</div><!--<div class="clear">额外标签法</div>--></div><div class="footer"></div>
</body>
  • 使用before和after双伪元素清除浮动

  • 优点: 代码更简洁

  • 缺点: 用zoom:1除法hasLayout


.clearfix:after,.clearfix:before{content: "";display: table;
}
.clearfix:after{clear: both;
}
.clearfix{*zoom: 1;
}
  • 具体使用

<div class="fahter clearfix"><div class="big">big</div><div class="small">small</div></div><div class="footer"></div>
  1. 使用 display: flow-root(推荐):

一个新的 display 属性的值,它可以创建无副作用的 BFC。在父级块中使用 display: flow-root 可以创建新的 BFC。

给 <div> 元素设置 display: flow-root 属性后,<div> 中的所有内容都会参与 BFC,浮动的内容不会从底部溢出。

你可以从 flow-root 这个值的名字上看出来,它创建一个新的用于流式布局的上下文,类似于浏览器的根(html)元素。

  • 具体使用

.box[style] {background-color: aliceblue;border: 5px solid steelblue;
}
.float {float: left;width: 200px;height: 100px;background-color: rgba(255, 255, 255, .5);border:1px solid black;padding: 10px;
}   
  <div class="box" style="display:flow-root"><div class="float">I am a floated box!</div><p>I am content inside the <code>display:flow-root</code> container.</p></div>
  • 实现效果:


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

相关文章

双飞翼布局

双飞翼布局 一、什么是双飞翼布局 双飞翼布局则是源于淘宝的UED&#xff0c;可以说是灵感来自于页面渲染。一起来看看淘宝的头部实现&#xff1a;就是两边定宽&#xff0c;中间自适应的三栏布局&#xff0c;中间栏要放在文档流前面以优先渲染。 二、HTML布局 首先设置一个co…

圣杯布局和双飞翼布局

双飞翼布局与圣杯布局 圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同&#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