2015-11-30 32 views
3

我試圖獲得內聯元素的真實樣式,但它始終將CSS應用到它。我不想修改我的CSS,太多的頁面依賴於它。jQuery:獲取內聯樣式不是CSS的正文

<body class="processed" style="padding-top: 157px ;margin-top: 0px;"> 

我的CSS

.processed{padding-top: 56px !important;} 

JS:

$(function(){ 
    var pad = $('body').css('padding-top'); 
    $('body').attr('style','padding-top:'+ pad +' !important; margin-top: 0px;'); 
    console.log('pad' + pad);  

}); 

結果:body與內嵌樣式56px,而不是157px ...

+0

!內聯樣式是CSS,它只是內聯CSS。你在問什麼? –

+0

Javascript修改CSS總是得到當前元素的計算樣式。如果你有100個類規則,它不會顯示所有類的CSS,而是由於[css特定規則](https://developer.mozilla.org/en),元素當前正在服從的CSS規則-US/docs/Web/CSS/Specificity) –

+1

通過將'!important'添加到您的css中,您可以覆蓋內聯樣式,因此它將爲56px。 – Banana

回答

1

解決,這個問題是一個腳本後DOM準備......重要的起到了很好的作用,首要的風格..

1

您可以創建一個第二「重要的「類,所以它不會影響其他人r頁面,但它會覆蓋第一個「重要」類。

你只需要在第一個類之後編寫新的類。

例如:

HTML:

<body class="processed processed-large-top"> 

CSS:

.processed{padding-top: 56px !important;} 
.processed-large-top{padding-top: 157px !important; margin-top: 0px;} 
0

CSS規則重要比內嵌樣式更高的優先級。要覆蓋它,您還必須在內聯樣式CSS上使用!important重要

所以,你的HTML標籤必須結束這樣的:

<body class="processed" style="padding-top: 157px !important;margin-top: 0px;">