Ich habe kürzlich Chris Eppstein einen Vortrag halten hören (Folien) über die Erstellung besserer Stylesheets und die Verwendung von SASS dafür. Es gab ein paar überraschende Punkte, einer davon handelte von "Opt-in Typografie". Die Idee war, dass man anstatt globale Stile für typografische Elemente wie p, ul, ol, h1, h2 usw. festzulegen, diese Stile stattdessen als Klasse anwenden würde, vielleicht .text.
Die Idee ist, dass es viele Stellen auf einer Website gibt, an denen man einen sauberen Startpunkt haben möchte und sich keine Gedanken über globale Stile machen muss. Das klassische Beispiel sind Listen, bei denen man sie für Dinge wie Navigation verwendet und wahrscheinlich nicht den gleichen Rand/Abstand/Listenstil möchte, wie innerhalb eines Artikels.
Darüber hinaus könnten Sie verschiedene Sätze von typografischen Stilen haben, die Sie nach Belieben anwenden möchten. Anstatt also globale Stile wie diesen
p { }
ul { }
ol { }
h1 { }
h2 { }
/* etc */
Würden Sie diese stattdessen auf eine Klasse beschränken (hier mit SCSS)
.text-article {
p { }
ul { }
ol { }
h1 { }
h2 { }
/* etc */
}
.text-module {
p { }
ul { }
ol { }
h1 { }
h2 { }
/* etc */
}
In einem Bereich der Website, der ein Blogbeitrag ist, können Sie Ihre Artikeltypografie greifen, und in einem Sidebar-Modul können Sie die Typografie dafür greifen
<section class="main-content">
<article class="text-article">
...
</article>
</section>
<aside>
<div class="module text-module">
Texty module
</div>
<div class="module">
Module in which typography isn't needed
</div>
</aside>
Anthony Short sieht das genauso.
Natürlich hängt die Wirksamkeit davon ab, um welche Art von Website es sich handelt und in welchem Stadium ihrer Entwicklung sie sich befindet. Ich vermute, dass es auf Websites mit einer "modularen" Architektur besser funktionieren würde und die keine riesige Menge an Altinhalten haben. Ich wäre interessiert, es auf einem frischen Projekt auszuprobieren.
Toller Artikel! Ich werde das bei meinem nächsten Projekt mit LESS ausprobieren. Ich habe diese Art von CSS-Typografie irgendwie benutzt, ohne es zu merken, aber ohne LESS, letztes Mal, als ich ein Projekt von Grund auf neu begonnen habe.
Das gefällt mir.
Das gefällt mir sehr gut!
Hmmm... Sie überschreiben entweder IHRE globalen Stile oder die des BROWSERS, was ist also der Unterschied?
Ich habe mit diesem Konzept in einem aktuellen Projekt herumgespielt, aber dieser Artikel bestätigt im Grunde meinen Denkprozess dafür. Gute Arbeit.
Toller Artikel, ich versuche das ziemlich oft auf meinen Websites zu machen, es erleichtert mir die Arbeit, wenn ich mich nur darum kümmern muss, wie es einen Abschnitt und nicht die gesamte Website beeinflusst.
Ich spiele mal Advocatus Diaboli und sage, dass, wenn Ihre Basisstile zu sehr im DOM kollidieren, Ihre Basisstile tatsächlich zu vorschreibend sind.
Wenn Sie versuchen, so wenige Klassen und spezifische IDs wie möglich in Ihrem CSS zu verwenden, neigen Sie dazu, zu Styling-Mustern zu greifen, die einer Website eine unglaubliche Flexibilität verleihen.
Das habe ich gemacht und es funktioniert großartig.
Die Typografie Ihres Inhalts getrennt vom Rest Ihrer Website zu haben, ist wunderbar; Sie können ändern, wie Ihr Inhalt angezeigt wird, ohne den Rest Ihrer Website zu ruinieren.
Ich mag die Tatsache nicht, dass mehr Klassen zu meinem HTML hinzugefügt werden. Es ist dasselbe, was wir in der Vergangenheit mit Grids gemacht haben. Jetzt sollte jeder, der SASS verwendet, mit dem Konzept vertraut sein, Grid-Spalten mit seinem CSS zu mischen.
Warum also nicht die Leistung von SASS nutzen, Typografie an einem Ort definieren und das bereits verwendete CSS würzen?
+1
Ich habe immer eine Klasse '.flow' verwendet, um fließende Inhalte aus beliebigen Überschriften, Absätzen und Listen zu kennzeichnen.
Wirklich eine viel intelligentere Methode, als ständig gegen die Kaskade anzukämpfen.
Dieses Konzept gefällt mir sehr gut und funktioniert hervorragend für bestimmte Projekte mit unterscheidbaren Inhalten. Vielleicht ein Blog, bei dem jede Kategorie einen bestimmten Stil erhalten soll usw.
Sehr schick – muss ich vielleicht bei meinem nächsten Projekt ausprobieren.
Ich bin nicht sehr vertraut mit SASS, aber ist das nicht genau die Art von CSS, von der wir uns weg bewegen wollen?
Ihre Beispiele erstellen Dutzende von CSS-Regeln mit absteigenden Selektoren, sodass der Browser bei den meisten Ihrer Elemente jedes Mal alle seine Elternelemente durchsuchen muss.
@Scott Sie erstellen wirklich keine zusätzlichen Regeln. Sie nutzen immer noch die Kaskade, Sie haben nur besser unter Kontrolle. Sich um die Leistung eines einzelnen Elementselektors im Vergleich zu einem zweistufigen absteigenden Selektor zu kümmern, ist wahrscheinlich nicht lohnenswert.
Scott hat hier einen guten Punkt. Ich denke, die beschriebene Technik ist für SASS-Schreiber natürlich, ich mache das schon eine Weile, und nun ja, es ist in Ordnung, solange man nicht zu tief stapelt, man muss ein bisschen vorsichtig sein...
Meiner Erfahrung nach ist es verlockend, Dinge wie diese zu tun
Der resultierende Selektor für die verschachtelten a-Elemente wäre
Das ist schon ziemlich groß, und was, wenn das in einen Artikel eingebettet wäre, als Teil einer Sidebar, wozu SASS und dieser Artikel Sie vielleicht verleiten könnten.
Ich sage nicht, dass die Technik schlecht ist, aber bedenken Sie, dass zu tiefes Verschachteln zu enormen Selektoren führt, wenn auch nur für die KB, denken Sie zweimal nach.
Interessant. Wie einige Leute schon sagten, denke ich, dass ich mich auch schon in diese Art von Struktur hineinentwickelt habe.
Ich habe bald ein neues persönliches Projekt, bei dem ich das ausprobieren werde. Ich freue mich darauf!
Ich benutze diese Technik seit etwa 2 Monaten und liebe sie! Sie ist auch sehr nützlich für andere globale Module, zum Beispiel Formulare.
Und manchmal muss man ein neues Modul in seine
.text-article {}einfügen, dafür benutze ich eine Reset-Klasse.text-article_reset {}.Ich habe ein kleines Beispiel gemacht: http://jsfiddle.net/ruslan_savenok/DQGDZ/embedded/result/
http://jsfiddle.net/ruslan_savenok/gH44L/
Ich habe darüber nachgedacht, meine Stile auf diese Weise zu gestalten, aber dann hatte ich immer das Gefühl, dass es zu "anders" war. Jetzt fühle ich mich albern, es nicht auf diese Weise zu tun.
Ich glaube, das wird eine dauerhafte Veränderung in meinen Webentwicklungsgepflogenheiten sein.
scheint interessant, Typografie mit Leichtigkeit zu verwenden und würde sie gerne in meinem nächsten Theme verwenden
Ich habe darüber nachgedacht, es ist eine großartige Möglichkeit, unterschiedliche Stile zu haben, ohne vorherige Eigenschaften zu überschreiben. Ich habe jedoch eine Frage: In Ihrem Beispiel erstellen SieScoped Typografie-Stile, aber was ist mit den Standard-Browserstilen? Sie sind immer noch da und geben Listen Standardstile, die immer noch Probleme verursachen, wenn wir zum Beispiel eine Navigationsleiste erstellen möchten, oder Links haben unten eine Linie. Ist es eine gute Idee, auch alle Standard-Typografie-Stile auf einen normalen Textstil zurückzusetzen, wie nur font-size und line-height vom html oder body erben, aber nichts anderes?
Das ist die Technik, die ich derzeit verwende, obwohl ich nie daran gedacht habe, ihr einen Namen zu geben. Das Unternehmen, für das ich arbeite, entwickelt fast ausschließlich in Joomla, was von Natur aus modular ist, so dass es gut funktioniert.
Es ist ein schöner, ordentlicher Ansatz, den ich in letzter Zeit immer öfter sehe. Gibt es einen Leistungsvorteil, wenn nur Typografieranforderungen für Elemente geladen werden, die sie verwenden?
Das mache ich auch meistens! Es ist großartig!
Verdammt! Das ist brillant! Ich stecke seit über 6 Monaten tief in einem Projekt, mit einer Twitter Bootstrap Basis. Da das Projekt wächst (Agile Dev) finde ich mich beim Hinzufügen neuer Teile im Kampf mit der Kaskade: Mobile, iFrames, Facebook-Apps, WordPress, eigenständiges HTML usw.
Ich werde definitiv in diese Richtung denken, während wir die Entwicklung fortsetzen. Und ich werde diese Methode auf jeden Fall bei neuen Projekten anwenden!
Danke!
Cool, danke. Es ist selten, dass ein Element der obersten Ebene seine Stile im gesamten Projekt beibehält, und ich finde mich immer wieder dabei, die Master-Stile zu überschreiben, die ich festgelegt habe (die ehrlich gesagt meist nur für den Inhaltsbereich einer Website relevant sind).
scheint interessant, Typografie mit Leichtigkeit zu verwenden. Ich habe darüber nachgedacht, meine Stile auf diese Weise zu gestalten, aber dann hatte ich immer das Gefühl, dass es zu "anders" war. Jetzt fühle ich mich albern, es nicht auf diese Weise zu tun.
Ich glaube, das wird eine dauerhafte Veränderung in meinen Webentwicklungsgepflogenheiten sein.
Unter Berücksichtigung der HTML5-Nutzung denke ich, dass html5.js für ältere Browser erwähnt werden sollte. Die HTML5-Tags könnten mit IE<=8 problematisch sein.
Das gefällt mir :D
Ausgezeichnete Idee und eine, die wir alle hätten sehen sollen. So einfach mit LESS zu machen
Ich habe mit Websites gearbeitet, die dies auf beide Arten tun (grundlegende Stile, die universell angewendet werden, oder nur auf Elemente innerhalb eines bestimmten Klassencontainers).
Während verschiedene intelligente Leute unterschiedlich arbeiten, bin ich fest davon überzeugt, dass es besser ist, gute allgemeine Stile zu haben und diese dann bei Bedarf zu überschreiben. So soll CSS funktionieren.
Gute Standardeinstellungen zu definieren, erspart viel Mühe für alle Situationen und Module, die Sie (oder Ihr Kunde) noch nicht erstellt haben.
Irgendwann würde jemand vergessen, diese Klasse 'text-module' oder 'c' oder 'was auch immer' anzuwenden, und dann wäre die Typografie falsch und jemand müsste *das HTML* ändern. Das riecht schlecht. Besonders wenn man über ein System spricht, das vielleicht kein großartiges Templating-System hat, wie Drupal, dann kann das komplizierter werden, als Ihnen lieb ist.
Irgendwann wird das HTML nicht mehr dem entsprechen, was Sie jetzt erwarten. Das ist gut, das ist das wachsende Web. Selbst wenn es sauber und semantisch bleibt, muss es später etwas anderes tun. CSS ist dafür großartig, weil Sie Standardstile definieren können, um Sie am weitesten oder vollständig zu bringen.
Ich habe eine viel stärkere Empfehlung für Sie Leute, die SASS oder LESS verwenden: Erstellen Sie einen Reset-Mixin, der all Ihre Reset-Stile enthält. Dann können Sie an Orten wie Ihrer globalen Navigation, wo Sie alle Standardwerte zurücksetzen möchten, einfach Ihren Reset-Mixin hinzufügen und neu beginnen.
Ich liebe dieses Konzept. Eine so einfache Möglichkeit, mehr Kontrolle über verschiedene Elemente Ihrer Website zu erlangen.
Toller Artikel! Danke!
Ich benutze diese Technik schon eine Weile (ungefähr 5 Projekte) und sie funktioniert großartig! Besonders bei Projekten, bei denen Sie an wenigen Stellen Standardstile für Inhalte benötigen.
Meine Implementierung unterscheidet sich ein wenig. Mein Ansatz besteht darin, die gemeinsamen Elemente in der Typografie zu identifizieren und sie global zu stylen. Erst danach beschränke ich Stile, die spezifisch für "Standard"-Text sind. Auf diese Weise erhalte ich IMO universellere Stile und das Beste aus beiden Welten.
Ich verstehe das nicht... Haben wir das nicht schon immer gemacht, aber globale Selektorstile beibehalten?
Ich folge dem Ansatz von @snook mit SMACSS, bei dem ein Modul so konzipiert ist, dass Sie es überall einfügen können. Aber ich sehe keinen Grund, warum Sie keinen globalen Stil definieren würden. Lässt man das den (verschiedenen und inkonsistenten) Browsern überlassen???