Inlämningsuppgift 5

Sixten Peterson

AQ9300

Inline CSS & externa stillmallar

Inline CSS

Inline CSS innebär att attributet style används för att modifiera en eller flera CSS-egenskaper för HTML-elementet med attributet. Den största styrkan med inline CSS är flexibiliteten med att kunna justera stilen för ett enskilt element efter behov. Den flexibiliteten kommer dock inte utan nackdelar, genom att använda inline CSS bryter utvecklaren mot principen om separation of concerns.

I vissa fall kan inline CSS vara den enda lösningen för att justera utseendet. Detta gäller främst i olika typer av CMS-system där en redaktör utan behörighet till webbservern önskar göra mindre justeringar av t.ex. text- eller bildelement. CMS-verktyg som låter redaktören skriva HTML med style-attributet kan således kringå en krånglig process av att uppdatera en CSS-fil.

Fördelar

Nackdelar

Externa stilmallar

Externa stilmallar innebär att CSS-egenskaper modifieras i en (eller flera) separata filer. För att modifiera egenskaperna för ett eller flera element används CSS-selektorer. Selektorerna tillåter mer avancerad CSS. Oftast används så kallade klasser i selektorerna för att välja vilket/vilka element som ska få sina CSS-egenskaper modifierade. Ibland används ett id istället på ett identiskt sätt av olika skäl. Det går dessutom att skippa klasser och id helt och hållet genom att istället specificera elementet efter dess namn (t.ex. a eller body).

För klasser gäller det att de HTML-element som ska få de modifierade CSS-egenskaperna har med klassnamnet i sitt class-attribut (t.ex. <a class="klassnamn">). I CSS-filen författas en selektor till klassen med en punkt före klassnamnet för att specificera att det är en klass (t.ex. .klassnamn {}). Principen är densamma för id, men istället för class-attributet används id-attributet och istället för en punkt används ett hashtag (#).

Den största styrkan med externa stilmallar är det förenklade underhållet som skapas när flera olika HTML-dokument kan peka till samma CSS-fil. Det gör i sin tur att CSS-egenskaper modifieras över flera sidor på samma sätt, vilket gör att ändringar följer med på alla sidor. En annan fördel är den ökade kontrollen som CSS-selektorerna och kombinatorerna ger i CSS-filerna. Det går att göra mer komplexa stilmallar med hjälp av diverse selektorer och kombinatorer. CSS-tricks har en mycket bra artikel om selektorer och kombinatorer som visar vad som är möjligt. Dessutom följer externa stilmallar principen om separation of concerns eftersom CSS hamnar i en egen fil och HTML i en annan.

Genom att använda sig av CSS-filer blir det lätt för utvecklare att skapa nya teman till färdiga webblösningar. Säg till exempel att du som frilansande utvecklare har en kund som önskar fräscha upp sin webbshop eller sitt forum. Som utvecklare kan du enkelt skapa ett nytt tema genom att duplicera CSS-filerna och ändra CSS-egenskaperna innanför selektorerna. Det går såklart att diskutera hur det påverkar eventuella uppdateringar av den färdiga webblösningen, men det är en helt annan historia.

Vad gäller nackdelar kan den ökade komplexiteten som uppstår genom selektorer och kombinatorer leda till förvirring hos utvecklaren om den inte har full koll på hur de fungerar. Dessutom som med allt i webbläsaren, fler filer innebär fler HTTP-förfrågningar som i sin tur kan öka på laddningstiden. Detta gäller i synnerhet då filerna blir stora, vilket knappast är ett problem i dessa uppgifter.

Fördelar

Nackdelar

En modern blandning: TailwindCSS

TailwindCSS är ett väldigt omdebatterat modernt CSS-ramverk som jag menar platsar sig väl i diskussionen om inline CSS vs externa stilmallar. Det som gör TailwindCSS speciellt är det faktum att det skulle kunna sägas kombinera de olika metoderna. Mycket likt inline css låter TailwindCSS utvecklare specificera egenskaper direkt i HTML – men det görs med förskapta klasser istället för med style-attributet. I regel modifierar en klass en egenskap, på så sätt uppnås egentligen samma sak som om en skulle skriva inline CSS. Men med färre tecken.

Som tidigare nämnt är användningen av TailwindCSS mycket omdebatterad. Detta grundar sig till stor del i att extern CSS gärna anses bättre med alla sina fördelar. Främst ur ett perspektiv av återanvändning och underhåll. Här bör dock poängteras att merparten av förespråkare för TailwindCSS använder sig av återanvändbara komponenter i JavaScript-ramverk såsom till exempel React, Vue eller Angular. Genom att kombinera TailwindCSS med komponenter omfördelas för- och nackdelarna då komponenterna återigen förenklar underhåll och återanvändning på ett vis som gör att ändringar visas konsekvent över hela webbplatsen.