2016-09-28 44 views
1

我使用較少的CSS,並嘗試使用&來組合多個選擇器。我已經創建了一個虛擬環境來闡述這個問題。減去CSS選擇器問題

HTML

<div class="ampuse"> 
    <p>This is first</p> 
    <p>This is second</p> 
    <div>This is div 1</div> 
    <p>This is Third</p> 
    <em>This is em</em> 
    <div>This is div 2</div> 
    <div>This is div 3</div> 
</div> 

LESS

.ampuse{ 
    p,div{ 
     color: red; 
     &+&{ 
      background: yellow; 
      color: blue; 
     } 
    } 
} 

現在根據不甚規則,這將創建一個這樣

.ampuse p, 
.ampuse div { 
    color: red; 
} 

.ampuse p + .ampuse p, 
.ampuse p + .ampuse div, 
.ampuse div + .ampuse p, 
.ampuse div + .ampuse div { 
    background: yellow; 
    color: blue; 
} 

的CSS,但我想渲染父只有一次,然後選擇器應該在children元素下工作。這是我想要的css

.ampuse p, 
.ampuse div { 
    color: red; 
} 

.ampuse p + p, 
.ampuse p + div, 
.ampuse div + p, 
.ampuse div + div { 
    background: yellow; 
    color: blue; 
} 

任何人都可以幫助我如何實現它少?

+0

您是否嘗試過'&+ P,+ div'? – Justinas

回答

0

答接受在我的評論說,使用& + p, & + div

.ampuse{ 
    p,div{ 
     color: red; 

     + p, 
     + div { 
      background: yellow; 
      color: blue; 
     } 
    } 
} 
+0

其實我有點困惑,這是怎麼工作的,因爲當我們使用'&+&'它意味着它會使'p,div'的所有比較,但'&+ p,&+ div'?它如何創建實例? –

+0

@GauravAggarwal它構成了選擇器的組合,但'&'意味着來自頂層的父母,女巫是'.ampuse p/div',這就是爲什麼'&+&導致'.ampuse p + .ampuse p' – Justinas

+0

@TheReveller我的回答是在評論,移動到真正的答案,你的答案是我的評論後,也許這就是爲什麼OP接受它。 – Justinas

2
.ampuse { 
    p, 
    div {color: red; 
     + p, 
     + div { 
      background: yellow; 
      color: blue; 
     } 
    } 
} 

使

.ampuse p, 
.ampuse div { 
    color: red; 
} 
.ampuse p + p, 
.ampuse div + p, 
.ampuse p + div, 
.ampuse div + div { 
    background: yellow; 
    color: blue; 
}