開始思考這個問題的起因:
有一次寫練習,當我想設定乙個div元素的垂直居中布局時,設定為以下css**:
position:absolute;
left:50%;
top:50%;
margin-top:此處為元素高度的一半,是個負值;
margin-letf:此處為元素寬度的一半,是個負值;
並且這個div元素的父元素為body,當我設定body元素為:
height:100%;
這個時候問題出現了,div塊並沒有如期的出現垂直居中的效果,我一開始以為是垂直居中的問題,後繼改了好幾種方案,但是仍然不起作用。
當我開啟firefox的檢視器時,發現body元素的height只有另乙個div元素的height那麼大,所以並不是垂直居中出了問題,而是我的body元素高度就沒有達到瀏覽器視窗高度的100%,所以垂直居中並沒有達到理想中的效果。
解決方案
所以只要解決body的高度問題就行了。
查了下發現有以下解決途徑:
在怪異模式下,也就是網頁頭部不寫doctype的時候,body可以作為html元素的根元素,設定它的高度為百分之百的時候(不考慮外邊距),可以使的頁面的高度和瀏覽器客戶區相同。在標準模式下,也就是網頁頭部寫doctype的時候,body不是html頁面的根元素,html才是根元素,如果僅僅設定body的100%,不設定html元素的高度為100%,那麼body的高度不會生效,之所以不生效,是因為如果要以百分比設定元素的尺寸,必要以父元素的尺寸作為參考,如果父元素沒有設定尺寸,自然不會生效。
在標準模式下,由於沒有設定html的高度,所以body的高度100%就沒有參考高度,於是也就導致div的百分比高度無效,如果將css**中的第一行設定為:
div的100%是從其上一級div的寬高繼承來的,有一點很關鍵,就是要設定div100%顯示,必須設定其上一級div的寬度或高度,否則無效。
前面總得有個容器說明他的高度是多少。這樣的話div才能按比例100%繼承上一級的高度可惜的是瀏覽器一般預設解釋為內容的高度,而不是100%。
解決方法:只要為html和body設定高度為100%就可以了,html,body,這樣之後div會按比例來繼承上一級的高度了.僅僅設定的div元素的height屬性貌似沒有什麼效果。
另外,html的高度是相對瀏覽器高度來說的
CSS和HTML面試常見題(一)
一 css三大特性 1.層疊 如果樣式發生衝突,就近原則 2.繼承 子承父業 1 以font開頭 line color都繼承 2 無繼承的屬性 1 display 2 文字屬性 vertical align text decoration text shadow white space unicod...
HTML和CSS常見面試題
css 選擇符 1.id選擇器 myid 2.類選擇器 myclassname 3.標籤選擇器 div,h1,p 4.相鄰選擇器 h1 p 5.子選擇器 ul li 6.後代選擇器 li a 7.萬用字元選擇器 8.屬性選擇器 a rel external 9.偽類選擇器 a hover,li nt...
HTML及CSS學習感想
學習html和css的過程中我還蠻痛苦的,我接觸程式設計是從python寫自動化測試指令碼開始的,涉及邏輯及語法,但是 接觸html和css的過程中,我發現是很容易上手,但是只能一點點實現,並沒有一本書或者乙個技能去教你完成整個 最恐怖的更在於 如果簡單的前端會淪落為ps切圖及靜態 的製作,說實話,...