一、有些浏览器不彻底支持css3,如今能够用哪一个工具去检测浏览器是否支持,以及支持哪些项?css
modernizr:检测浏览器对HTML5和CSS3特性(至于modernizr的介绍,能够看我另一篇博文HTML5系列四(特征检测、Modernizr.js的相关介绍))html
二、经常使用的html标签,它们的display属性通常默认为block和inline。有哪些经常使用标签的display不是block和inline,这些标签显示的时候和block/inline有何区别?css3
具体display属性值有以下:浏览器
inline能够理解为是流,这是没有大小和形状的,它的宽度取决于父容器的宽度。针对inline的标签,你设置宽度和高度是无效的。dom
如何把inline元素转换为块级元素工具
简单一点的说,通常的文字、图片它们是inline的,div是block的,而通常的通常的button、input是inline-block的。布局
因此说inline-block的特色能够总结为:外部看来是“流”,可是自身确实一个“块”。学习
三、一个表格的第一行显示红色背景,最后一行显示蓝色背景,中间行使用灰色/白色间隔的背景,如何写?字体
利用结构化伪类,就会以下这样写spa
这里插一句,若是要在各个菜单之间加下划线,以下图所示效果
通常人都会用
ul li { border-bottom: 1px solid #ccc; } ul li:last-child { border-bottom: 0px; }
可是事实上还有一种更加方便的方式(若是你对结构化伪类很了解的话)
ul li + li { border-top: 1px solid #ccc; }
这里补充说明一下以下两个结构化伪类:
四、伪元素 ::before、::after 是否用过?都是在哪些地方用的?
清除浮动、为一个div增长一个“三角”
事实上不少图标通常都很小(它自己就应该是很小的),可是我须要在这个小图标上增长事件绑定,那在手机端就更加糟糕了,用户根本点击不到,那怎么办,就能够利用before after能够来增长容器的大小
这里还提一句就是css中属性content只会在before after里面起做用,在其它属性中都没有效果。因此有时候不要给本身的代码写一些无用的属性,增长浏览器的解析时间。
五、css——层叠样式表,其中的“层叠”该如何理解?
这个没有什么好说的,事实上看到不少博文上都是说ID表明100,class表明10,Element表明1,我表示对这种解释不太赞同,若是想真正了解的话能够去看一下《CSS权威指南》,也能够去看一下CSS--结构和层叠
六、盒子模型的width实际上是指内容的宽度,不包括padding、border、margin。其实这样对咱们作css布局是很不利的,有什么方法可让width是所有的宽度?
box-sizing
....
其它还有挺多问题,我一一总结
浏览器是怎么工做的?
浏览器加载了html以后只为一件东西——dom树,浏览器把html变为dom树结构,就完成了对html的结构化。
浏览器将载入的html变为dom树,可是此时没有任何显示样式。因此显示的样式,都是css定义的,浏览器只会经过css来渲染视图样式
至于后来对视图的渲染,p是block、br换行,那是整合了css以后的事情。而浏览器整合css又是另外一个路线,和解析html是分开的。
html的解析是一条线,css的解析是一条线,二者会在某一点结合,造成最终的视图。
若是咱们以CSS为重点看,从上图中咱们能够总结出学习CSS的三个突破点。
事实上若是咱们从如上三个方面来了解css的话,思路就豁然开朗了。利用原文博主的一句话就是说借助别人的力量来提升本身,站在巨人的肩膀上才能看得更远。
css样式来源
我以前一直到《css权威指南》里面说的用户代理样式一词很不了解,看了博主的文章后才明白,在一些浏览器是能够自定义字号和字体的(用户在这里设置了字体和字号以后,它们会覆盖掉浏览器默认的样式)。
display:table具备包裹性,除了display:table以外,float及position:absolute也都具备包裹性,什么叫包裹性,简单一点的说就是宽度会根据内容而定,包裹的特性其实主要有三个表现:收缩、坚挺、隔绝。
在没有css3的column-count以前,你们都习惯用display:table-cell来实现多列布局,可是众所周知table-cell IE六、7不兼容。
纵向margin是会重叠
用div画下三角
div { border: 10px solid; border-color: #333 transparent transparent transparent; }
div设置了float以后,其宽度会自动调整为包裹住内容宽度,而不是撑满整个父容器。
被设置了float的元素会脱离文档流。
“清空格”这一特性的根本缘由是因为float会致使节点脱离文档流结构。它都不属于文档流结构了,那么它身边的什么换行、空格就都和它不要紧的,它就尽可能的往一边去靠拢,能靠多近就靠多近,这就是清空格的本质。事实上这些空格并无真正消失,只是位于float元素的后面罢了。
.clearfix:after { content: ''; display: table; clear: both; } .clearfix { *zoom: 1; }
看王朋福的css知多少系列的总结