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、尽可能的精简规则,你可以合并不同类里的重复规则