2011-05-09 67 views
0

CSS標記:撤消CSS層疊行爲

<td class="ui-datepicker-current-day"> 
    <a href="#" class="ui-state-default ui-state-active">17</a> 
</td> 

CSS Rules

.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default 
{ 
    background: url("images/ui-bg_glass_75_e6e6e6_1x400.png") repeat-x scroll 50% 50% #E6E6E6; 
    border: 1px solid #D3D3D3; 
    color: #555555; 
    font-weight: normal; 
} 

.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active 
{ 
    background: url("images/ui-bg_glass_65_ffffff_1x400.png") repeat-x scroll 50% 50% #FFFFFF; 
    border: 1px solid #AAAAAA; 
    color: #212121; 
    font-weight: normal; 
} 

當加入活性類,它覆蓋默認的風格這是正常的。但我不想要這種行爲。我希望將ui-state-active類添加(覆蓋)的樣式恢復爲ui-state-default中指定的值,同時最小的麻煩是:不改變原始CSS和/或刪除類。 類似於:

.ui-state-active { 
background: inherit; 
} 

似乎可行,但我不確定這是否正確。

編輯

這是我能夠補充的父類,像這樣:

<td class="ui-datepicker-current-day DISABLE-STATE-ACTIVE-CLASS"> 
    <a href="#" class="ui-state-default ui-state-active">17</a> 
</td> 
+0

要小心,'inherit'不會'恢復'通過另一個類應用的任何值,而是在繼承鏈上查找相應的值。 – schellmax 2011-05-09 16:17:31

+0

@schellmax:理解,而不是起來,我需要刪除/禁用由第一個類以外的類添加的元素樣式。 – 2011-05-10 04:03:37

+0

爲什麼你不想刪除班級? – 2011-05-10 04:26:58

回答

0

你想要什麼背景中顯示?

如果您始終希望此td從其父項繼承其背景,繼承將會起作用。這就是說,總的來說就是你如何處理CSS中的覆蓋。可以重寫樣式設置內聯,在<style>標記中具有相同或更高優先級的重寫樣式,或使用!important標記重寫樣式。

在你的例子中,它看起來像我background: inherit應該是很好,但如果這不適合你,你可以隨時嘗試background: transparent舊備用。

+0

只是想說明一下,我認爲你對'!important'的描述有點誤導。它並不意味着簡單地「覆蓋」CSS--如果你要在同一個選擇器上制定新的規則,反正會發生什麼,而是不考慮特殊性而重寫。我發現如果一個人在樣式表中有許多重要的東西,他們可能對特異性和/或不在乎都不太瞭解,最終會導致混亂。 – 2011-05-10 04:24:41

+2

正確,'!重要'是最好的保存絕對絕望,因爲它是霰彈槍的方法。 – HurnsMobile 2011-05-10 04:37:15

+0

我設法做到這一點,把日曆放在一個帶有ID的div內,然後編寫css規則'#customdatepicker .ui-state-default {background:#E6E6E6; border-color:#D3D3D3;}'。重要與否,即使單元格應用了「ui-state-highlight」/「ui-state-active」類,瀏覽器似乎也會覆蓋背景顏色。 – 2011-05-10 13:30:23

1

不知道爲什麼這'似乎工作',它顯然不應該。如果繼承鏈中沒有定義「背景」的其他元素,則應將該值重新設置爲「透明」(這是默認值)。

你不能這樣做一個聲明'撤消',雖然可能有很好的理由試圖這樣做(如你的情況)。我想回到'ui-state-default'中定義的背景值的唯一方法是從dom元素中移除'ui-state-active'類。這將涉及到更改插件js代碼,並且很明顯你爲什麼要避免這種情況。

爲什麼不簡單地在CSS中設置相同的顏色?只需點擊幾下鼠標即可:)

+0

你是對的,我不希望繼承,因爲這是* up *,我需要去邊路...從元素上定義的第一個類繼承(* ui-state-default * ui-state-active )。我正在使用ui-datepicker * inline *,它具有複雜的onSelect和beforeShowDay以及大量的背景顏色。今天(uistate-highlight)和點擊日(uistate-active)分別變成黃色和白色,我不想用這些顏色來表示別的東西。 – 2011-05-10 04:12:00