Frage

Ich versuche, meine CSS aufzuräumen, um mit der Verwendung von SCS sauberer zu sein.

Standard-CSS:

.dark-hr,
.light-hr { 
  width: 100%;
  height: 1px;
  margin: 15px 0px;
}
.dark-hr {
  background-color: #595959;
}
.light-hr {
  background-color: #cccccc;
}

vs scss:

.generic-hr { 
  width: 100%;
  height: 1px;
  margin: 15px 0px;
}
.dark-hr {
  @extend .generic-hr;
  background-color: #595959;
}
.light-hr {
  @extend .generic-hr;
  background-color: #cccccc;
}

Gibt es eine Möglichkeit, zu vermeiden, dass die 'Generic-HR'-Klasse erstellt wird, die nicht verwendet wird? Ich hatte gehofft, dass eine Art Nest gut funktionieren würde. In diesem Szenario ist der CSS definitiv sauberer und lesbarer als SCSS.

Idealerweise brauche ich das, um in SCSS zu arbeiten:

.## {
  // base class that is not outputted
  .dark-hr {
    //attributes the extend the base class '.##'
  }
  .light-hr {
    //attributes the extend the base class '.##'
  }
}

AUSGANG:

 .dark-hr, .light-hr {
   //shared attributes defined by '.##'
 }
 .dark-hr {
   // overrides
 }
 .light-hr {
   // overrides
 }
War es hilfreich?

Lösung

Was Sie verwenden möchten, ist ein Klasse erweitern (Ich nenne sie "Silent-Klassen"), was unter Verwendung eines % anstelle einer ..

hr%base { 
  width: 100%;
  height: 1px;
  margin: 15px 0px;
}
.dark-hr {
  @extend hr%base;
  background-color: #595959;
}
.light-hr {
  @extend hr%base;
  background-color: #cccccc;
}

Andere Tipps

Möchten Sie normalerweise nicht so etwas tun:

.generic-hr { 
  width: 100%;
  height: 1px;
  margin: 15px 0px;
  &.dark {
    background-color: #595959;
  }
  &.light {
    background-color: #cccccc;
  }
}

Mein Muster für diese Art von Ding ist ein Mixin:

@mixin generic-hr { 
  width: 100%;
  height: 1px;
  margin: 15px 0px;
}
.dark-hr {
  @include generic-hr;
  background-color: #595959;
}
.light-hr {
  @include generic-hr;
  background-color: #cccccc;
}

Dies hat den zusätzlichen Vorteil, erweiterbar zu sein. Wenn Sie also mehrere Selektoren mit wirklich ähnlichen Eigenschaften benötigen, können Sie in Variablen hinzufügen:

@mixin generic-hr($background-color: transparent) { 
  width: 100%;
  height: 1px;
  margin: 15px 0px; 
  background-color: $background-color;
}
.dark-hr {
  @include generic-hr(#595959);
}
.light-hr {
  @include generic-hr(#cccccc);
}
.medium-hr {
  @include generic-hr(#818181);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top