1、介绍一下规范的 CSS 的盒子模型?低版本 IE 的盒子模型有什么不同的?相干知识点:
(1)有两种盒子模型:IE盒模型(border-box)、W3C规范盒模型(content-box)(2)盒模型:分为内容(content)、填充(padding)、边界(margin)、边框(border)四个局部IE盒模型和W3C规范盒模型的区别:(1)W3C规范盒模型:属性width,height只蕴含内容content,不蕴含border和padding(2)IE盒模型:属性width,height蕴含content、border和padding,指的是content+padding+border。在ie8+浏览器中应用哪个盒模型能够由box-sizing(CSS新增的属性)管制,默认值为content-box,即规范盒模型;如果将box-sizing设为border-box则用的是IE盒模型。如果在ie6,7,8中DOCTYPE缺失会将盒子模型解释为IE盒子模型。若在页面中申明了DOCTYPE类型,所有的浏览器都会把盒模型解释为W3C盒模型。答复:
盒模型都是由四个局部组成的,别离是margin、border、padding和content。规范盒模型和IE盒模型的区别在于设置width和height时,所对应的范畴不同。规范盒模型的width和height属性的范畴只蕴含了content,而IE盒模型的width和height属性的范畴蕴含了border、padding和content。一般来说,咱们能够通过批改元素的box-sizing属性来扭转元素的盒模型。具体的材料能够参考: 《CSS 盒模型详解》
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、伪类与伪元素的区别
css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来润饰不在文档树中的局部,比方,一句话中的第一个字母,或者是列表中的第一个元素。伪类用于当已有的元素处于某个状态时,为其增加对应的款式,这个状态是依据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,咱们能够通过:hover来形容这个元素的状态。伪元素用于创立一些不在文档树中的元素,并为其增加款式。它们容许咱们为元素的某些局部设置款式。比如说,咱们能够通过::before来在一个元素前减少一些文本,并为这些文本增加款式。尽管用户能够看到这些文本,然而这些文本实际上不在文档树中。有时你会发现伪元素应用了两个冒号(::)而不是一个冒号(:)。这是CSS3的一部分,并尝试辨别伪类和伪元素。大多数浏览器都反对这两个值。依照规定应该应用(::)而不是(:),从而辨别伪类和伪元素。然而,因为在旧版本的W3C标准并未对此进行特地辨别,因而目前绝大多数的浏览器都反对应用这两种形式示意伪元素。详细资料能够参考: 《总结伪类与伪元素》
5、CSS 中哪些属性能够继承?
相干材料:
每个CSS属性定义的概述都指出了这个属性是默认继承的,还是默认不继承的。这决定了当你没有为元素的属性指定值时该如何计算值。当元素的一个继承属性没有指定值时,则取父元素的同属性的计算值。只有文档根元素取该属性的概述中给定的初始值(这里的意思应该是在该属性自身的定义中的默认值)。当元素的一个非继承属性(在Mozilla code里有时称之为reset property)没有指定值时,则取属性的初始值initial value(该值在该属性的概述里被指定)。有继承性的属性:(1)字体系列属性font、font-family、font-weight、font-size、font-style、font-variant、font-stretch、font-size-adjust(2)文本系列属性text-indent、text-align、text-shadow、line-height、word-spacing、letter-spacing、text-transform、direction、color(3)表格布局属性caption-side border-collapse empty-cells(4)列表属性list-style-type、list-style-image、list-style-position、list-style(5)光标属性cursor(6)元素可见性visibility(7)还有一些不罕用的;speak,page,设置嵌套援用的引号类型quotes等属性留神:当一个属性不是继承属性时,能够应用inherit关键字指定一个属性应从父元素继承它的值,inherit关键字用于显式地指定继承性,可用于任何继承性/非继承性属性。答复:
每一个属性在定义中都给出了这个属性是否具备继承性,一个具备继承性的属性会在没有指定值的时候,会应用父元素的同属性的值来作为本人的值。个别具备继承性的属性有,字体相干的属性,font-size和font-weight等。文本相干的属性,color和text-align等。表格的一些布局属性、列表属性如list-style等。还有光标属性cursor、元素可见性visibility。当一个属性不是继承属性的时候,咱们也能够通过将它的值设置为inherit来使它从父元素那获取同名的属性值来继承。具体的材料能够参考: 《继承属性》 《CSS 有哪些属性能够继承?》
6、CSS 优先级算法如何计算?
相干知识点:
CSS的优先级是依据款式申明的特殊性值来判断的。选择器的特殊性值分为四个等级,如下:(1)标签内选择符x,0,0,0(2)ID选择符0,x,0,0(3)class选择符/属性选择符/伪类选择符 0,0,x,0(4)元素和伪元素选择符0,0,0,x计算方法:(1)每个等级的初始值为0(2)每个等级的叠加为选择器呈现的次数相加(3)不可进位,比方0,99,99,99(4)顺次示意为:0,0,0,0(5)每个等级计数之间没关联(6)等级判断从左向右,如果某一位数值雷同,则判断下一位数值(7)如果两个优先级雷同,则最初呈现的优先级高,!important也实用(8)通配符选择器的特殊性值为:0,0,0,0(9)继承款式优先级最低,通配符款式优先级高于继承款式(10)!important(权重),它没有特殊性值,但它的优先级是最高的,为了不便记忆,能够认为它的特殊性值为1,0,0,0,0。计算实例:(1)#demo a{color: orange;}/*特殊性值:0,1,0,1*/(2)div#demo a{color: red;}/*特殊性值:0,1,0,2*/留神:(1)款式利用时,css会先查看规定的权重(!important),加了权重的优先级最高,当权重雷同的时候,会比拟规定的特殊性。(2)特殊性值越大的申明优先级越高。(3)雷同特殊性值的申明,依据款式引入的程序,后申明的规定优先级高(间隔元素呈现最近的) (4) 局部浏览器因为字节溢出问题呈现的进位体现不做思考答复:
判断优先级时,首先咱们会判断一条属性申明是否有权重,也就是是否在申明前面加上了!important。一条申明如果加上了权重,那么它的优先级就是最高的,前提是它之后不再呈现雷同权重的申明。如果权重雷同,咱们则须要去比拟匹配规定的特殊性。一条匹配规定个别由多个选择器组成,一条规定的特殊性由组成它的选择器的特殊性累加而成。选择器的特殊性能够分为四个等级,第一个等级是行内款式,为1000,第二个等级是id选择器,为0100,第三个等级是类选择器、伪类选择器和属性选择器,为0010,第四个等级是元素选择器和伪元素选择器,为0001。规定中每呈现一个选择器,就将它的特殊性进行叠加,这个叠加只限于对应的等级的叠加,不会产生进位。选择器特殊性值的比拟是从左向右排序的,也就是说以1结尾的特殊性值比所有以0结尾的特殊性值要大。比如说特殊性值为1000的的规定优先级就要比特殊性值为0999的规定高。如果两个规定的特殊性值相等的时候,那么就会依据它们引入的程序,后呈现的规定的优先级最高。对于组合申明的特殊性值计算能够参考: 《CSS 优先级计算及利用》 《CSS 优先级计算规定》 《乏味:256 个 class 选择器能够干掉 1 个 id 选择器》
7、对于伪类 LVHA 的解释?
a标签有四种状态:链接拜访前、链接拜访后、鼠标滑过、激活,别离对应四种伪类:link、:visited、:hover、:active;当链接未拜访过期:(1)当鼠标滑过a链接时,满足:link和:hover两种状态,要扭转a标签的色彩,就必须将:hover伪类在:link伪类前面申明;(2)当鼠标点击激活a链接时,同时满足:link、:hover、:active三种状态,要显示a标签激活时的款式(:active),必须将:active申明放到:link和:hover之后。因而得出LVHA这个程序。当链接拜访过期,状况根本同上,只不过须要将:link换成:visited。这个程序能不能变?能够,但也只有:link和:visited能够替换地位,因为一个链接要么拜访过要么没拜访过,不可能同时满足,也就不存在笼罩的问题。8、CSS3 新增伪类有那些?
(1)elem:nth-child(n)选中父元素下的第n个子元素,并且这个子元素的标签名为elem,n能够承受具体的数值,也能够承受函数。(2)elem:nth-last-child(n)作用同上,不过是从后开始查找。(3)elem:last-child选中最初一个子元素。(4)elem:only-child如果elem是父元素下惟一的子元素,则选中之。(5)elem:nth-of-type(n)选中父元素下第n个elem类型元素,n能够承受具体的数值,也能够承受函数。(6)elem:first-of-type选中父元素下第一个elem类型元素。(7)elem:last-of-type选中父元素下最初一个elem类型元素。(8)elem:only-of-type如果父元素下的子元素只有一个elem类型元素,则选中该元素。(9)elem:empty选中不蕴含子元素和内容的elem类型元素。(10)elem:target抉择以后流动的elem元素。(11):not(elem)抉择非elem元素的每个元素。(12):enabled 管制表单控件的禁用状态。(13):disabled 管制表单控件的禁用状态。(14):checked单选框或复选框被选中。具体的材料能够参考: 《CSS3 新个性总结(伪类)》 《浅谈 CSS 伪类和伪元素及 CSS3 新增伪类》
9、如何居中 div?
-程度居中:给 div 设置一个宽度,而后增加 margin:0 auto 属性
...