Was tun Sie, wenn Ihr Design-Muster zusammenbricht?

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Sagen wir, Sie haben ein Modul. Jede Website hat Module, oder?

<div class="module">
</div>

Perfekt! Wir haben es geschafft!

Aber jetzt kommt eine neue Situation™. Dieses Modul wird nicht exakt so funktionieren, wie es ist. Es ist ziemlich nah dran, aber in dieser neuen Situation™ benötigt das Modul einen zusätzlichen unteren Rand.

Wie gehen Sie damit um? Lassen Sie uns einige Möglichkeiten erkunden.

Body-Klasse beeinflusst es

Sind alle Module auf einer bestimmten Seite oder in einem bestimmten Bereich Ihrer Website so? Vielleicht können Sie dieser Seite (oder diesem Bereich) eine Klasse hinzufügen.

<body class="books-page">

   ...

   <div class="module">
   </div>
.module {
  /* normal style */
}
body.books-page .module {
  /* variation styles */
}

Sie müssen die .books-page nicht wirklich mit einem Tag versehen, aber ich mache das oft, weil es in diesem Fall keine große Sache ist und mich daran erinnert, was vor sich geht.

Sass ist in diesen Situationen nützlich, da die Verschachtelung den Raum irgendwie zusammenbindet.

.module {
  /* normal style */
  aside.books &  {
    /* variation style */
  }
}

Ganz neue Klasse

Vielleicht ist der neue Stil anders genug, dass Sie ihm einen anderen Namen geben werden.

<div class="solitary-module">
</div>
.module {
  /* normal style */
}
.solitary-module {
  /* alternate style */
}

Wenn die Stile ziemlich ähnlich sind, könnten Sie

.module, .solitary-module {
  /* normal style */
}
.solitary-module {
  /* variation styles */
}

Was genau macht @extend in Sass

.module {
  /* normal style */
}
.solitary-module {
  @extend .module; /* could be a %placeholder selector */
  /* variation style */
}

Klassen verdoppeln

Vielleicht erstellen Sie eine zusätzliche Klasse, aber diese Klasse ist nicht dazu gedacht, eigenständig zu funktionieren. Sie ist nur eine Variation.

<div class="module module-books">
</div>
.module {
  /* normal styles */
}
.module.module-books {
  /* variation styles */
  /* you don't HAVE to double up the classes here in the CSS, but it enforces the connection (while increasing specificity) */
}

Datenattribut-Variationen

Ich denke nicht, dass das besonders verbreitet ist, aber ich mag es irgendwie.

<div class="module" data-variation="books">
</div>

Attribute sind wie Klassen (gleiche Spezifität), können aber Werte haben.

.module {
  /* normal styles */
}
.module[data-variation="books"] {
  /* variation styles */
}

Liest sich gut.

Inline-Styles

Ist diese Variation *selten*? Vielleicht reicht ein Inline-Stil.

<div class="module" style="margin-bottom: 40px;">
</div>

Typischerweise verpönt (nicht wiederverwendbar), aber wenn es eine einmalige Sache ist, erfüllt es seinen Zweck.

Shame.css

Man kann es immer später mit shame.css erledigen!

<div class="module chris-did-this">
</div>
/* I will totally deal with this later I promise */
.chris-did-this {
  /* variation styles */
}

Wie machen Sie das?