【面试题总结3】

简介: 【面试题总结3】

absolute的containing block计算方式跟正常流有什么不同?

无论属于哪种,都要先找到其祖先元素中最近的position值不为static的元素,然后再判断;

1、若此元素为inline元素,则containing block为能够包含这个元素生成的第一个和最后一个inline box的padding box(除margin、border外的区域)的最小矩形;

2、否则,则由这个祖先元素的padding box构成

如果都找不到,则为initial containing block。

补充:

1、static(默认的)/relative:简单说就是它的父元素的内容框(即去掉padding的部分)

2、absolute向上找最近的定位为absolute/relative的元素

3、fixed,它的containing block 一律为根元素(html/body)

CSS里的visibility属性有个collapse属性值?在不同浏览器下以后什么区别?

当一个元素的visibility属性被设置成collapse值后,对于一般的元素,它的表现跟hidden是一样的。

1、chrome中,使用collapse值和使用hidden没有区别

2、Firefox、opera和IE,使用collapse值和使用display:none没有区别

display:none与visibility:hidden的区别

display:none不显示对应的元素,在文档布局中不再分配空间(回流+重绘)

visibility:hidden隐藏对应元素,在文档布局中仍保留原来的空间(重绘)

position跟display、overflow、float这些特性相互叠加后会怎么样?

display属性规定元素应该生成的框的类型;position属性规定元素的定位类型;float属性是一种布局方式,定义元素在哪个方向浮动。

类似于优先级机制:position:absolute/fixed优先级最高,有他们在时,float不起作用,display值需要调整,float或者absolute定位的元素,只能是块元素或表格。

对BFC规范(块级格式化上下文:block formatting context)的理解?

BFC规定了内部的Block Box如何布局。

定位方案:

1、内部的box会在垂直方向上一个接一个放置。

2、box垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的margin会发生重叠。

3、每个元素的margin box的左边,与包含块border box的左边相接触。

4、BFC的区域不会与float box重叠

5、BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

5、计算BFC的高度时,浮动元素也会参与计算

满足下列条件之一就可触发BFC:

1、根元素,即html

2、float的值不为none(默认)

3、overflow的值不为visible(默认)

4、display的值为inline-block、table-cell、table-caption

5、position的值为absolute或fixed

为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?

浮动元素碰到包含它的边框或者浮动元素的边框停留,由于浮动元素不在文档流当中,所以文档流的块框表现得就像浮动框不存在一样,浮动元素会漂浮在文档流的块框上。

浮动带来的问题:

1、父元素的高度无法被撑开,影响与父元素统计的元素

2、与浮动元素统计的非浮动元素(内联元素)会跟随其后

3、若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构。

清除浮动的方式:

1、父级div定义height

2、最后一个浮动元素后加空div标签,并添加样式clear:both.

3、包含浮动元素的父标签添加样式overflow为hidden或auto。

4、父级div定义zoom

上下margin重合的问题

在重合元素外包裹一层容器,并触发改容器生成一个BFC。

div class="aside"></div>
<div class="text">
    <div class="main"></div>
</div>
<!--下面是css代码-->
 .aside {
    margin-bottom: 100px;  
     width: 100px;
     height: 150px;
     background: #f66;
 }
 .main {
     margin-top: 100px;
     height: 200px;
     background: #fcc;
 }
  .text{
     /*盒子main的外面包一个div,通过改变此div的属性使两个盒子分属于两个不同的BFC,以此来阻止margin重叠*/
     overflow: hidden;  //此时已经触发了BFC属性。
 }

设置元素浮动后,该元素的display值是多少

自动变成display:block

移动端的布局用过媒体查询吗?

CSS优化、提高性能的方法有哪些

1、避免过度约束

2、避免后代选择符

3、避免链式选择符

4、使用紧凑的语法

5、避免不必要的命名空间

6、避免不必要的重复

7、最好使用表示语义的名字,一个好的类名应该是描述他是什么而不是像什么

8、避免!important,可以选择其他选择器

9、尽可能的精简规则,你可以合并不同类里的重复规则


相关文章
|
NoSQL Java Go
面试题30天打卡-day02
面试题30天打卡-day02
49 0
|
Cloud Native 关系型数据库 MySQL
面试题30天打卡-day18
面试题30天打卡-day18
41 0
|
消息中间件 存储 NoSQL
面试题30天打卡-day23
面试题30天打卡-day23
32 0
|
5月前
|
存储 算法 编译器
C++面试题其一
C++文件编译与执行的四个阶段 预处理:处理#include、#define等预处理指令。 编译:将源码翻译为目标代码。 汇编:将目标代码转换为机器指令。 链接:将目标文件和库文件合并生成可执行文件。 STL中的vector的实现,是怎么扩容的? vector通过动态数组实现,当容量不足时,分配更大的内存(通常是原来的两倍),复制旧数据到新内存,并释放旧内存。
82 2
|
5月前
|
存储 程序员 编译器
C++面试题其二
extern "C" 用于告诉编译器按照C语言的链接方式处理代码,通常用于C++代码与C代码混合编程,以防止因名字修饰(name mangling)引起的链接错误。例如: extern "C" { void c_function(); } 通过这些问题的深入理解和解答,能够更好地掌握C++编程的核心概念和实际应用,为面试做好充分的准备。
73 1
|
前端开发 JavaScript 开发工具
【面试题2】2
【面试题2】
|
6月前
|
缓存 小程序 Java
【面试题】1、总结面试题1
【面试题】1、总结面试题1
59 0
|
6月前
|
JavaScript 前端开发
面试题总结
面试题总结
30 0
|
NoSQL 前端开发 Java
面试题30天打卡-day12
面试题30天打卡-day12
37 0
|
NoSQL 关系型数据库 应用服务中间件
面试题30天打卡-day15
面试题30天打卡-day15
43 0