webentwicklung-frage-antwort-db.com.de

Kann ich Variablen für Selektoren verwenden?

Ich habe diese Variable:

$Gutter: 10;

Ich möchte es in einem Selector wie SCSS verwenden:

.grid+$Gutter {
    background: red;
}

so wird die Ausgabe zu CSS:

.grid10 {
    background: red;
}

Das geht aber nicht. Ist es möglich?

61
Johansrk
$Gutter: 10;

.grid#{$Gutter} {
    background: red;
}

Wenn in einem String zum Beispiel in einer URL verwendet:

background: url('/ui/all/fonts/#{$filename}.woff')
98
glortho

Aus der Sass-Referenz zu "Interpolation" :

Sie können SassScript-Variablen auch in Selektoren und Eigenschaftennamen verwenden, indem Sie die Interpolationssyntax # {} verwenden:

$Gutter: 10;

.grid#{$Gutter} {
    background: red;
}

Darüber hinaus ist die Direktive @each nicht erforderlich, damit die Interpolation funktioniert. Da Ihr $Gutter nur einen Wert enthält, ist keine Schleife erforderlich.

Wenn Sie mehrere Werte zum Erstellen von Regeln haben, können Sie eine Sass-Liste verwenden und @each :

$grid: 10, 40, 120, 240;

@each $i in $grid {
  .g#{$i}{
    width: #{$i}px;
  }
}

... um folgende Ausgabe zu erzeugen:

.g10  { width: 10px; }
.g40  { width: 40px; }
.g120 { width: 120px; }
.g240 { width: 240px; }

Hier sind einige weitere Beispiele. .

38
fk_

Hier ist die Lösung

$Gutter: 10;

@each $i in $Gutter {
  .g#{$i}{
     background: red;
  }
}
2
Johansrk

wenn es ein Herstellerpräfix wäre, wurde das Mixin in meinem Fall nicht kompiliert. Also habe ich dieses Beispiel verwendet

@mixin range-thumb()
  -webkit-appearance: none;
  border: 1px solid #000000;
  height: 36px;
  width: 16px;
  border-radius: 3px;
  background: #ffffff;
  cursor: pointer;
  margin-top: -14px; 
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;

input[type=range]
  &::-webkit-slider-thumb
    @include range-thumb()
  &::-moz-range-thumb
    @include range-thumb()
  &::-ms-thumb
    @include range-thumb()
0
Artemee Senin