CSS vs. JavaScript: Důvěra vs. kontrola

Když mě GotoConf Amsterdam požádal, abych promluvil, myslel jsem, že to bude další strojové učení nebo Progressive Web Apps talk. Místo toho mě pořadatelé požádali o pokrytí CSS. Nedostatečně zastoupený jazyk ve stopě „programovacích jazyků“. Nyní jsem od začátku fanouškem CSS. Předpokládal jsem, že lidé na tvrdé vývojové konferenci nebudou tak nadšení. Neměli by se podrobně podívat na CSS. Místo toho jsem předpokládal, že je to pro ně spíš nutná obtěžování. Napsal jsem tedy řeč o tom, co znamená použití CSS a jak jej nevyužíváme k jeho silným stránkám.

Zde jsou poznámky z mého projevu.

Nudný boj

Druhý den jsem znovu sledoval „Kapitán Amerika: občanská válka“. A znovu mě to znudilo a já jsem to docela nepochopil. Myšlenka super hrdinů nucených nést odpovědnost za své vedlejší škody není nová. Žádost o kontrolu nad nimi také není nová. „Úžasňáci“ s tím odvedli skvělou práci.

Nudil jsem se z předpokladu, že všechny tyto super super hrdinové bojují proti sobě. Známe jejich schopnosti. Víme, že jsou to hluboce přátelé, kteří si navzájem zachránili životy. Víme, že jejich síly odpovídají. Na těchto setkáních není násilí, žádný skutečný pohon, žádný vztek. Vypadá to, že Marvel představil příliš mnoho skvělých postav a nyní se snaží najít způsob, jak lidem umožnit zaujmout stranu. Prodejte více hraček, vytvořte umělé drama.

Stejný dojem získám, když mluvíme o použití CSS nebo JavaScript pro rozvržení. Oba mají své přednosti, oba mají své pravomoci. Oba mají fanbasy připravené vykopat ty nejpodrobnější informace, které obhajují nad sebou. Ale já to považuji za nudné. Společně používané je to, co posunulo web vpřed. A to nás drží zpátky, že existují dva masivní tábory. Jeden konec vidí CSS jako minulost a v našem modulu řízeném světě bychom měli dělat vše ve skriptovacím prostoru. Druhý vidí CSS a jeho preprocesory a vytváří skripty jako více než dost, aby udělal vše. Pamatujete si dny DHTML, když jsme dělali všechno pomocí JavaScriptu? Pamatujete si vůli „pouze řešení CSS“? Když jsme (ab) použili zaškrtávací políčka pro komplexní interaktivitu, abychom se vyhnuli použití jakéhokoli JavaScriptu?

Giana Blantin to řekla pěkně:

Mohou tyto dvě skupiny:
 "CSS je tak snadné, není to ani kódování"
 "CSS je tak těžké, musíme ho nahradit JS!"
 prosím mluvit mezi sebou?

Mnoho mylných představ o CSS je způsobeno tím, že vývojáři nechápou, jak se liší od programování. Místo toho se s tím pohráváme a věci měníme. Poté, co něco zlomíme, usoudíme, že to není dost dobré a musíme jej nahradit.

Často to překračuje značku. Stejně jako použití OpenGL k jednoduchému vytváření gradientu, nemusíme pořád pořád vynášet velké zbraně. CSS má pár triků v rukávu, které se nemůžeme shodovat s skriptováním na straně klienta. A to nemá nic společného s funkcemi syntaxe nebo jazyka. Jde o sdílení odpovědnosti.

Kdo je na vině a kdo by měl být tolerantní?

CSS, podobně jako HTML odolává chybám. To může být matoucí. To znamená, že koncoví uživatelé by neměli trpět chybami vývojáře.

Produkty vytvořené pomocí CSS se stále zobrazují, když vývojář udělal chybu. Nevypadají perfektně, ale fungují. Když analyzátor CSS narazí na vlastnost, kterému nerozumí - přeskočí ji. Když narazí na hodnotu, s níž se nemůže vypořádat, nebo nemovitost nepodporuje - přeskočí ji. Tímto způsobem zůstaneme zpětně kompatibilní.

Tlačítko, které má barvu pozadí a přechod, zobrazí barvu ve starších prostředích. Ukazuje to také v prostředích, které nepodporují přechody kvůli problémům s výkonem. Rychlejší, více hi-fi a podpůrná prostředí budou mít sklon.

Nepotřebujete znát prostředí a nemusíte se rozhodovat. OS, prohlížeč a zúčastnění zástupci dělají tato rozhodnutí za vás.

JavaScript není odolný vůči chybám. To může být katastrofální. Při použití JavaScriptu máte mnohem větší kontrolu. Ale jste také mnohem zodpovědnější.

JavaScript na klientovi se může zlomit z desítek příčin. Prohlížeč může nepodporovat, připojení může být šupinaté. Mobilní poskytovatel, který vaši koncoví uživatelé mají, může vidět, že jeho úkolem je minifikovat a zabalit skripty dolů. Když JavaScript narazí na něco, čemu nerozumí - rozbije se. Zabalí se a neukáže nic, a tak potrestá uživatele vašeho produktu za chyby. Nebo chyby způsobené jinými lidmi a skripty, které se týkají doručování kódu koncovým uživatelům.

Jinými slovy:

  • CSS - Aplikujete své styly a doufáte, že to fungovalo.
  • JavaScript - Styling ovládáte a můžete a měli byste si ověřit, že to fungovalo

CSS znamená přijmout „rozmačkání“ webu, jak uvedl Brad Frost. Web není pevným plátnem, na kterém můžete nastavit pixely. Mnoho věcí na něm je mimo vaši kontrolu:

  • Prohlížeče vašich uživatelů
  • Nastavení rozlišení, hustoty pixelů a barev jejich zařízení
  • Jejich spolehlivost a rychlost připojení
  • Omezení jejich připojení - blokování zdrojů je věc
  • Jejich velikost písma a potřeba zvětšení
  • Dostupnost zdrojů na jejich strojích pro váš produkt (procesor již spaluje?)
  • Množství textového obsahu a velikosti obrázků ve vašem produktu - CMS někdo?

To může být skličující a často chceme kontrolovat prostředí, ve kterém jsou naše výrobky provozovány - i když jen proto, abychom si zachovali zdravý rozum. To však znamená, že blokujeme mnoho potenciálních uživatelů.

V tomto neznámém prostředí musíme rozhodnout, kdo přijme práci, aby se vypořádal s problémy s výkonem:

  • CSS - Úkolem prohlížeče je pracovat dobře, používat zdroje GPU a přeskočit funkce.
  • JavaScript - Testování podpory je vaší úlohou. A aby bylo zajištěno rychlé vykreslování, malování a přeformátování. A aby animace zůstala synchronizovaná.

CSS je zatraceně dobrý a tvůrci prohlížečů vynaložili velké úsilí na vylepšení výkonu rozhraní.

Proč tedy podceňujeme CSS a nadhodnocujeme výhody JavaScriptu? Myslím, že jedna vina je klasika - Internet Explorer.

CSS a jeho hrbolatá historie

CSS musela vyrůst rychle a nezískala podporu z prohlížečů, že musí být spolehlivým nástrojem.

CSS byl zpočátku velmi omezený a měl sloužit jako náhrada za vizuální HTML a atributy. Začněte všechny ty písmo, bgcolor, zarovnat, střed, HR a přátelé. Neplatná podpora prohlížeče a velmi liché chyby bez možností ladění mu nepomohly. Věděli jsme, že se věci mýlí, ale nemůžeme s tím nic dělat. Nemohli jsme ani nikoho požádat, protože tvůrci prohlížečů nebyli k dispozici pro zpětnou vazbu.

Když vyšel iPhone, měl CSS svůj den v centru pozornosti. Příběh „HTML5 je budoucnost“ vyžadoval spoustu dalších funkcí. S tím, že Apple volal výstřely a standardizace trvala příliš dlouho, byla „pouze Webkit“.

To znamenalo předpony v CSS a opět rozvětvení pro různé renderovací stroje. Tvůrci prohlížečů inovovali a projevovali dominanci nad ostatními s předponou funkcí. Jako vývojáři to znamenalo opakování a pro každou z nich bylo nutné zvolit plán podpory. A samozřejmě jeden na podporu starších zastaralých prohlížečů. Tyto nové války prohlížečů o předpony způsobily mnoho argumentů a nejasností.

A v neposlední řadě neexistoval donedávna žádný model rozvržení v CSS. Místo toho jsme hackli pomocí polohování a plovoucí. Polohování, zejména absolutní polohování v pixelech, není na webu rozumné. Lidé mohou změnit velikost písma a obsah se překrývá. Polohování s plovoucí vyžaduje čistící prvky.

Není to to, čemu říkáte spolehlivou základní linii, nebo linku, která byla snadno pochopitelná, pokud nejste „rodilý web“

Potřebovali jsme, aby CSS fungovalo bez ohledu na podporu prohlížeče

Naším řešením bylo oprava pomocí JavaScriptu. Umíme číst podmínky a reagovat na ně vytvářením HTML a používáním stylingu. Protože JavaScript je programovací jazyk, máme plnou kontrolu nad tím, co se děje. Máme podmínky, smyčky, srovnání - všechno, co programátor v CSS chybí. To je do jisté míry nedorozumění konceptu CSS. Selektor, který odpovídá několika prvkům, je v podstatě smyčkou. Můžeme dokonce použít: nth-child () k zacílení na prvek v kolekci.

Obecně CSS prochází skokem a mezemi, protože jsme na to museli použít JavaScript. Obzvláště zklamáním je podpora prohlížečů mnohem menší problém.

  • Stále zelené prohlížeče jsou věc - všechny prohlížeče jsou na neustálé cestě k upgradu. Dokonce jsme se od tvůrců prohlížečů dozvěděli, co přichází po řadě.
  • Nástroje prohlížeče poskytují podrobné informace o tom, co se CSS týká. Dostáváme dokonce i vizuální nástroje, jako jsou animační editory a výběr barvy.
Vizuální editor pro animace CSS v nástrojích pro vývojáře Firefox
  • Podpora CSS napříč prohlížeči je dobře zdokumentována: caniuse.com je neuvěřitelný zdroj. Ukazuje nejen, který prohlížeč a jaké prostředí co podporuje. Vysvětluje také chyby v implementacích, nabízí odkazy na specifikace a hlášení chyb. Má dokonce API pro vložení těchto informací do dokumentace a vývojářských nástrojů.
Pomocí rozšíření pro Visual Studio Code můžete získat informace o podpoře funkcí prohlížeče přímo v prohlížeči. Naučíte se, koho zablokujete, zatímco kódujete.
  • Máme podpůrné kanály a sledování chyb pro téměř všechny prohlížeče. Někteří dokonce umožňují podat chybu pomocí Twitteru. Týmy tvůrců prohlížečů jsou aktivní na sociálních médiích a jsou dosažitelné.
  • Pre-procesory, jako je Sass a Less, zvýšily teplo a rychleji inovovaly specifikace CSS. Stejně jako jQuery inspirovaný JavaScript dneška, tyto vedou k funkčnosti, kterou lidé chtějí.
  • Komunita tráví spoustu času, aby byla CSS lépe udržovatelná. Přístupy, jako je objektově orientovaný CSS od Nicole Sullivan a atomový design od Brada Frosta, byly už věky a měly by snižovat složitost.

Co pro vás může udělat CSS

Zde je několik úžasných věcí, které může CSS udělat nyní, a měli byste zvážit jejich použití.

Vypočítané hodnoty CSS

Jedna věc, která v CSS vždy vypadala, byla způsob výpočtu hodnot. Klasický příklad je absolutně umístěn prvek, který je 100% široký, ale potřebuje výplň. Za starých časů jsme to museli udělat vnořením jiného prvku a aplikováním výplně na tento prvek. Po určitou dobu bychom však mohli použít CSS calc () a použít šířku calc (100% - 1em).

Výpočty jsou velmi dobře podporovány napříč prohlížeči. O jejich používání by neměly existovat žádné výhrady.

Mediální dotazy

Dotazy na média CSS umožňují reagovat na změny výřezu dokumentu. V podstatě znamenají, že část výřezu použijete, když výřez splňuje určitá kritéria. Může to být výřez, který má alespoň určitou šířku nebo maximálně určitou výšku. Můžete také zkontrolovat orientaci obrazovky na výšku nebo na šířku, nebo pokud je dokument výtisk.
 Mediální dotazy CSS mají také ve skriptu matchMedia stejný JavaScript. To vám umožní načíst obsah na vyžádání. Problém s jedním mediálním dotazem je, že prohlížeče načítají obrázky v blocích bez ohledu na shodu.

Generovaný obsah

Použití pseudoelektorů :: before a :: after pseudo umožňuje vytvářet obsah, který je čistě vizuální. Je to skvělý způsob, jak zajistit, aby věci, které jsou z kosmetických důvodů, nepotřebovaly vlastní, prázdný prvek DIV, SPAN, B nebo I. Je to způsob, jak udržet vše vizuálně udržované v šabloně stylů namísto skriptů nebo HTML dokumentu. Můžete to spárovat s vrženými stíny, přechody a dalšími funkcemi CSS, které vytvářejí vizuální efekty. Působivou ukázkou toho je „A Single DIV“. Tento web zobrazuje desítky vizuálů vytvořených z jednoho prvku DIV.

Tato grafika je vytvořena pomocí jediného prvku DIV

Animace a přechody

Animace a přechody v CSS byly velkým průlomem, když vyšel iPhone. Přechody vám umožňují vytvořit hladkou změnu z jednoho stavu do druhého. Nemusíte vědět, jaké změny by se měly stát. Prohlížeči pouze řeknete, jak dlouho má přechod a jakou funkci uvolnění použít. Animace vám poskytují podrobnější kontrolu. Definujete klíčové snímky a co by mělo animovat jak. Animace i přechody střílí události před, během a po. To vám umožní předvídatelným způsobem komunikovat s JavaScriptem. Výhodou použití CSS je to, že prohlížeč zajišťuje výkon animace. K tomu dochází tak, že je spustíte na GPU a v případě potřeby omezíte frekvenci snímků. Je to důležitý krok k zajištění dobré výdrže baterie telefonů vašich uživatelů. Pokud animujete v JavaScriptu, může to snadno pokazit.

Výřezové jednotky

Dotazy na média dávají smysl, pokud chcete definovat zkušenosti podrobně. Místo toho můžete také použít jednotky výřezu k velikosti prvků podle dostupného místa. Šířka výřezu (vw) je procento celé šířky výřezu. Takže na širokoúhlé obrazovce 480px je 10vw 10% nebo 48px. To se liší od% jednotky, což je procento nadřazeného prvku a nikoli výřezu. Vnořená procenta se zmenší, vw ne. Výška výřezu (vh) je procento z celkové výšky výřezu. Můžete se také stát nezávislým na orientaci pomocí vmin a vmax. Tito buď vezmou menší nebo větší z vw a vh. Jedinou niggle na podporu zobrazovacích jednotek je to, že Edge doposud nepodporuje vmin a vmax.

CSS Tricks obsahuje skvělý článek o tom, jak mohou být výkonné zobrazovací jednotky. Od vložení nezávislých na rozlišení po typografii závislou na výřezu můžete pomocí jednotek výřezu vytvořit vysoce flexibilní rozhraní.

Flexbox

Flexbox je způsob, jak vytvořit rozvržení prvků v CSS. V podstatě je to všechno, co lidé, kteří tvrdili, že tabulky rozvržení, byli v CSS snáze vynecháni - a mnohem více. Podřízené prvky prvku můžete zarovnat napravo, vlevo, nahoře nebo dole. Můžete je definovat tak, aby zaplnili dostupné místo, přičemž každý z nich použije stejné množství nebo více než ostatní. Můžete je také definovat tak, aby využívali dostupný prostor mezi sebou nebo kolem každého z nich. Je stejně flexibilní jako na plechovce. Pokud chcete mít vizuální editor, abyste viděli, co to znamená, Build Build React má skvělého editoru flexboxu, se kterým si můžete hrát.

Sestavení pomocí editoru Flexbox React ukazuje sílu rozvržení prvků pomocí této techniky

K dispozici je také hra s názvem Flexbox Froggy. Učí tyto koncepty zábavným a přístupným způsobem a je skvělé pro děti začít s CSS.

Skvělá diskuse o Flexboxu je ta, kterou Zoe Gillenwater přednesla na různých akcích. Nejvíc se mi na řeči nejvíce líbí, jak Zoe ukazuje, jak používají Flexbox ve výrobě. Příklady jsou z rezervace.com a zobrazují záložní reklamy pro prohlížeče, které jej nepodporují.

Mřížka CSS

Pokud je Flexbox odpovědí na prvky rozvržení v řádku nebo sloupci, CSS Grid ji posouvá na další úroveň. Jeho pomocí můžete rozložit prvky v definované mřížce ve dvou rozměrech, řádcích i sloupcích. Grid již nějakou dobu vaří a nyní je konečně podporován napříč deskou.

Grid může být skličující k pohledu, protože jeho flexibilita znamená, že existuje spousta možností na výběr. Nejjednodušší způsob, jak začít, je zdroj Rachel Andrewové „Grid by Example“. Tento obsahuje příklady rozmístění mřížky. Mnoho z nich přichází s rezervami pro nepodporované prohlížeče. Tréninková videa vysvětlující jejich výhody a výstupy z něj činí úžasný zdroj.

Pokud se naučíte lépe s výzvami, můžete chytit CSS Grid hraním CSS Grid Garden.

O mřížích CSS online je třeba hovořit „musí vidět“. První z nich je „CSS Grid Layout“, opět od Rachel Andrew.

Jen Simmons má jiný přístup. Ve své přednášce „Real Art Direction on the Web“ ukazuje, jak nám Gridova všestrannost může pomoci vymanit se z našeho „rozložení krabic“.

S mícháním a porovnáváním Grid a Flexbox není problém. Může a měl by používat Flexbox ve svých buňkách. Tyto nástroje vám společně umožňují vytvářet flexibilní rozvržení. Rozvržení, která umožňují variabilní obsah a změnu, aby se vešly na dostupné místo. Rozložení webu.

Vlastní vlastnosti (proměnné) CSS

Jednou z nejžádanějších vlastností CSS, kterou měli preprocesoři jako Sass a Less po dlouhou dobu, jsou proměnné. Nyní máme vlastní vlastnosti CSS, což je pro mě CSS nejvíce vzrušuje. V dokumentu můžete jednou definovat opakovaně použitelná nastavení a použít je v celém dokumentu. Nejběžnějším případem použití jsou vlastní barvy a velikosti. Můžete ale jít ještě dále a definovat písma a další typografii. Můžete je také použít k vnoření výpočtů do CSS. To předtím nebylo možné. Úžasnou vlastností je, že vlastní vlastnosti lze také dynamicky nastavit pomocí JavaScriptu.

Jak číst a psát vlastní vlastnosti CSS pomocí JavaScriptu - (výňatek z diskuse Lea Verou)

Pokud se chcete dozvědět vše o úžasné síle vlastních vlastností CSS, je zde řeč, kterou byste si neměli nechat ujít. Lea Verou je „CSS Proměnné: var (- podtitul)“ je pokladnicí informací.

Hlavní dotazy CSS

Dalším velmi vítaným přírůstkem do CSS byly Feature Queries. Fungují podobně jako mediální dotazy. Pomocí @ supportu zkontrolujete, zda aktuální uživatelský agent podporuje určitou funkci. Poté definujete blok CSS, který se použije, pouze pokud je podporována funkce. To by se mohlo zdát podivné, protože o to by se měla postarat povaha CSS odolná vůči chybám. Co to však dělá, je, že vám dává mnohem podrobnější kontrolu. Také vám umožňuje definovat záložní reklamu, pokud pro určitou funkci neexistuje podpora pomocí klíčového slova „ne“.

CSS a JavaScript?

Spolupráce CSS a JavaScriptu je výkonná a správná věc. Pokud jde o CSS, stále nemůže dělat všechno. Existují scénáře, kde samotná povaha CSS stojí v kontrastu s tím, čeho chceme dosáhnout.

Jak Cristiano Rastelli vysvětluje ve své přednášce „Nechť je mír v CSS“, chovaný rys „Oddělení starostí“ neplatí ve světě modulů.

Když se CSS stala věcí, přesunuli jsme veškerý vzhled a chování a chování z HTML do CSS a JavaScriptu. Definujeme buď na dokumentu, nebo dokonce na úrovni projektu. Oslavujeme skutečnost, že CSS dědí z nadřazených prvků. Když vytváříme komponenty, které lze opakovaně opakovaně používat, to nechceme. Chceme, aby nesli svůj vzhled, pocit a chování, aniž by vykrvili buď sousední, nebo zdědili své rodiče.

CSS a JavaScript spolupracují ve světě bez komponent

Při vytváření řešení založených na dokumentech není žádná omluva, aby se neomezovalo na sílu CSS. Můžete a měli byste pomocí JavaScriptu přenést informace, které CSS nelze přečíst do CSS. Je však rozumné to činit co nejméně rušivým způsobem.

Hierarchie vytváření CSS a JS v tomto scénáři pracuje s dalším:

  • Používejte CSS, když můžete - pomocí věcí, které jste zde viděli
  • Pokud potřebujete komunikovat s CSS, zvažte změnu vlastních vlastností
  • Pokud to není možnost, použijte třídy na nadřazené prvky pomocí třídy ClassList.
  • Jako poslední možnost můžete styl přímo změnit
Vynikající příklad ukazující, jak číst pozici myši v JavaScriptu a uložit ji do vlastních vlastností CSS - (výňatek z diskuse Lea Verou)

Kdykoli dynamicky měníte styly, nezapomeňte, že pracujete proti prohlížeči. Každá změna stylu má důsledky na přeformátování, vykreslování a malování. Paul Lewis a Das Surma udržují praktického průvodce s názvem CSSTriggers. Tento podrobně popisuje, které změny CSS mají za následek trest v prohlížeči.

CSS Triggers vám poskytuje informace o dopadech různých změn stylu

Celkem

CSS je mnohem spolehlivější než dříve a nezbývá mnoho, které by se mělo lišit od toho, čím je. Hlavní věcí, kterou si musíte zapamatovat, je to, že CSS nemá dělat to samé, co JavaScript dělá. Dokonce ani jazyky rozvržení nefungují tak, jak to dělá CSS, a nepokrývají stejnou potřebu. Je to docela těžká práce a dělá to dobře. Když používáte CSS, prohlížeč vám pomůže vyhovět potřebám vašich koncových uživatelů bez ohledu na jejich nastavení. Toto je základní princip webu a je definován v zásadách návrhu HTML W3C:

Uživatelé nad autory nad implementátory nad specifikátory nad teoretickou čistotou

Naši uživatelé si zaslouží rozhraní, která jsou hladká, spolehlivá a nezabíjejí své baterie. Zvažte tedy CSS o něco více. Můžete být líní a stavět na práci komunity.

Inspirující a aktivní lidé CSS, aby je následovali

Při zkoumání této přednášky jsem pokračoval v návratu ke zdrojům psaným a udržovaným báječnými lidmi na webu. Zde je krátký seznam v žádném konkrétním pořadí lidí, které byste měli sledovat, pokud chcete být nuceni znát své znalosti CSS. Musím poděkovat každému z nich. Usnadňují nám web.

  • Ire Aderinokun (@ireaderinokun) píše na svém blogu bitsofco.de spoustu snadno pochopitelných a bodových informačních bitů.
  • Ana Tudor (@anatudor) je vývojář, který v CSS vytváří směšně složité a krásné animace. Její Codepen je jedním z nejfrekventovanějších a to, co dělá s CSS enginy, je skvělá pomoc pro tvůrce prohlížečů při testování jejich výkonu.
  • Jen Simmons (@jensimmons) je expertem na CSS layout a design, který pracuje pro Mozilla
  • Rachel Andrew (@rachelandrew) je pro mě odborníkem na mřížky č. 1 CSS
  • Chris Coyier (@chriscoyier) je zakladatelem úžasných CSS triků CSS a interaktivního vývojového hřiště Codepen
  • Sarah Drasner (@sarah_edo) je odborník na animaci a design zaměřený na budování produktů, které lze udržovat
  • Zoe M. Gillenwater (@ Zomigi) je vedoucím vývojářem využívajícím CSS ve výrobě krvácející hrany
  • Brad Frost (@ brad_frost) je autorem atomového designu, škálovatelného způsobu použití a opětovného použití CSS ve velkých projektech
  • Rachel Nabors (@rachelnabors) je komiksový umělec a odborník na animaci, který píše o webových animacích a výhodách různých technologií.
  • Una Kravets (@una) je vývojář se specializací na CSS a jeho nové funkce. Ona je také podcaster a má prst hodně na pulsu CSS a dalších vizuálních technologií
  • Lea Verou (@leaverou) je autorem vynikající knihy o tajemství CSS, výzkumným pracovníkem na MIT a pozvaným odborníkem pracovní skupiny CSS W3C. Je pečlivá ve svém výzkumu a nemilosrdná v poskytování mnoha skvělých informací v krátkém čase.
  • Sara Soueidan (@sarasoueidan) je vývojář, který je odborníkem na responzivní návrhy a pragmatické přístupy k používání nejnovějších technologií.

Tyto lidi (mimo jiné) se mě neustále inspirují a doufám, že začnete mít stejný zážitek