I due non devono necessariamente combattere, ma generalmente sono d'accordo sul fatto che le persone "OOP CSS" in genere non hanno la minima idea di una buona programmazione o di un buon CSS. Alcuni lo fanno, ma molti non lo fanno.
-
Prima di tutto quando le persone parlano di CSS in stile OOP, ciò di cui stanno realmente parlando è uno schema di componentizzazione. Non OOP. Che siano disposti a chiamarlo OOP è un argomento contro di esso in sé e per sé. Kool Aid è stato mixato ed è stato bevuto.
-
Le classi multiple utilizzate per comporre gli stili per un elemento sono in realtà molto simili a uno schema di ereditarietà in OOP. Entrambe sono parti uguali stupide e accoppiano inutilmente i problemi rendendo un insieme di proprietà una dipendenza da troppe cose per poterle mai cambiare senza incorrere in tutti i tipi di problemi nell'intera app. Puoi avere categorie di classi che definiscono determinati sottoinsiemi in modo tale che in effetti diventa facile scambiarne uno con un altro con pochi problemi, ma questo pone un carico di competenza piuttosto pesante su tipici sviluppatori che non vedono immediatamente "OOP CSS "per l'ossimoro che è. Ma alla fine non è stato progettato in quel modo, quindi perché farlo così? HTML e CSS funzionano meglio quando si lavora con il loro modo di lavorare, non con il modo in cui un acronimo dall'acronimo serio sembra volerli funzionare.
Detto questo, i CSS non sono realmente progettati come semantici, ma vale la pena seguire una strategia simile. Nei casi in cui l'HTML dovrebbe principalmente descrivere il contenuto, l'ID HTML e i nomi delle classi NON devono descrivere ciò che il CSS o JS associato a loro effettivamente fanno. shiny_red_button IMO è un nome schifoso per una classe CSS. Per quanto riguarda il design, un giorno il tuo pulsante potrebbe non essere così rosso e lucido anche se il pulsante gestisce ancora il panico e dovrebbe quindi essere chiamato 'panico' o forse 'panic_btn' se ti piace il tipo di elementi che in genere si applica a .
Vado con le seguenti regole generali
- Non descrivere aspetti o dettagli di un gestore nei nomi di ID o classe.
Sii un po 'semantico. L'HTML ci dà un'idea generale di ciò che verrà trovato all'interno. Ora diventa un po 'più specifico per il suo scopo di design.
- Utilizza il minor numero possibile di selettori
La cosa a cui lo stile CSS di OOP pensa di reagire è che la specificità viene lasciata a bocca aperta. Fallire. La specificità non è il nemico. È uno strumento che usi bene o usi impropriamente. Quindi, quando qualcuno dice "Non usare ID perché è più difficile ignorarli", schiaffeggiali o chiedi loro di prenderli in considerazione:
#unique_element_container_on_page > a
rispetto a .unique.element.container.on.page > a
Se c'è una cosa che dovrebbe offendere profondamente i progettisti, gli sviluppatori di ui e gli sviluppatori orientati a app / server equamente, è necessario! @ # $ contare qualcosa (come dire un metodo java con 20 parametri facoltativi) per capire cosa devi fare dopo.
Ho detto di nuovo perché penso che il lint CSS sia sciocco.
- Lascia che il contesto faccia il polimorfo
L'HTML è fondamentalmente tassonomia. Ampie categorie che si adattano a categorie meno ampie che continuano a funzionare fino a cose specifiche / uniche. I CSS funzionano meglio quando seguono insieme a questo schema. Le sezioni possono avere variazioni su un tema ancora più generale.
Sostituire quel tema con una classe di sezione seguita da qualunque discendente è diverso di solito ha molto più senso della scrittura di una nuova classe di componenti css e di lasciarla cadere su quell'elemento specifico che è diverso da sostituire a quello vecchio. L'intento è più chiaro e hai meno dipendenze per elemento su cui intervenire. Tranne, naturalmente, quando la variazione del tema non è realmente correlata al luogo in cui è posizionato un elemento. Questo è uno di quei rari casi in cui estrometterò una virgola e aggiungerò un selettore a uno esistente e poi definirò le sue proprietà di variante immediatamente dopo con il nuovo selettore. Fai abbastanza cose del genere e puoi cambiare etichetta bianca con una semplice modifica della classe nella parte superiore della pagina nel tuo codice HTML.
Usa ASCIUTTO più di un rilevatore di odori della regola d'oro con rare eccezioni che è in programmazione. Nei CSS è molto più comune che due insiemi di proprietà quasi come fossero coincidenti, non perché i loro selettori condividano uno scopo. È meglio lasciarli separati per il giorno in cui qualcuno vorrà cambiare uno e non l'altro. Un file CSS ideale funziona come un pannello di controllo in cui è ragionevolmente facile trovare quello che ti serve per cambiare qualcosa con la certezza che non cambierai anche qualcos'altro per caso.