Wir alle machen Fehler in unserem Code. Das passiert! Ich weiß, wenn ich eines dieser Schilder „Tage seit dem letzten Fehler“ über meinem Schreibtisch hängen hätte, würde die ganze Zeit eine große fette Null über mir schweben. Es müssen ja auch keine großen Fehler sein. Mein tollpatschiges Ich hat kleine Fehler in Repos committed, die von Tippfehlern bis hin zu kompletten npm-Modulverzeichnissen reichen.
Wer ist das wohl.
Das ist eines der Dinge, die ich an CSS wirklich liebe: Es ist verdammt fehlerverzeihend. Wenn es einen Tippfehler nicht versteht, sucht es weiter in der Kaskade nach einer Übereinstimmung. Nichts von dem Kram, wo ein einziger falsch platzierter Buchstabe eine Website kaputt macht und keine Gefangenen nimmt. Aber es ist trotzdem peinlich, wenn CSS-Fehler auftauchen!
Wie dieser hier, den ich mir öfter mache, als ich zugeben möchte
.element {
display: flexbox; /* 🤦♂️ */
}
Oder wenn ich versuche, einen Farbverlauf festzulegen, ohne eine background-Eigenschaft anzugeben
.gradient {
linear-gradient(45deg, rgb(50% 100% 90%), rgb(62% 85% 93%));
}
Ich hasse es, wie nah X und C auf einer Tastatur beieinander liegen, weil ich nicht zählen kann, wie oft ich etwas im Eiltempo durchgehe und px mit pc-Einheiten verwechsle.
.element {
font-size: 16pc; /* I meant pixels! */
}
Einen weiteren CSS-Fehler, den ich immer wieder entdecke, ist einer, von dem ich weiß, dass ihn viele andere Leute machen, weil ich ihn zu oft in Blogbeiträgen mit Code-Snippets sehe
// This is not a CSS comment.
.element {
/* This is a CSS comment. */
}
Hast du jemals vergessen, var() um eine CSS-Variable zu setzen? Ich habe es sicher schon getan.
.element {
color: --primary-color;
}
Apropos CSS-Variablen, sie zu benennen ist schwierig (wie alles andere) und ich verwende oft eine falsche Version einer Variable, die ich benannt habe!
:root {
--color-primary: #FF5722;
--color-secondary: #3E2723;
}
/* Much later on... */
.element {
color: var(--primary-color); /* 🙃 */
}
Ja, ich habe schon mal ein CSS-Snippet kopiert, nur damit schicke Anführungszeichen mich daran hindern, dass es funktioniert
.element::before {
content: “”; /* Should be "" */
}
Und ja, ich habe viel zu lange damit verbracht herauszufinden, dass die Anführungszeichen schuld waren.
Wenn ich mir den letzten Punkt ansehe, fällt mir ein, dass ich manchmal vergesse, die content-Eigenschaft festzulegen, wenn ich mit ::before oder ::after arbeite. Was mich daran erinnert, wie ich vergessen habe, die position eines Elements festzulegen, bevor ich versuche, es zu verschieben oder seinen z-index zu ändern. Ernsthaft, diese Dinge passieren!
Es ist schwer, über Fehler zu sprechen
Hast du jemals einen Blogbeitrag zu Ende gelesen, der einen tollen Trick verrät, und dabei eine Art Impostor-Syndrom verspürt? Ich denke, das liegt größtenteils daran, dass Blogbeiträge oft die wirkliche Arbeit – und die Misserfolge – verbergen, die in großartige Tricks einfließen. Als jemand, der solche Beiträge beruflich liest, kann ich dir sagen, dass viele, wenn nicht die überwiegende Mehrheit, viele Bearbeitungsrunden durchlaufen, bei denen potenziell peinliche Fehler ausgemerzt und geglättet werden.
Selbst diese lächerlich großartigen Artikel müssen scheitern, bevor sie all das Ooohs und Aaahs bekommen.
Dasselbe gilt für jede App, Website, Demo oder was auch immer dir begegnet. Die Chancen, dass sie beim ersten Mal perfekt herausgekommen sind, sind gleich null.
Aber wenn ich ganz ehrlich zu dir bin, bin ich oft mehr begeistert (und interessiert) von der *Reise*, die es braucht, um etwas zu erreichen, mit allen Ecken und Kanten. Die Reise ist ein Einblick, wie es ist, wie ein Front-End-Entwickler zu denken. Dort findet echtes (und das wertvollste) Lernen statt.
Und das alles baut nur auf das auf, was ich dich wirklich fragen möchte…
Was sind deine dümmsten CSS-Fehler?
Komm schon, wir alle wissen, dass du welche gemacht hast! Lass uns daraus lernen!
Ich glaube, mein größter Fehler, den ich ständig mache, ist das falsche Schreiben von „local“ für die Geltungsbereiche von Variablen im Coding. Der zweitschlimmste Fehler ist, Code von einem Ort zum anderen zu kopieren, wo ich nicht erkannt habe, dass diese Variablennamen unterschiedlich oder nicht deklariert sind, wenn ich sie verwende!
Ich kann es einfach nicht lassen, das zu tippen
Die ersten paar Male, als ich das tat, brauchte es viel Kopfzerbrechen, um herauszufinden, warum es nicht funktionierte. ;(
Wort! Das ist ein leichter Fehler. Es ist irgendwie wie ein Regelset innerhalb einer Eigenschaft, das innerhalb eines anderen Regelsets liegt – verlockend, direkt in die Klammern zu springen.
So, so, so oft bleibe ich daran hängen, reflexartig die Queen's English zu verwenden.
Stimmt, so viel von dem Code, den wir schreiben, ist in westlichem Englisch, dass ich es für selbstverständlich halte!
Ich habe das oft genug gemacht, dass ich Dinge wie
Einfache
* {
border-box: box-sizing;
}
Geoff, einige dieser Fehler würden von einem guten Syntax-Highlighter hervorgehoben werden. Welchen Texteditor verwendest du hauptsächlich?
Eine konsistente Benennung von Klassen und Variablen kann sicherlich eine Herausforderung sein. Weiß jemand Tools, die dabei in CSS helfen?
Jeder, denkt daran, der CSS-Validator der W3C ist ein wertvolles Werkzeug.
Absolut. Ich benutze Linters, Highlighter und Emmet, aber es gibt definitiv Zeiten, in denen ich das nicht tue. Sie machen ALL den Unterschied.
Speziell für Farben verwende ich schon immer https://chir.ag/projects/name-that-color/#6195ED
Man gibt einen Hex-Wert ein und es gibt einem einen menschlich verständlichen Farbnamen, damit man nicht „hellblau“ „heller-blau“ „primär-blau“ „sekundär-blau“ … hat.
Ich habe das Gefühl, die meisten dieser Fehler könnten und sollten von einem Linter abgefangen werden.
Persönlich mache ich seit der Verwendung von Tailwind weniger Syntaxfehler.
In diesem Sinne hilft es sehr, eine Art von Stil-Scoping zu verwenden und Komponenten isoliert zu entwickeln (z. B. mit Storybook). So haben Fehler eine viel geringere Auswirkung und können schneller erkannt werden.
Nicht
Sollte sein
Ich wollte gerade sagen, die Anzahl der Male, die ich das erste Kind des Elternelements der Klasse, auf die ich abzielen wollte, ausgewählt habe, ist viel zu hoch.
Ich fühle mich jetzt verstanden!
Ich verwechsle ständig
translate,transitionundtransform, wenn ich zu schnell tippe, was zu diesem Ergebnis in meinen Stylesheets führtoder
Das passiert mir auch!
Ich habe
marginzu oft falsch geschrieben.marignodermagrin. Das ist mein Hauptgrund, Emmet-Kurzbefehle zu lieben.z. B. tippe ich jetzt „m0“ und drücke TAB, und es gibt keine Rechtschreibfehler mehr :)
Margarine: 0;Ich muss zugeben, mein ständiger Kampf mit dem Wort „background“, da ich Dutzende von Zeilen CSS schreibe, bevor ich die Ergebnisse überprüfe. Wie du dir vorstellen kannst, wird der Browser nicht verstehen, was „backgorund“ bedeutet…
.a:before{content:''}.b:after{/* Debuggen mit jeder Regel der Welt außer content:'' */}Ich bin definitiv auf deiner Seite mit dem pc/px-Problem und der Kommentar-Syntax.
Außerdem habe ich aufgegeben, mir die Syntax für die Kurzschreibweise von Box (margin, padding, border, box-shadow, etc.) zu merken; ich kann nie erinnern, ob der erste Wert von oben oder rechts beginnt, und wenn ich ihn dann auf zwei oder drei Werte verkürzen möchte, bin ich wirklich am Arsch! Haha
Man könnte das Mnemonic
TRouBLeverwenden… Top Right Bottom Left (Oben Rechts Unten Links)Hinweis: Die meisten dieser Fehler wären beim Linting deines CSS aufgefallen: https://stylelint.io/
Ich benutze auch gerne Emmet in meinem Editor. So tippe ich nur
d:fund es wird zudisplay: flexerweitert, was den Fehlerdisplay: flexboxverhindert hätte.Man muss nicht mal den Doppelpunkt tippen. ‘
df‘ reicht ausIch habe es jetzt drauf, aber ich wollte
nowrapschon immer mit einem Bindestrich schreiben.Als ich vor über 15 Jahren anfing, verhaspelte ich immer eine der Eigenschaften
Ich versuche immer noch, Kommas zwischen Transform-Eigenschaften einzufügen
Viele dieser Fehler sind auf die schlampigen Inkonsistenzen der Sprache zurückzuführen.
Ich habe versucht,
url(var(--variable))zu verwenden, was nicht unterstützt wird. Schlimmer noch, ich habe es im style-Attribut eines Elements in React gemacht, und React hat die Eigenschaft einfach entfernt (vielleicht ein Anti-XSS-Muster?). Es hat mich eine Stunde gekostet, herauszufinden, was passiert.Etwas, das ich ständig falsch mache, ist die
@font-face-Syntax. Sie ist ziemlich umständlich (srcundformatin derselben Deklaration) und ich verschreibe oft das Font-Format, z. B.ttfstatttruetype.Oh, und Kommas in der
backdrop- odertransform-Eigenschaft hinzufügen, wieStatt
Oh Gott, ich brauche immer eine Referenz, wenn ich mit
@font-facearbeite, besonders um die tiefste Browserunterstützung zu erreichen. So viele Dateitypen und Erweiterungen, die man sich merken muss!Nun, das Vergessen spezifischer Safari-Eigenheiten. Zum Beispiel das Mischen von border-radius mit outline (es rundet die outline nicht ab) oder Bilder in Flexbox (man muss Breite und Höhe deklarieren, um Dehnung zu vermeiden).
Nicht daran denken, dass
transformundposition:fixedeinen neuen Stapelkontext erstellen.Wir hätten wahrscheinlich einen ganzen Beitrag über die Fehlersuche bei Stapelkontexten machen können.
Es ist so gut zu wissen, dass wir mit diesen „dummen“ Fehlern nicht allein sind :) Sobald man es geschrieben hat, kann es ewig dauern, bis man entdeckt, wo der Fehler liegt. Ich benutze Nova (von Panic), das ungültigen Code ziemlich gut erkennt, aber manchmal kann ich nicht herausfinden, warum es mir sagt, dass er nicht gültig ist.
border-box: box-sizing;
li: {/* CSS hier */}
display: flexbox;
Alle gemacht
Vor langer Zeit, aus mir unbekannten Gründen, stolperte mein Gehirn immer, wenn ich ein Element positionieren wollte, und schrieb
position:relative;top: left;
und dann konnte ich ein paar Sekunden damit verbringen, mich zu fragen, warum zum Teufel es nicht funktionierte. Zum Glück wurde das durch eine unbekannte Medizin geheilt
Als Neuling, der versucht, CSS zu lernen, wäre es für mich und andere wie mich hilfreich, die korrekte Version jedes Fehlers einzufügen
mth:child und margni
Ich schreibe schon lange CSS und ab und zu schreibe ich immer noch das hier und bin verwirrt, warum es nicht funktioniert
display: absolute;Ich vergesse routinemäßig
content:”;
in ::before/::after (was ich rebellisch mit einem Doppelpunkt schreibe, weil es mich lässt :P, obwohl CSS es missbilligt).
Ich habe mich auch dabei erwischt, wie ich
div:nth-child {}
allein letzte Woche öfter als einmal geschrieben habe. Und einmal im blauen Mond schreibe ich einfach
:nth-child {}
Das Festlegen der
font-size-Eigenschaft innerhalb des „*“-Selectors war ein riesiger Fehler auf meinen frühen Websites. Verschachtelte Tags führten zu einer zurückgesetzten Schriftgröße,Jetzt frage ich mich, ist
var()nicht übertrieben? Die Doppelminus-Notation erlaubt es bereits, Variablen und Werte zu unterscheiden. All diesevar()s sehen aus, als würden sie Ausdrücke verunreinigen, besonders incalc().Warum hat die W3C eine solche Entscheidung getroffen?
Nachdem ich es bemerkt hatte, beschloss ich, den Tag etwas früher zu beenden
Immer nth-child auf den Elternelement-Selektor statt auf das Kind setzen…
Wie .parent:nth-child(2)
Sollte sein .child:nth-child(2)