如果我有一個塊級元素,我選擇它在CSS中並聲明CSS規則margin: auto;
然後沒有任何事情發生。但是當我包含width: 100px;
時,它突然變爲居中在屏幕中間。爲什麼包括width
會發生這種情況?爲什麼包括寬度使邊距:自動中心塊級元素正確?
回答
它實際上中心的DIV!如果你試圖給div分配一個顏色,你會發現div實際上填滿了頁面的整個寬度,並且實際上居中(或者說他們已經填充了整個空間,沒有地方可以水平移動)。
如果您沒有爲它們定義寬度,div會自動填充其父項的寬度。
如果你把`width:100px'給了他們,那只是說明它實際上是居中。
UPDATE(hungerstar希望它是更多的技術):
你有一個500像素寬度的父容器,並在其中一個孩子說你的風格margin 0 auto;
那個孩子爲中心,但它是隻是不明顯。爲什麼?因爲div自動適合自己的父(divs有width: auto;
作爲默認值,如果你沒有指定它),因此它的寬度也是500px,剩餘空間讓它在父級中水平移動。
如果指定的寬度大於500px,則會溢出到其父容器的右側,因爲瀏覽器首先優先考慮左邊距,但如果使用400px寬度指定,則會啓動margin: 0 auto;
並計算左邊距通過(parent_width - this_child_width)/2
,然後根據該方程式留下剩餘空間分配右邊距。
因此我們有this_child_width = 500px
和parent_width = 500px
因此(500px-500px)/2 = 0
。左邊和右邊0邊距= CENTERED。
這是他的問題的答案。問題是:爲什麼包括寬度使邊距:自動中心塊級元素正確?因此這是一個有效的答案。 –
驗證某件作品不是答案。說它填滿整個與沒有解釋**如何**設置塊級元素的邊界爲「自動」居中它。那麼,它以一種非常模糊的迂迴方式,因爲它會佔據整個寬度。我希望看到更多技術性的東西。有人說,我如何確定這個元素將居中並佔據整個寬度? – hungerstar
@hungerstar你顯然看不到點先生。這就是實際的答案,如果你把'margin:0 auto'放在它上面,它就已經居中了,但是你不能看到它,因爲如果它填滿整個寬度,它實際上不會顯示出來。如果將寬度設置得比之前小,那麼對中會明顯發生。 –
其實很簡單。自動計算邊距需要一個參考點。
的公式是這樣的:
container - width = total margin allowance
由於容器內的1000像素容器700像素元素:
1000px - 700px = 300px for margins
如果你只有一個汽車保證金,那麼保證金將爲300px
。如果您有兩個邊距(如margin: 0 auto;
),它們設置左邊距和右邊距,則每個左邊距和右邊距300px/2 = 150px
將得到150px
。在設置寬度塊級元素的每一邊添加相同數量的邊距就是創建居中效果的原因。
現在嘗試沒有設置寬度的公式。
1000px - ?? = ?? for margins
單利潤率爲??/1 = 100% of ??
和兩個利潤??/2 = 50% of ??
。
百分比寬度做工精細也是因爲:
1000px - 50% = 500px
或1000px - 500px = 500px
(截至1000像素的50%是500像素)
- 1. CSS元素邊框包括邊距
- 2. 爲什麼元素不是來自父級的邊距?
- 3. 塊級元素的摺疊寬度高度和邊距平均值是多少?
- 4. 在塊元素中限制邊框寬度爲文本寬度
- 5. 固定寬度的中心元素,兩邊都有自動擴展元素
- 6. 寬度和邊距自動到中心不起作用
- 7. 獲取指定元素的總寬度,包括邊距和填充
- 8. jQuery中元素的總寬度(包括填充和邊框)
- 9. 在IE7中使用塊元素的自動邊距
- 10. 爲什麼錨元素不遵循div底部邊距和div寬度不正確?
- 11. 在寬度上正確使用邊距,百分比爲%
- 12. 爲什麼我的塊元素的寬度和高度爲0?
- 13. 活動元素的寬度不正確?
- 14. 以自定義寬度爲中心定位浮動元素
- 15. HTML元素全寬度包括::選擇
- 16. 中心動態寬度元素
- 17. 獲取邊距的絕對寬度(問題與邊距:自動;)
- 18. 爲什麼CSS浮動爲子元素添加邊距?
- 19. 浮動元素不包括在父,引起下邊距問題
- 20. 爲什麼我的頁腳中的鏈接包括頁邊距?
- 21. 爲什麼<packaging>元素包括
- 22. 爲什麼不返回DOM元素邊框寬度?
- 23. 浮動或嵌入塊元素上的自動邊距
- 24. 以邊距和最大寬度爲中心水平居中
- 25. 不在同一元素上使用寬度和填充/邊距?
- 26. 使用邊距自動居中div時是否需要寬度?
- 27. 什麼使得Firefox呈現不正確的邊框寬度?
- 28. 以最大寬度和側邊距爲中心內容%
- 29. 流體高度div包括邊距
- 30. 將邊距添加到IE7中的100%寬度元素?
糾正我,如果我錯了,但保證金:汽車;依賴於父和子元素的定義寬度? –
@DavidCalvin'margin:auto;'只需要塊級元素。但是,子元素上的百分比高度也需要父級也具有設置高度。 – hungerstar
Becaue最初div佔據了整個寬度,但是你在css中提到寬度就像width:100px和margin:auto。寬度將被設置並且居中對齊 –