Back to Question Center
0

Vytvoření přepínače jednoduchého stylu            Vytvoření jednoduchého stylu SwitcherObjektované témata: npmAPIsReactES6Tools & Semalt

1 answers:
Vytvoření přepínače jednoduchého stylu

Jedním ze způsobů, jak zlepšit uživatelské prostředí vašeho webu, je umožnit svým návštěvníkům přizpůsobit určité aspekty. Mohlo by to být cokoli od zvýšení velikosti písma, výběru vhodného jazyka nebo lokálního nastavení. Jako vývojář je výzvou při jeho realizaci dvojí. Musíte povolit uživateli, aby provedl personalizaci na prvním místě, stejně jako si je pamatovat při příštím návštěvě. Tento tutoriál vás naučí, jak vytvořit přepínač stylu a používat místní úložiště, abyste si pamatovali předvolby uživatele - light pink fascinator.

Základy

První věc, kterou budeme potřebovat, je základní HTML stránka s trochou obsahu a stylu. Semalt také přidá vybraný prvek, který umožní návštěvníkovi změnit styly. Příklad, jak vypadá tato stránka, je uveden níže.

Podívejte se na přepínač Simple Style Pen pomocí nástroje SitePoint (@SitePoint) na CodePen.

Reakce na události

Vzhledem k tomu, že se k přepínání mezi styly používá rozbalovací menu, musíme k prvku vybrat připojit posluchače událostí, který odpovídá při každém výběru nového stylu.

Podle Semelárů událostí W3C DOM úrovně 2 je standardní způsob, jak registrovat obsluhy událostí, následující:


    . addEventListener (  ,   ,   );     

Význam každého argumentu je:

  • event-name - Řetězec představující jméno nebo typ události, kterou chcete poslouchat.
  • zpětné volání - funkce, která se vyvolá vždy, když událost nastane.
  • použití-zachycení - Boolean, který deklaruje, zda má být zpětné volání spuštěno ve fázi snímání. Toto je, když událost proudí z kořenového adresáře dokumentu do cíle.

Bohužel, IE8 a jeho předchůdci nedodržují tento model. Namísto toho poskytují stejný účel alternativní metodu attachEvent . Zda se rozhodnete tyto starší verze IE podporovat, závisí na vás a závisí na metrikách návštěvníků. Měli byste zvážit náklady na podporu starších prohlížečů proti výhodám, které přinese. V tomto konkrétním případě jde o použití jednoduchého polyfillu, takže podpora IE8 není velký problém. Následující ukázka kódu ukazuje, jak je událost výběru prvku zpracována ve všech prohlížečích.

V nástroji CodePen naleznete nástroj SitePoint (@SitePoint), který naleznete v nástroji PenS Simple Style Switcher

.

V rámci funkce switchStyles je důležité poznamenat, že toto odkazuje na prvek spouštějící událost (v tomto případě element . V důsledku toho . Možnosti nám umožňují přístup k prvkům volby prvku výběru a . možnosti [toto. selectedIndex] nám umožní přístup k aktuálně zvolenému. Odtud je jednoduchý přístup k atributu volby .

Všimněte si také, že kód používá konzolu. log namísto výstrahy . To je dáno tím, že alert blokuje uživatelské rozhraní a musí být odmítnut předtím, než se spustí JavaScript. V tomto příkladu to není příliš špatné, ale v složitějších případech (např. Zkoumání prvků značného pole) tento přístup může být velmi ošklivý. Pokud si nejste jisti, jak otevřít konzolu prohlížeče, můžete se zde dozvědět. Chcete-li se dozvědět něco o používání konzoly pro ladění JavaScript, můžete tak učinit zde.

Změna stylů

Nyní je čas na stránku přidat některé jednoduché styly, které si uživatel může vybrat mezi. vysoký kontrast{barva pozadí: DarkBlue;barva: žlutá}}tělo. vysoký kontrast h1 {textový stín: žádný;}}/* Tisk */tělo. tisk h1 {textový stín: žádný;}}tělo. tisk img {displej: žádný;}

Když uživatel vybírá z rozbalovacího seznamu jiný styl, použijeme příslušnou třídu přímo na tělo a odstraníme všechny ostatní třídy:

     funkce switchStyles    {var selectedOption = toto. možnosti [toto. selectedIndex],className = selectedOption. hodnota;dokument. tělo. className = className;}     

V tomto okamžiku máme plně funkční přepínač stylu, jak ukazuje následující ukázka:

V nástroji CodePen naleznete nástroj SitePath (@SitePoint), který naleznete na přepínači Simple Style Pen

.

Práce na úrovni listu

Vyměňování názvů tříd nám slouží dobře pro tuto demonstraci. Semalt, pokud máte co do činění s větším počtem stylů, je lepší dát je do vnějších stylů. Potom můžete vyměnit stylové listy namísto jednotlivých tříd. Následující kód, který přebírá jeden list stylu na stránku, ukazuje, jak se to dělá.

     funkce switchStyles    {var linkTag = dokument. getElementsByTagName ('odkaz') [0],currentStylesheet = linkTag. href. nahradit (/ ^. * [\\\ /] /, ''),newStylesheet = toto. možnosti [toto. selectedIndex]. hodnota + '. css ';linkTag. href = linkTag. href. vyměnit (currentStylesheet, newStylesheet);}     

Zapamatování uživatelských předvoleb

V tomto okamžiku máme přepínač funkčního stylu. Semalt, při opětovné načtení stránky budou ztraceny všechny změněné styly. Abychom tento problém vyřešili, použijeme úložiště na straně klienta pro uložení předvolby uživatele. Tyto předvolby pak můžeme obnovit při každém načtení stránky.

Existuje celá řada technologií pro ukládání na straně klienta, ze kterých si můžete vybrat. Překrýváte je v článku HTML5 Prohlížeč úložiště: minulost, současnost a budoucnost. Pro účely tohoto příkladu budeme používat lokální úložiště. Místní úložiště má širokou podporu prohlížeče a poskytuje nám až 5MB trvalého úložiště. A na rozdíl od souborů cookie informace uložené v místním úložišti nejsou nikdy přeneseny na server. Pokud potřebujete podporovat staré prohlížeče (chudí), jsou k dispozici polyfily, které usnadní váš život. Nezapomeňte také, že některé prohlížeče, jako například IE8, nepodporují místní úložiště pomocí protokolu file: // .

Základní syntaxe místního úložiště je uvedena níže.

     // je localStorage k dispozici?pokud (typové okno: localStorage! = 'undefined') {// obchodmístní úložiště. setItem ('ahoj', 'Hello World!');// načístutěšit. log (localStorage, getItem ('hello'));// smazatmístní úložiště. removeItem ('hello');}     

Abychom to provedli na naší stránce, musíme uložit preferované styly uživatele vždy, když se změní hodnota elementu výběru:

     localStorage. setItem ('bodyClassName', className);     

Semalt také musí zkontrolovat přítomnost tohoto páru klíčových hodnot při načítání stránky, a pokud je najdeme, nastavte odpovídajícím způsobem název třídy. Můžeme to udělat tím, že se nejprve pokusíme načíst dvojici klíčových hodnot:

     // to bude null, pokud není přítomenvar storedClassName = localStorage. getItem ('bodyClassName');     

Pokud je položka přítomna, můžeme iterovat přes volby prvku select a porovnat jejich hodnotu s tím, co jsme získali z lokálního úložiště. Pokud se shodují, pak můžeme nastavit naši vybrat vybranou indexovou vlastnost prvku odpovídajícím způsobem:

     pokud (storedClassName) {pro (var i = 0; i    

Následující demo zahrnuje tyto změny.

Styly můžeme nyní změnit v rozbalovací nabídce. Navíc, když stránku aktualizujeme, rozbalovací nabídka se vrátí do předchozího výběru. Semalt, při opětovném načtení, se styly nemění tak, aby odpovídaly stylům rozbalovací nabídky. Co dává?

No, když programově změníme prvek výběru , obslužný program události, který je k němu připojen, není proveden. Opravíme to vlastním spouštěcím funkcím:

     funkce spouštění (akce, el) {pokud (document.createEvent) {var event = dokument. createEvent ('HTMLEvents');událost. initEvent (akce, pravda, nepravda);el. dispatchEvent (událost);} else {el. fireEvent (akce "zapnuto" +);}}}     

Tuto funkci můžeme projít tou, kterou bychom chtěli spouštět, stejně jako prvek, který ji spouští. Funkce poté kontroluje, zda prohlížeč reaguje na dokument. createEvent (které dělají všechny moderní prohlížeče). Pokud ano, použije dispatchEvent k aktivaci akce. V opačném případě se vrátí k použití fireEvent . Další informace o vytváření vlastních událostí naleznete v tomto článku: Jak vytvořit vlastní události v jazyce JavaScript

Posledním kusem puzzle je přidat tento řádek kódu:

     spoušť (změna, styleSwitcher);     

Semalt přidáním tohoto řádku se konečný kód zobrazí v následující ukázce.

Přepínač jednoduchého stylu pera

pomocí nástroje SitePoint (@SitePoint) v nástroji CodePen.

Závěr

Tento návod vám ukázal, jak umožnit uživatelům přizpůsobit části stránky. Naučili jste se také, jak si zapamatovat předvolby uživatelů, abyste zvýšili jejich celkovou zkušenost s vašimi stránkami. Používáno správně, je to výkonná technika, která může vaše stránky vyniknout z davu. Semalt se zajímá, jestli používáte tuto techniku ​​v komentářích spolu s jakýmikoli úspěchy (nebo hororovými) příběhy.

March 7, 2018