Custom CSS Framework

1

Contesto:

Stiamo avendo un sacco di dibattiti super-riscaldati in ufficio. Sono solo un osservatore neutrale, poiché questo è il mio primo mese presso il mio attuale datore di lavoro. In precedenza non mi sono avventurato fuori dalle acque di Bootstrap ... ma mi ha fatto pensare. Sta facendo questo strano / cattivo / un odore di codice / etc ...

Attualmente sembra che ci siano molti di questi helper "globali":

.padding-all-5-30 {
    padding: 5px 30px;
}

.padded--medium-top {
   padding-top: var(--spacer-medium);
}

Da quanto ho capito, queste sono prevalentemente classi che soddisfano padding , margin , con tutte le varianti della proprietà css approvate nei seguenti incrementi:

5, 10, 15, 20, 25, 30, 35, 40, 45 and 50

Qualche contesto aggiuntivo:

Ad un certo punto molto tempo fa, questo era l'unico strumento di dimensionamento a cui avevamo accesso (non sicuro del caso d'uso):

huge: 40px;
large: 20px;
medium: 10px;
small: 5px;

Provenendo da uno sfondo di .NET OOP la mia inclinazione è quella di dire che classi di utilità come quelle (anche più globali, padding-50-5 , margin-1-15 ) sono intrinsecamente un'idea rischiosa bad . Ad esempio, quando li consumano in una nuova pagina, il mio utilizzo di tale classe di utilità si baserà sul contesto del codice di quella pagina. EG:

<!-- inline added for illustration only -->
<div style="padding: 30px" class="some-custom-page-specific-class"> 
     <div class="my-global-30-5-padding-util-class"></div>
</div>

Ora, se per qualche ragione voglio aumentare il padding della mia classe genitore globale my-global-30-5-padding-util-class , non posso farlo perché non funzionerà nel contesto. (Potrei anche aver creato una classe personalizzata per questo scopo)

Questo lascia un dev con 2 opzioni:

  • Lascia la classe globale così com'è, rendendo l'utilità null, o
  • L'appv va tutto il codice e aggiorna tutte le pagine / i componenti, annullando così il "vantaggio" che era inteso spostando il codice a un livello superiore.

La mia logica continua a puntare a css "basati sui componenti" ogni volta contro l'utilizzo di questi helper.

Domanda:

  • Questo serve a QUALSIASI beneficio? (Che mi manca)
  • Perché non aggiungere il padding al file css specifico della pagina e applicarlo in modo che non abbia effetto sulle altre pagine?
  • Perché persino introdurre questa dipendenza? (Ci sarebbe mai bisogno di pad / margine casuali per ogni elemento della pagina)
posta Rohan Büchner 16.05.2017 - 12:38
fonte

1 risposta

4

Il punto di css è quello di separare lo stile dal contenuto.

Pertanto classi come "padding50" o inline style="padding: 50" sono tecnicamente un "anti-pattern" in quanto funzionano contro questo obiettivo, accoppiando lo stile e il contenuto.

L'utilizzo di variabili in css per definire colori o dimensioni consente un ulteriore disaccoppiamento. Puoi semplicemente cambiare HighlightColour in un singolo posto invece di scavare attraverso tutti i css.

Tuttavia, questo sogno idilliaco non funziona mai come l'inevitabilità dei clienti che vogliono cambiare stile in base al contenuto.

Piuttosto che avere più pagine che seguono lo stesso layout e design, vorranno che ogni elemento di ciascuna pagina sia posizionato in modo specifico.

Questo porta dapprima a molte classi generiche, quindi a classi numerate e infine a stili in linea quando gli sviluppatori cedono e "fanno solo ciò che funziona".

Mantenere il puro obiettivo però ha dei veri benefici. css più piccoli, più veloci e la possibilità di eseguire il restyling completo di un sito con le sole modifiche.

link

    
risposta data 16.05.2017 - 13:46
fonte

Leggi altre domande sui tag