Sie sollten sich ansehen BEM .
Theorie
BEM ist ein Versuch, eine Reihe von Anweisungen für die Organisation und Benennung von CSS-Selektoren bereitzustellen, um die Wiederverwendbarkeit und Modularität zu verbessern und Zusammenstöße zwischen Selektoren zu vermeiden, die oft zu Spaghetti-Code und Spezifitätsproblemen führen.
Bei richtiger Anwendung hat es sogar einige sehr positive Auswirkungen.
- Stile tun das, was Sie erwarten, wenn sie einem Element hinzugefügt werden
- Die Stile laufen nicht aus und wirken sich nur auf das aus, was sie hinzugefügt werden.
- Formatvorlagen sind vollständig von der Dokumentstruktur entkoppelt
- Stile müssen nicht gezwungen werden, sich gegenseitig zu überlagern
BEM arbeitet gut mit SASS zusammen, um CSS einen fast objektorientierten Stil zu verleihen. Sie können modulare Dateien erstellen, die die Anzeige eines einzelnen UI-Elements behandeln und Variablen wie Farben und "Methoden" enthalten, z. B. wie interne Elemente behandelt werden. Ein eingefleischter OO-Programmierer mag diese Idee vielleicht ablehnen, aber die angewandten Konzepte bringen viele der schönen Seiten von OO-Strukturen mit sich, wie Modularität, lose Kopplung und enge Kohäsion sowie kontextfreie Wiederverwendbarkeit. Sie können sogar auf eine Art und Weise bauen, die wie ein gekapseltes Objekt aussieht, indem Sie Sass und die &
operato r.
Ein ausführlicherer Artikel aus dem Smashing Magazine findet sich unter hier gefunden und einer von Harry Roberts von CCS Wizardry (den jeder, der sich mit css beschäftigt, lesen sollte) ist hier .
In der Praxis
Ich habe dies mehrmals benutzt, zusammen mit SMACSS und OOCSS, was bedeutet, dass ich etwas habe, um sie zu vergleichen. Ich habe auch in einigen großen Schlamasseln gearbeitet, die oft von mir selbst und meinen Unerfahrenen verursacht wurden.
Wenn ich BEM in der realen Welt einsetze, ergänze ich die Technik um einige zusätzliche Prinzipien. Ich verwende Hilfsklassen - ein gutes Beispiel ist eine Wrapper-Klasse:
.page-section {
width: 100%;
}
@media screen and (min-width: 1200px) {
margin: 0 auto;
width: 1200px;
}
Und ich verlasse mich auch ein wenig auf die Kaskade und die Spezifität. Hier würde das BEM-Modul lauten .primary-box
et le .header
wäre der Kontext für eine spezifische Übersteuerung
.header {
.primary-box {
color: #000;
}
}
(Ich versuche mein Bestes, um alles so generisch und kontextfrei wie möglich zu machen, was bedeutet, dass ein gutes Projekt fast alles in den Modulen ist, die wiederverwendbar sind)
Ein letzter Punkt, den ich hier anführen möchte, ist, dass Sie dies aus zwei Gründen von Anfang an tun sollten, auch wenn Ihr Projekt noch so klein und unkomplex erscheinen mag:
- Projekte werden immer komplexer, daher ist eine gute Grundlage wichtig, auch für CSS.
- Selbst ein Projekt, das einfach erscheint, weil es auf WordPress aufbaut und nur wenig JavaScript enthält, kann im CSS sehr komplex sein - OK, Sie müssen keine serverseitige Programmierung vornehmen, also ist dieser Teil einfach, aber das Frontend der Broschürenbekleidung besteht aus zwanzig Modulen und drei Variationen von jedem: Sie haben hier ein sehr komplexes CSS!
Web-Komponenten
Im Jahr 2015 beginnen wir, uns mit Webkomponenten zu beschäftigen. Ich weiß noch nicht sehr viel über diese, aber sie scheinen alle Frontend-Funktionen in eigenständigen Modulen zu vereinen. Dabei wird effektiv versucht, die Grundsätze von BEM auf das Frontend als Ganzes anzuwenden und verstreute, aber vollständig gekoppelte Elemente wie DOM-Fragmente, Js (MVC) und CSS zu komponieren, die alle dasselbe UI-Widget bilden.
Auf diese Weise werden sie einige der ursprünglichen Probleme mit CSS angehen, die wir mit Dingen wie BEM zu lösen versucht haben, während sie gleichzeitig einige der anderen Frontend-Architekturen vernünftiger machen.
Hier finden Sie weitere Lektüre aquí und auch einen Rahmen Polymer hier der einen Blick wert ist
Endlich
Ich denke auch, dass dies ein ausgezeichneter, moderner css-Leitfaden für bewährte Verfahren - speziell entwickelt, um zu verhindern, dass große CSS-Projekte unübersichtlich werden. Ich versuche, die meisten von ihnen zu befolgen.
124 Stimmen
Das ist eine gute Frage, aber für viele Unternehmen ein wirklich unlösbares Problem. Hauptsächlich deshalb, weil CSS von Grafikdesignern verfasst und verwaltet wird, die möglicherweise nicht mit den Begriffen
simplicity
,complexity
,maintenance
,structure
yrefactoring
.8 Stimmen
@cherouvim - Es ist witzig, dass du das sagst, denn der Grund, warum ich diese Frage gestellt habe, lag darin, dass ich ein gruseliges CSS gesehen habe, das von einem Grafiker entworfen wurde. Vielleicht brauchen wir eine bessere Ausbildung für sie?
13 Stimmen
Meine Lösung (in einer idealen Welt) ist es, engagierte Leute in Ihrem Team zu haben, die das PSD in html+css umwandeln und danach pflegen. Diese Leute sollten in der Nähe der Programmierer und Designer sein.
0 Stimmen
@cherouvim Muss zustimmen - das ist so ziemlich der Weg, den Agenturen gehen, vor allem, da CSS immer komplexer wird.
27 Stimmen
@JasCav, Grafiker sollten das CSS nicht anfassen. Web-Designer und Front-End Web-Entwickler sollte sich mit CSS beschäftigen. Die Aufgabe des Grafikdesigners ist es, die Grafiken zu erstellen.
0 Stimmen
Nicht alle, aber sicher Modern Grafikdesign umfasst sowohl den praktischen als auch den langlebigen Lebenszyklus durch geschmackvolle, elegante, wenn nötig komplexe Strukturierung und vor allem schön gestalteten, lesbaren CSS-Code.
0 Stimmen
Es ist wirklich interessant, diese Kommentare 5/6 Jahre später zu lesen. Es ist schön zu sehen, dass die Industrie endlich aufgeholt hat.