Hier ist ein großartiger Thread von Kevin Powell, der gerade die Runde macht. Er glaubt, dass so viele Leute CSS als frustrierende und ärgerliche Sprache ansehen
Warum respektieren die Leute JavaScript oder andere Sprachen genug, um sie bis ins kleinste Detail zu lernen, und verspotten gleichzeitig ständig CSS? Nun, all das erinnert mich an das, was Jeremy Keith vor einiger Zeit geschrieben hat, als er argumentierte, dass CSS einfach, aber nicht leicht ist
Im Gegensatz zu einer Programmiersprache, die Kenntnisse über Schleifen, Variablen und andere Konzepte erfordert, ist CSS recht einfach zu erlernen. Vielleicht hat es gerade deswegen den Ruf, einfach zu sein. Es ist einfach im Sinne von „nicht komplex“, aber das bedeutet nicht, dass es leicht ist. „Einfach“ mit „leicht“ zu verwechseln, führt nur zu Herzschmerz.
Ich denke, das ist es, was einigen Programmierern passiert, die zum ersten Mal zu CSS kommen. Sie haben gehört, dass es einfach ist, also gehen sie davon aus, dass es leicht ist. Aber wenn sie dann versuchen, es zu benutzen, funktioniert es nicht. Es muss die Schuld der Sprache sein, denn sie wissen, dass sie schlau sind und dass dies einfach sein soll. Also geben sie der Sprache die Schuld. Sie sagen, sie sei kaputt. Und so versuchen sie, sie zu „reparieren“, indem sie sie an eine programmatischere Denkweise anpassen.
Es gab Zeiten, da habe ich mich mit Ingenieuren zusammengesetzt, um mit ihnen über ein kniffliges Layout-Problem zu sprechen, und das CSS wurde als unter ihnen stehend behandelt – als ob die Sprache irgendwie zu unvorhersehbar wäre, um gelernt und gemeistert zu werden. Vielleicht hat das etwas mit der Vergangenheit zu tun, als wir Jahre damit verbrachten, gegen die unterschiedliche Darstellung durch Browser zu kämpfen. Aber das ist größtenteils ein gelöstes Problem. Ich kann mich nicht erinnern, wann ich das letzte Mal so gegen Browser gekämpft habe.
Stattdessen glaube ich, dass das größte Problem, mit dem Ingenieure konfrontiert sind – und der Grund, warum sie es alle so verdammt frustrierend finden – darin besteht, dass CSS dich zwingt, dich der Web-Eigenart des Webs zu stellen. Dinge erfordern Fallbacks. Sie müssen verschiedene Geräte und alle verschiedenen Arten, eine Website zu sehen, berücksichtigen: Mobil, Desktop, keine Maus, keine Tastatur usw. Sicher, das muss man auch beim Schreiben von JavaScript beachten, aber es ist leichter zu ignorieren. Man kann nicht ignorieren, dass das Layout deiner Website auf einem Telefon komplett kaputt ist.
Nebenbemerkung: Wir haben einen Leitfaden zum Zentrieren in CSS nicht, weil CSS kaputt und dumm ist, sondern weil es so viele Variablen gibt, dass eine einfache Frage wie „Wie zentriere ich Text?“ tatsächlich viel komplizierter ist, als sie scheint. Es geht viel Kontext verloren.
Das erinnert mich an einen meiner Lieblings-Blogbeiträge aller Zeiten, in dem Brandon Smith argumentiert, dass CSS großartig ist und wir die Sprache respektieren und lernen sollten, wie sie unter der Haube funktioniert
CSS ist schwer, weil seine Eigenschaften interagieren, oft auf unerwartete Weise. Denn wenn du eine davon festlegst, legst du nie nur diese eine Sache fest. Diese eine Sache kombiniert sich mit einem Dutzend anderer Dinge, prallt von ihnen ab und widerspricht ihnen, einschließlich Standarddingen, die du selbst nie wirklich festgelegt hast.
Eine Faustregel zur Abmilderung dessen ist: Sei niemals expliziter als nötig. Webseiten sind standardmäßig responsiv. Gutes CSS zu schreiben bedeutet, diese Tatsache zu nutzen, anstatt sie zu überschreiben. Verwende wenn möglich Prozent- oder Viewport-Einheiten anstelle einer Media Query. Verwende
min-widthanstelle vonwidth, wo du kannst. Denke in Begriffen von Regeln, in Begriffen von was du wirklich sagen willst, anstatt nur Eigenschaften hinzuzufügen, bis die Dinge richtig aussehen. Versuche, ein Gefühl dafür zu bekommen, wie der Browser Layout und Größen bestimmt, und nimm deine Änderungen und Ergänzungen darauf basierend maßvoll vor. Arbeite mit CSS, anstatt dagegen.
„CSS ist schwer, weil seine Eigenschaften interagieren, oft auf unerwartete Weise.“ Das ist die Definition von Komplexität. Gute Sprachen schränken die Leichtigkeit ein, mit der verschiedene Aspekte des Zustands miteinander interferieren können. Ausgezeichnete Sprachen machen es sehr schwierig.
CSS ist schwer, weil es zu mächtig ist und Nebenwirkungen nicht gut begrenzt, was es fast unmöglich macht, es nachzuvollziehen.
Als jemand, der CSS nachvollziehen kann, läuft es wirklich auf viel Versuch und Irrtum hinaus. Ständiges Auftreten neuer Layoutanforderungen, neuer Anwendungsfälle für Inhalte, neuer Geräte-/Plattformszenarien und Kombinationen usw. hilft dir, ein mentales Modell des Geistes und der Philosophie hinter CSS zu entwickeln, das es viel vorhersehbarer und handhabbarer macht. Die Verwendung von Architekturrichtlinien und Präprozessoren hilft dabei.
Ich habe CSS vor JS gelernt, vielleicht macht das es einfacher? CSS erscheint nicht zu schwer.
Immer noch CSS aus der Sicht der imperativen Programmierung beurteilen… das funktioniert nicht.
Wir können den ganzen Tag darüber diskutieren, ob CSS eine Programmiersprache ist, aber am Ende des Tages ist es viel mehr Sprache als Programmierung. Es basiert hauptsächlich auf sprachlich-verbaler Intelligenz, während die Programmierung im traditionellen Sinne des Wortes viel stärker auf logisch-mathematischer Intelligenz beruht.
CSS erfordert eine andere Denkweise, vielleicht sogar einen anderen Geist.
CSS ist, wie JavaScript, für den Browser gebaut, um den DOM genauer zu verstehen.
Nicht, dass der Mensch nicht zählt, aber unser Verständnis davon ist unsere Verantwortung.
Vergleiche einfach einen CSS-Style-Block mit einem JavaScript-Objekt-Literal :: Wenn du die Grundlagen von JavaScript verstehst, wird dein Leben einfacher.
`
body, .header {
background: #788;
font-family: ‘Verdana’, sans-serif;
margin: 0;
padding: 0;
display: flex;
}
let address = {
owner: “Bradleys”,
lotNumber: “1313”,
street: “Big Pine Lane”,
city: “My Town”,
country: “USA”,
zip code: “12345”
}
`
Dies ist ein SEHR ausführlicher Artikel, eine gute Lektüre von 30 bis 45 Minuten. Wenn du gerade anfängst oder arbeitest / jemanden kennst, der Schwierigkeiten hat. Er ist aufschlussreich und bietet so viele zusätzliche Links, um dein Verständnis zu vertiefen. Wie die Browser-Engine und der DOM funktionieren. Wenn du das siehst, bekommst du eine bessere Perspektive, warum es so sein muss.
” WEB-ENTWICKLUNG
Wie rendert der Browser eine Webseite? — DOM, CSSOM und Rendering
In diesem Artikel tauchen wir tief in DOM und CSSOM ein, um zu verstehen, wie der Browser eine Webseite rendert.
https://medium.com/jspoint/how-the-browser-renders-a-web-page-dom-cssom-and-rendering-df10531c9969
Ich habe dieses Argument nie verstanden. CSS ist nicht schwer. Es ist, wie es ist, und man lernt, damit umzugehen.
Das Zählen (Indexieren) ab 0 ist intuitiv.
„Sei niemals expliziter als nötig.“
Das ist auch generell eine gute Lebensweisheit!
In den meisten Programmiersprachen ist Isolation ein Merkmal, so funktionieren Dinge. Aber in CSS ist „Leakage“ (Durchsickern) ein Merkmal. C steht für „Cascading“ (Kaskadierend), was bedeutet, dass die Definition von etwas irgendwo es an anderer Stelle verfügbar macht, aber nicht an zufälligen Orten, sondern an bestimmten Orten. Wenn jemand nicht weiß, was er erwarten soll, liegt es vielleicht daran, dass er die Sprache nicht wirklich beherrscht …
CSS-Implementierungen haben auch das Konzept einer User-Agent-Stylesheet-Datei. Man beginnt also nie bei Null, sondern muss sich immer auf Code beziehen, der von anderen geschrieben wurde.
Bevor du anfängst, ist es gute Praxis, die Codebasis zu lesen und zu verstehen, zu der du beiträgst. Moderne Webentwicklungs-Tools machen das einfacher als früher.
Liegt es nur an mir, oder muss mich noch jemand daran erinnern, dass CSS-Elemente als Boxen behandelt werden?
Bevor ich irgendeinen CSS-Code schreibe, behalte ich das immer im Hinterkopf.
Wenn man an eine Programmiersprache gewöhnt ist, die Fehlermeldungen hat, kann CSS extrem nervig sein, weil man keine Ahnung hat, wo Fehler liegen oder warum Dinge nicht so funktionieren, wie man es sich erhofft hat. Die Syntax selbst ist auch fehlerverzeihend, was die Fehlersuche nicht gerade erleichtert.
CSS ist schwer, weil die Sprache keinen Sinn ergibt, es ist buchstäblich viel Mist aufgetürmt.
Wenn du einen Div hast, der flex 1 ist, was bedeutet, dass er die gesamte verfügbare Größe einnimmt, warum führt dann das Schreiben von width 100% und height 100% nicht dazu, dass das Kind die gleiche Größe hat? Ich weiß warum, weil CSS keinen Sinn ergibt.
Warum müssen wir min-height:0 und height:100% in einen Div-Container eines Bildes einfügen, um zu verhindern, dass das Bild explodiert? Das ergibt nicht einmal Sinn und niemand weiß es, sie wiederholen nur die gleiche Logik in allen CSS, aber wenn ich mich hinsetze und sie frage, was die Logik dahinter ist, sagen alle nur „Ich weiß es nicht, Mann, ich mache das nur, weil es funktioniert“, also ja, CSS ist nicht intuitiv.
Deshalb sind Programmiersprachen leicht zu verstehen, weil sie Sinn ergeben.