1.介绍一下标准的 CSS 的盒子模型?低版本 IE 的盒子模型有什么不同的?

  1. 1)有两种盒子模型:IE盒模型(border-box)、W3C标准盒模型(content-box
  2. 2)盒模型:分为内容(content)、填充(padding)、边界(margin)、边框(border)四个部分
  3. IE盒模型和W3C标准盒模型的区别:
  4. 1W3C标准盒模型:属性widthheight只包含内容content,不包含borderpadding
  5. 2IE盒模型:属性widthheight包含contentborderpadding,指的是content
  6. +padding+border
  7. ie8+浏览器中使用哪个盒模型可以由box-sizingCSS新增的属性)控制,默认值为content-box,即标准盒模型;
  8. 如果将box-sizing设为border-box则用的是IE盒模型。如果在ie678DOCTYPE缺失会将盒子模型解释为IE
  9. 盒子模型。若在页面中声明了DOCTYPE类型,所有的浏览器都会把盒模型解释为W3C盒模型。

回答

盒模型都是由四个部分组成的,分别是margin、border、padding和content。
标准盒模型和IE盒模型的区别在于设置width和height时,所对应的范围不同。标准盒模型的width和height属性的
范围只包含了content,而IE盒模型的width和height属性的范围包含了border、padding和content。
一般来说,我们可以通过修改元素的box-sizing属性来改变元素的盒模型。

2 CSS 选择符有哪些?

(1)id选择器(#myid)
(2)类选择器(.myclassname)
(3)标签选择器(div,h1,p)
(4)后代选择器(h1 p)
(5)相邻后代选择器(子)选择器(ul>li)
(6)兄弟选择器(li~a)
(7)相邻兄弟选择器(li+a)
(8)属性选择器(a[rel="external"])
(9)伪类选择器(a:hover,li:nth-child)
(10)伪元素选择器(::before、::after)
(11)通配符选择器(*)

3 ::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用。

单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。(伪元素由双冒号和伪元素名称组成)
双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存在的伪元素写法,
比如:first-line、:first-letter、:before、:after等,
而新的在CSS3中引入的伪元素则不允许再支持旧的单冒号的写法。
想让插入的内容出现在其它内容前,使用::before,否者,使用::after;
在代码顺序上,::after生成的内容也比::before生成的内容靠后。
如果按堆栈视角,::after生成的内容会在::before生成的内容之上。
在css3中使用单冒号来表示伪类,用双冒号来表示伪元素。但是为了兼容已有的伪元素的写法,在一些浏览器中也可以使用单冒号
来表示伪元素。
伪类一般匹配的是元素的一些特殊状态,如hover、link等,而伪元素一般匹配的特殊的位置,比如after、before等。

4.伪类与伪元素的区别