2016-11-22 3 views
2

Der Versuch, das SASS Ampersand zu verwenden, um die folgende css Ausgabe zu bekommen. Es funktioniert nicht, wenn wir Ampersand mit dem inneren Peso-Selektor verwenden.Sass Ampersand Verschachtelung mit Pseudo Selektoren

CSS

.test:first-child .test-image { display: block; } 

SASS

.test { 
    &:first-child { 
     display: inline-block; 
     &-image { 
      display: block; 
     } 
    } 
} 

Above Code im Grunde die -Image mit erstem Kind kaskadieren.

Antwort

3

Dies liegt daran, das Ampersand nur ist das Elternteil mit dem Kind verketten. Wenn Sie die kompilierte CSS aussehen wie Ihr Beispiel möchten, müssen Sie dies tun:

.test { 
    &:first-child &-image{ 
     display: block;  
    } 
} 
+1

Dank David, ist es für mich gearbeitet. Eine kurze Frage, wenn das erste Kind auch einige CSS-Properties in sich hat, muss ich dann eine separate Nesting für das erste Kind schreiben? –

+0

Das ist eine wirklich gute Frage. Ich habe gerade ein paar Tests gemacht und es sieht so aus, als könnten Sie das tun: '' '.test { &: first-child { Höhe: 20px; & .test-image { höhe: 30px; } } } '' ' Ich lernte etwas Neues! Wenn Sie meine Antwort richtig überprüfen könnten, wäre das auch schön ~ – davidatthepark

1

Wenn Sie

.test:first-child .test-image { display: block; } 

mit Ihrem Code zu erreichen versuchen, ist es wie dieser

.test:first-child-image { 
    display: block; 
} 

Stattdessen zusammengestellt bekommen, können Sie es einfach wie diese schreiben.

.test:first-child { 
     .test-image { 
      display: block; 
     } 
} 

Hoffe, es hilft

+0

sollten Sie ':' 'vor der ersten child' – pwolaq

0

Es klingt wie Sie verwechselt haben, wie die Ampersand in Sass arbeitet. Das kaufmännische Und ist im Wesentlichen eine Abkürzung für das Schreiben jedes äußeren Selektors und das anschließende Hinzufügen des Selektors nach dem Ende. Da sich .test-image von .test unterscheidet, sollten Sie es wie folgt angeben.

.test { 
    &:first-child { 
     .test-image { 
      display: block; 
     } 
    } 
} 

Compiliert zu

.test:first-child .test-image { 
    display: block; 
} 
Verwandte Themen