jimczj / jimczj.github.io

个人原创文章博客存放地址

Home Page:https://jimczj.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HTML、CSS面试

jimczj opened this issue · comments

1.清楚浮动

1.采用一个HTML标签,以及css的clear属性,来手工清理浮动;

2.采用伪类:after,动态建立一个块元素,设定 clear属性,清理之前的浮动元素;

3.采用CSS overflow 非 visible 值(overflow:auto/overflow:hidden)设定使父容器包含浮动元素;

4.采用display:table/display:table-cell 等table系列属性将父元素变成 table 形式自动包含浮动元素;

5.使用 TABLE 以及 TD 标签作为浮动元素容器;

6.采用 float:left/float:right 方式将父元素同样浮动,就可以包含浮动内容;
7.在 IE 6/7 的标准文档模式中设置 “width/height/zoom” 等样式来自动清理浮动。

2.px,em,rem

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册),1em=16px
EM特点

  1. em的值并不是固定的;
  2. em会继承父级元素的字体大小。

为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%
写CSS的时候,需要注意两点

  1. body选择器中声明Font-size=62.5%;

  2. 将你的原来的px数值除以10,然后换上em作为单位;

  3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明

rem:
通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应

3.BFC原理

Block Formatting Context,中文直译为块级格式上下文。BFC就是一种布局方式,在这种布局方式下,盒子们自所在的containing block顶部一个接一个垂直排列,水平方向上撑满整个宽度(除非内部盒子自己建立了新的BFC)。两个相邻的BFC之间的距离由margin决定。在同一个BFC内部,两个垂直方向相邻的块级元素的margin会发生“塌陷”。

文档这里也间接指出了垂直相邻盒子margin合并的解决办法:就是给这两个盒子也创建BFC。

创建BFC:
float属性不为none
overflow不为visible(可以是hidden、scroll、auto)
position为absolute或fixed
display为inline-block、table-cell、table-caption

BFC的作用

  1. 清除内部浮动
    我们在布局时经常会遇到这个问题:对子元素设置浮动后,父元素会发生高度塌陷,也就是父元素的高度变为0。解决这个问题,只需要把把父元素变成一个BFC就行了。常用的办法是给父元素设置overflow:hidden。
  2. 垂直margin合并
    在CSS当中,相邻的两个盒子的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。
    折叠的结果:

两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。
两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。
两个外边距一正一负时,折叠结果是两者的相加的和。
这个同样可以利用BFC解决。关于原理在前文已经讲过了。
3. 创建自适应两栏布局

链接:http://www.jianshu.com/p/acf76871d259

响应式布局

@media
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。
initial-scale 外,您还可以在视口上设置以下属性:
minimum-scale
maximum-scale
user-scalable