2013-08-31 38 views
18

我正在將一個遺留項目的CSS Reset與*{ margin:0; padding:0 }應用於一切。現在,我的新代碼不需要它,因爲它依賴於Normalize.css。這並沒有太大的問題,但在某些地方我需要使用這兩種風格。如何使填充:自動在CSS中工作?

如何重設我的CSS?我已經能夠做到*{margin:auto},它工作正常。關於填充也是如此。有沒有相當的方法來重置填充。你如何解決這個問題?

+0

首先填充:自動;是什麼都沒有..第二,無論你改變,你可以給!重要的是在任何情況下使用這一個 – nsthethunderbolt

+0

可能重複的[HTML/CSS:重置列表填充默認](http://stackoverflow.com/questions/5561101)/html-css-reset-list-padding-to-default) – Scottie

+0

@nsthethunderbolt我無法使用!重要,因爲我正在設計一個響應式設計,因此使用!重要可以使事情變得非常困難與媒體查詢 –

回答

19

auto不是padding屬性的有效值,你唯一可以做的就是從*聲明中取出padding: 0;,否則只要將padding到相應的屬性塊。

如果從* {}刪除padding: 0;比瀏覽器將應用默認樣式應用到的元素,這將給你通過幾個像素意想不到的跨瀏覽器的定位偏移,所以最好是padding: 0;使用*和分配比,如果你想覆蓋填充,只需使用另一個規則,如

.container p { 
    padding: 5px; 
} 
+0

我不想刪除'padding:0',因爲這會對以前做過的遺留代碼有問題。我認爲唯一的選擇是在需要的地方添加填充,因爲它不能像邊距那樣不需要填充。 –

+0

@VaibhavKanwal是的,正如我建議 –

2

您應該將您的*選擇器的範圍限定在需要重置的特定區域。 .legacy * { }

+0

一般我們設置'margin:0; padding:0'在'body'上,所以嵌套元素只是繼承了這個,上面的方法只有在你沒有設置'margin:0;填充:0'到身體 –

1

最簡單的支持的解決方案是要麼使用餘量

.element { 
    display: block; 
    margin: 0px auto; 
} 

或者使用一個第二容器,其具有應用這個餘量的元件周圍。如果確實存在的話,這會有一定的影響padding: 0px auto

CSS

.element_wrapper { 
    display: block; 
    margin: 0px auto; 
} 
.element { 
    background: blue; 
} 

HTML

<div class="element_wrapper"> 
    <div class="element"> 
    Hello world 
    </div> 
</div>