Hoe Susy te gebruiken Superkrachtige Sass-netten

Susy is een krachtige set Sass-mixins voor het bouwen van grid-gebaseerde lay-outs.

Wat is er zo geweldig aan Susy? In deze tutorial laten we je de basis zien van werken met Susy, maar hier is een lijst met pro's om te overwegen:

  • Anti-framework: Susy legt geen specifieke netfilosofie op aan jou. Dus je zult niet in een CSS-bestand vallen en de klassen uit de doos gebruiken (zoals je zou doen met een Framework zoals Bootstrap); in plaats daarvan bepaalt u uw eigen rasterregels, zodat Susy de berekeningen voor u kan regelen.
  • Mixin-georiënteerd, geen-bloat: Susy is geen raamwerk. Het heeft geen aantal kilobytes, omdat het geen CSS-regels uitvoert die u zelf niet handmatig definieert.
  • Krachtige configuratie, verstandige standaardinstellingen: Susy gebruikt configuratieregels tijdens het bouwproces, maar het vereist niet dat u alles leert om te beginnen.

Deze drie simpele pro's zijn meer dan voldoende om Susy een kijkje te geven. Laten we beginnen!

Opgericht

Ten eerste moet je genoeg bekend zijn met Sass om het te schrijven en te compileren. Op het moment dat dit wordt geschreven, implementeert Susy enkele Sass-functies die momenteel niet worden ondersteund door LibSass (de op C gebaseerde Sass-compiler), dus u moet de Ruby-versie van Sass gebruiken. Begin met het installeren van Sass en leer hoe u de kijk maar commando, wat essentieel is voor het werken met Sass in het algemeen, evenals Susy.

Vervolgens moet je Susy op je computer laten installeren. Omdat Susy's enige afhankelijkheid Sass zelf is, kunt u het zip-bestand van het project downloaden van GitHub en de inhoud van de Sass-map kopiëren naar uw project.

Vervolgens moet je Susy importeren in je Sass-bestand.

@import "susy"; 

Hierbij wordt ervan uitgegaan dat u zich in een map bevindt met de inhoud van de map Sass.

Hallo-kolommen: eerste voorbeeld

Susy is fundamenteel een reeks mixins, die als functies in Sass zijn. Deze mixins worden in je Sass-code genoemd en wanneer de Sass-compiler wordt uitgevoerd, worden de mixin-definities in de Susy-bestanden bekeken en wordt de juiste uitvoer bepaald.

De belangrijkste mixin in Susy is de span mixin, wat er als volgt uitziet:

.inhoud @omvat span (20%);  

De span mixin vertrouwt ook op de houder mixin, die opstelt wat Susy een "lay-outcontext" noemt.

.container @include container (1180px);  

Susy biedt u ook de mogelijkheid om overspanningen te maken op basis van een vooraf ingesteld aantal kolommen in een grid-set:

.kwart @omvat span (4 van 12);  

Susy's kracht gaat veel verder dan het gemiddelde raster, waardoor minder dan normale rasterconfiguraties mogelijk zijn. Laten we beginnen met een eenvoudig voorbeeld: een indeling met 9 kolommen.

.negende @omvat span (1 van 9);  

Sass-kaarten

Susy stelt u in staat om configuratie via de $ susy variabel. Als u een Sass-kaart maakt, kunt u een aantal voorkeuren bepalen over hoe Susy werkt om uw overblijfselen in te delen. Susy implementeert een lay-out mixin die een configuratiekaart uitvoert. Dit zijn de standaardinstellingen, rechtstreeks overgenomen uit de documentatie van Susy.

$ susy: (flow: ltr, math: fluid, output: float, gutter-position: after, container: auto, container-positie: center, kolommen: 4, goten: .25, kolom-breedte: false, global-box -sizing: inhoud-box, laatste-stroom: naar, debug: (afbeelding: verbergen, kleur: rgba (# 66f, .25), uitvoer: achtergrond, toggle: rechtsboven,), gebruik-aangepast: (achtergrondafbeelding : true, background-options: false, box-sizing: true, clearfix: false, rem: true,)); 

U kunt elke specifieke instelling overschrijven door deze aan uw eigen instelling toe te voegen $ susy kaart:

$ susy: (columns: 16, last-flow: from) 

Vaak gewijzigde opties zijn de kolomtelling, de gootbreedte en de uitgang keuze. Elk van deze configuratie-opties doet iets anders. 

Praktische voorbeelden

In het belang van deze tutorial zullen we niet alle configuratie-opties doorlopen (de documentatie van Susy is een prima manier om ze uit te leggen). Laten we in plaats daarvan een paar praktische voorbeelden doornemen van hoe u Susy kunt gebruiken.

Span en container-mixins

Hier zien we een basisgebruik van de span- en containermixins:

Notitie: om de kolommen op volle breedte te waarderen, bekijkt u de versie op het volledige scherm.

Er zijn een paar dingen om op te merken met dit voorbeeld. We hebben een geforceerd voorbeeld van een dashboard gemaakt. We hebben ook een klein beetje JavaScript toegevoegd waarmee nepgebruikersafbeeldingen worden opgehaald van de uifaces.com API.

De Susy-specifieke stukken zijn de kolommen. In dit voorbeeld hebben we een responsieve lay-out gemaakt met behulp van de @ include span () syntaxis. We gebruiken ook de nestmogelijkheden van SCSS op een paar plaatsen. Merk op dat Susy goed aansluit op uw normale mediaquery-syntaxis. We hebben een container gemaakt van de .stats sectie gebruiken @ include container;.

Er moet ook worden opgemerkt dat er geneste kolommen zijn in dit specifieke voorbeeld; de .avatar elementen zijn genest in een andere Susy-kolom, en dit werkt prima omdat Susy standaard standaardbreedten gebruikt.

Layout stenografie

Vervolgens zien we een gebruik van Susy's steno voor lay-out met een raster met grotere kolommen in het midden dan aan de buitenkant.

In dit voorbeeld gebruiken we een paar verschillende opties die voor u nieuw moeten zijn. Eerst maken we onze markup met Haml. Haml is een witruimtegevoelige markup-vervanging voor HTML die op Ruby is gebouwd. Zie het als een beetje als een preprocessor voor HTML.

Laten we eens kijken naar wat ons voorbeeld creëert.

.brick-lijst

Dit creëert een 

 element standaard, en geeft het een klasse van brick-lijst.

- 30. keer doen | i |

Deze ingesprongen regel herhaalt alles wat genest is binnen dezelfde inspringing 30 keer. Dit betekent dat alles wat wordt uitgevoerd binnen in de div zal zijn die we hierboven hebben gemaakt .brick-lijst. De | I | portie geeft de stroom door inhoudsopgave, dat is de telling van de lus, beginnend bij 0. Dus, bijvoorbeeld, op onze vijfde keer door de lus, ik zou gelijk zijn aan 4.

 .col% img src: "http://hhhhold.com/jpeg/700?v=#i" 

We zien dit in onze 30 keer lus. De .col creëert een div met een klasse van col. De % img ... creëert een  element, en de attributen in de accolades worden in die afbeelding doorgegeven. We gebruiken hhhhold.com voor onze tijdelijke afbeeldingen. De syntaxis hier is de Ruby hash-syntaxis, die in veel opzichten sterk lijkt op JSON. 

Een ander belangrijk onderdeel van deze lijnen is de # , waarmee u het kunt afdrukken ik index variabele (dit wordt genoemd interpolatie, als je meer wilt leren, legt Hugo Giraudel alles uit wat je moet weten). We gebruiken deze variabele in de URL als een parameter, zodat de afbeeldingen die we laden niet allemaal hetzelfde zijn.

Het Susy-raster is uniek in dit voorbeeld; we stellen een rastervariabele in met de regel:

$ raster: (1 2 5 5 2 1);

Deze variabele zal worden doorgegeven aan Susy in onze span mixin roept en leest maak een raster met zes kolommen; de eerste kolom moet een relatieve breedte van 1 hebben, de tweede kolom van relatieve breedte van 2, de derde kolom van relatieve breedte van 5, enz..

Vervolgens gebruiken we dit raster in het hele voorbeeld, waarbij we onze .col divs op de 1e, 3e en 5e kolom startposities en spanning 2 kolommen met behulp van de n-kind CSS-regel. Als we ditzelfde raster zouden wijzigen om elke kolom met dezelfde relatieve kolombreedte te hebben, zou het er zo uitzien.

Hier is hetzelfde voorbeeld, met een andere asymmetrische lay-out.

Zoals u kunt zien, zijn niet-conventionele rasters eenvoudig te realiseren en maakt Susy krachtige rasterbesturing tot een plezierige taak.

Conclusie

Susy biedt een flexibelere en minder eigenzinnige manier om uw eigen rasterlay-outs te maken zonder u te dwingen een vooraf bepaalde set CSS te gebruiken. Dankzij die flexibiliteit kan Susy snel worden geleerd en in een project worden ingebracht zonder zich volledig te moeten verbinden om het te gebruiken in elke CSS-declaratie die u maakt.

Of u nu bepaalt of Susy geschikt voor u is of niet, als ontwikkelaar van een front-end moet u zich ten minste bewust zijn van alle pre-processingtools die voor u beschikbaar zijn. Ze worden een belangrijke toolset voor moderne ontwikkelaars.