Was bedeutet ein "&" vor einem Pseudoelement in CSS?

73

Was bedeutet das kaufmännische Und (&) im folgenden CSS aus Twitter Bootstrap ?

.clearfix {
  *zoom: 1;
  &:before,
  &:after {
    display: table;
    content: "";
  }
  &:after {
    clear: both;
  }
}
Neodym
quelle
In Sass and Less ist das &ein Verweis auf den übergeordneten Selektor.
Cimmanon

Antworten:

88

Das ist WENIGER , nicht CSS.

Mit dieser Syntax können Sie Nest-Selektor-Modifikatoren verschachteln.

.clearfix { 
  &:before {
    content: '';
  }
}

Wird kompiliert zu:

.clearfix:before {
  content: '';
}

Mit dem &kompilieren die verschachtelten Selektoren zu .clearfix:before.
Ohne sie kompilieren sie zu .clearfix :before.

SLaks
quelle
10
@KatieK: Bootstrap ist in WENIGER geschrieben, nicht in SASS
SLaks
18

Ein verschachteltes &Element wählt das übergeordnete Element in SASS und LESS aus. Es ist nicht nur für Pseudoelemente, es kann mit jeder Art von Selektor verwendet werden.

z.B

h1 {
    &.class {

    }
}

ist äquivalent zu:

h1.class {

}
Anthonygore
quelle
1
Ja @anthonygore, ich stimme dir zu.
Ramesh Kumar
6

Hier ist ein SCSS / LESS-Beispiel:

a {
   text-decoration: underline; 
   @include padding(15px);
   display: inline-block;

     & img  {
                padding-left: 7px;
               margin-top: -4px;
             }
 }

und sein Äquivalent in CSS:

a {
  text-decoration: underline; 
  @include padding(15px);
  display: inline-block;
}

a img  {
     padding-left: 7px;
     margin-top: -4px;
   }
Ramesh Kumar
quelle
Klares und objektives Beispiel. Vielen Dank!
Magno Alberto