2016-05-31 38 views
0

我想知道是否有是針對以下CSS類更簡單的方法,因爲它會導致膨脹的一點點:CSS康貝選擇

我有不同的單頁,在這裏我想禁用粘頭效果,因爲其他元素被用於固定在該頁面上。到現在爲止我用選擇那些類:

.page-id-xx .header-is-sticky .header { 
position: static; 
} 

如果我想禁用20頁,我結束了使用20次以上的選擇類粘頭,但只有頁面-ID-XX將更改。它會是這樣的:

.page-id-1 .header-is-sticky .header, 
.page-id-2 .header-is-sticky .header, 
.page-id-3 .header-is-sticky .header, 

and so on ... 

我想知道,如果有針對.header類更智能的方式,可能與一些combiselectors的幫助?或者有一個快速的JavaScript片段?也許一個if循環通過檢查元素的ID(#subnav),它應該粘滯在頁面上的標題上?

感謝提前:)

回答

2

可能不必要的特殊性?

你絕對需要的家長選擇(即page-id-n),如果沒有的話,顯然下面的是相當多的優雅:

.header-is-sticky .header { 
    position: static; 
} 

以CSS選擇器的優勢

CSS提供了一系列attribute selectors,可用於根據各種屬性的各種約束來定位某些元素。開始與包含選擇器應符合您的需求。

/* This will match any element that has a class attribute that starts with "page-id" */ 
[class^="page-id"] .header-is-sticky .header { 
    position: static; 
} 

/* This will match any element that has a class attribute that contains "page-id" */ 
[class*="page-id"] .header-is-sticky .header { 
    position: static; 
} 
+0

嗨Rion,感謝您的快速回復。是的,需要使用page-id-xx來標識頁面,而頁面不應再粘滯。在其他頁面上,標題應該繼續表現粘性,這就是要點。每個頁面都有其獨特的page-id,通過在id之後添加一個數字,即使是頁眉應該繼續粘滯的頁面(因此這些類被命名爲page-id-1,page-id-2,page-id-3 ...等)。因此,我擔心,類「page-id」的一個全局性參數將無法解決它,導致每個頁面都會通過添加的數字獲得其唯一ID:( – DoUtDes

+0

然後,CSS選擇器方法很可能適用於您。值得注意的是,「開始」只會在你的頁面類是第一個出現在你的元素上的時候才起作用,然而「包含」一個應該按預期工作。 –

+0

我試了一下,最終發現粘頭是全局的因爲每個頁面都有「page-id」類,例如我有100個(子)頁面,每個頁面都有page-id,我只想從page-id-1禁用粘性頁眉直到page-id-20(of 100)。id爲21-100的頁面仍然應該有一個粘性標題,因爲不會有其他元素變爲粘性。有沒有一種方法來定位頁面1的粘性元素-20並在那種情況下根據.header類定義css規則?感謝您的耐心;) – DoUtDes