一、有些瀏覽器不徹底支持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知多少系列的總結