第一問:當margin的值為百分比形式時,為什麼瀏覽器會根據父容器寬度得出計算值?
/*修改書寫模式*/
.demo{
-webkit-writing-mode: vertical-rl; /* for browsers of webkit engine */
writing-mode: tb-rl; /* for ie */
}複製程式碼
第二問:margin:auto為什麼只能實現水平居中,不能垂直居中?
第三問:可以讓一個position:fixed的元素相對於一個容器定位而非瀏覽器視口嗎?
關於transform更多的影響可以在張鑫旭的部落格中看到:CSS3 transform對普通元素的N多渲染影響。
第五問:可以用CSS做出一個圖示嗎?比如一個三角形?一個小房子?
一個標籤,放在HTML中,只能代表一種語義。然而一個標籤加CSS,則可以創造出無限的可能。請看DEMO:CSS實現三角形,小房子圖案。
你能想象嗎?這些圖示都是用CSS畫出來的。要想了解更多的CSS3圖示,可以訪問這個網站:http://www.uiplayground.in/css3-icons/
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie6"><![endif]-->
<!--[if IE 7 ]><html class="ie7"><![endif]-->
<!--[if IE 8 ]><html class="ie8"><![endif]-->
<!--[if IE 9 ]><html class="ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html class="w3c"><!--<![endif]-->
<head>複製程式碼
.ie7 #hd_usernav:before, .ie8 #hd_usernav:before {
display: none
}
.ie6 .skin_no #hd_nav li, .ie7 .skin_no #hd_nav li, .ie8 .skin_no #hd_nav li {
border-right-color: #c5c5c5
}
.ie6 .skin_no #hd_nav a, .ie7 .skin_no #hd_nav a, .ie8 .skin_no #hd_nav a {
color: #c5c5c5
}
……複製程式碼
這樣做的優點就是克服了使用特殊符號hack的那些缺點,缺點是需要寫更多的程式碼,使頁面增大。
第八問:CSS規則根據優先順序生效,低優先順序的規則會被瀏覽器忽略還是覆蓋?
知道這個小tip的人不在少數,那麼是什麼原理導致這種現象呢?學習CSS就需要刨根問底,一張圖可以把這個問題說明白。
所謂清除浮動,一般是為了解決子元素浮動導致父容器高度坍塌。目前有多種方式來解決這個問題,最常見的有after偽元素,父元素設定“overflow:hidden”等等,請看DEMO:七種清除浮動的方法。
其實按照原理,這幾種方法可以歸納為兩種:clear:both法和構造BFC法。
方法 | 分類 |
浮動末尾新增新標籤,設定樣式為clear:both | clear:both |
浮動末尾新增<br />標籤 | clear:both |
使用::after偽元素 | clear:both |
父元素設定display:table | 構造BFC |
父元素設定overflow:auto | 構造BFC |
父元素設定overflow:hidden | 構造BFC |
讓父元素也浮動 | 構造BFC |
使用“clear:both”來清除浮動自然不必多說,那麼什麼是構造BFC法呢?
所以在IE6-7下,清除浮動除了可以使用clear:both外(::after偽元素無法使用),另一種方法就是讓父元素has layout。
關於清除浮動更多的探討可以在一絲冰涼的部落格中看到:那些年我們一起清除過的浮動。
CSS很簡單,她的出現僅僅是為了排版。CSS很複雜,一個簡單的排版往往有N種解決方案。