前端面试面试官会问的问题以及答案

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

[HTML && CSS]



1.Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 

浏览器根据DOCTYPE是否存在以及使用的哪种DTD来选择要使用的呈现方法。如果XHTML文档包含形 常常导致页面以标准模式呈现。包含过渡DTD和URI的DOCTYPE也导致页面以标准模式呈现,但是有过 渡DTD而没有URI会导致页面以混杂模式呈现。DOCTYPE不存在或形式不正确会导致HTML和XHTML文档以混杂模式呈现。

根据DOCTYPE是否存在选择呈现模式,被称为DOCTYPE切换或DOCTYPE侦测。并非所有浏览器都采用这些规则,但是这些规则很好地说明了DOCTYPE切换的工作方式。要了解更全面的内容,可查阅网站http://hsivonen.iki.fi/doctype/,这里的图表说明了不同浏览器如何根据DOCTYPE声明来选择呈现方法。

DOCTYPE切换是浏览器用来区分遗留文档和符合标准的文档的手段。无论是否编写了有效的CSS,如果选择了错误的DOCTYPE,那么页面就将以混杂 模式呈现,其行为就可能会有错误或不可预测。因此,一定要在站点的每个页面上包含形式完整的DOCTYPE声明,并且在使用HTML时选择严格的DTD。

注意:的组成解释  可查阅http://my.oschina.net/u/1040928/blog/169779




2.行内元素有哪些?块级元素有哪些?CSS的盒模型?

 内联:a(锚点 超链接),abbr (缩写), acronym (首字),b(粗体),big(大体字)

    br(换行),em(强调),font(字体),i(斜体),img(图片),input(输入框),label(表格标签),s(中划线)

    Select(项目选项),small(小字体文本),span(内联容器),strike(中划线),strong(粗体加强),sub(下标)

 Sup(上标) textarea(多行文本输入框),tt(电传文本),u(下划线),var(定义变量)块级:e address(地址),blockquote(块引用),dir(目录列表),div (常用块级元素),dl(定义列表)

      ,fieldset-form(控制组)form (交互表单),h1~h6(1-6级标题),hr(水平线),menu(菜单列表),ol(有序列表)

。      Ul(无序列表),p(段落),table(表格),pre(格式化文本),noscript(可选脚本内容---不支持script的浏览器用的)

盒子本身的大小是这样计算的:

Width

width + padding-left + padding-right + border-left + border-right

Height

height + padding-top + padding-bottom + border-top + border-bottom


3.CSS引入的方式有哪些? link@import 的区别是?

 引入方式:内联 ,嵌入 ,外接(link、@import )   

本质上,这两种方式都是为了加载CSS文件,但还是存在着细微的差别。
差别1:老祖宗的差别。link属于XHTML标签,而@import 完全是CSS提供的一种方式。
link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性等,@import 就只能加载CSS了。
差别2:加载顺序的差别。当一个页面被加载的时候(就是被浏览者浏览的时候),link引用的CSS会同时被加载,而@import 引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import 加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显(梦之都加载CSS的方式就是使用@import ,我一边下载一边浏览梦之都网页时,就会出现上述问题)。
差别3:兼容性的差别。由于@import 是CSS2.1提出的所以老的浏览器不支持,@import 只有在IE5以上的才能识别,而link标签无此问题。
差别4:使用dom控制样式时的差别。当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import 不是dom可以控制的。
差别5:@import 可以在css中再次引入其他样式表,比如可以创建一个主样式表,在主样式表中再引入其他的样式表,

4.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高? 


HTML selector 标签选择符

  HTML selector就是HTML的标签,如:DIV,TD,P,H1等等,如你用 CSS 定义了它们,在CSS文章所控制的页面中这个标签的性质就按照你的定义来显示。

  比如我们想叫H1的颜色是红的,则:H1 {color: red}。这里我们学习一个CSS的特点,它可定义好几个 selector在一个rule里。如:H1, H2, TD {color: red}。这个定义就能让所有的 H1, H2, 和 TD 的颜色都为红色。在具体使用中,可以将几个设置相同的属于合并起来编写,减小我们的代码。

  Class selector 类选择符

  Class selector有两种,一种叫相关 class selector,它跟一个 HTML 的标签有关系它的语法是tag.Classname {property:value}。如:我们想设置一些而不是全部 H1 的颜色是红的 H1.redone {color: red}则:第一个 H1 是红色的,而第二个就不是了 第二种是独立class selector。它可被任何 HTML标签所应用。它的语法如下 .Classname {property:value}假如我们有下面这个定义.blueone {color: blue}那么我们可以把他应用到不同的标签中去。非常明显class selector 给了我们更多的自由与发挥的空间。

  ID selector ID选择符

  ID selector 其实跟独立 class selector 的功能很相似。而区别在于它们的语法和用法不同,以及对于 javascript 操纵 HTML元素有帮助。我们在布局中,对不同的结构区域的定义,往往用ID选择符。

  它的语法如下#IDname {property:value}。假如我们有下面的定义#yelowone {color: yellow}。我们可以运用这个定义到任何的有同样 ID 名字的标签,如:text here你可能觉得既然 ID selector 和独立 class selector 功能一样,为什么两者都存在呢?有 ID 的 HTML元素可以被JavaScript来操纵。

Class 可继承

伪类A标签可以继承

列表 UL LI DL DD DT 可继承

优先级就近原则,样式定义最近者为准

载入样式以最后载入的定位为准

优先级为

!important > [ id > class > tag ]  

Important 比 内联优先级高

优先级算法:
1. 行内样式优先级Specificity值为1,0,0,0,高于外部定义。
如:sjweb


外部定义指经由