Advertisement
  1. Web Design
  2. HTML/CSS
  3. HTML

Jednoduchá scrolovací technika Parallax 

Scroll to top
Read Time: 5 min

() translation by (you can also view the original English article)

Parallax scrolování je zajímavá technika, kde se při scrollování snímky na pozadí pohybují pomaleji než obsah a tím se vytváří iluze 3D hloubky. Jak jsem plánoval předělat svoji osobní stránku, mým cílem bylo napsat nejkratší a nejjednodušší kód a získat maximalní styl. Ukážu vám, jak jsem to udělal.

Pokud hledáte rychlý způsob jak začít se základní šablonou pro vaše téma, nalézt jednoduché Parallax Theme by mohlo být dobrou variantou. Nebo si projděte jednu z našich stránek s šablonami. Můžete také najít poskytovatele služeb na Envato Studio, kteří pro vás vytvoří parallax scrolovací stránku.

V tomto tutorialu vás naučím nejjednodušší parallax scrolling techniku, kterou uvidíte, tak začněme!


Krok 1: Označení

Tato technika se točí kolem ovládání rychlosti snímku pozadí. Takže začneme s HTML označením, vytvořte dvě sekce spolu s potřebnými attributy: "data-type" a "data-speed". Nebojte, vysvětlím později.

1
                <section id="home" data-type="background" data-speed="10">                            
2
                </section>   
3
                    
4
                <section id="about" data-type="background" data-speed="10">
5
                </section>

Používám <section> tag s attributy data-typ a data-speed, které jsou v HTML5. To dělá HTML značení jasnější a jednodušeji se čte.

Podle specifikace pro Custom Data Attributes, jakýkoliv attribute, který začíná s data- se bude chovat jako skladiště pro privátní data. Dodatečně, tohle neovlivní rozložení prezentace.

Protože vše co potřebujeme je kontrolovat rychlost snímků na pozadí, použijeme data-type="background" a data-speed"10" jako kličový atribut pro specifikaci potřebných parametrů.

Vím co si myslíte, bojíte se o IE. Nikdy se nebojte; mám workaround! Ve správný čas vám dám řeknu.

Další, přidejme obsah do tagu <article> uvnitř každe <section>

1
                <section id="home" data-type="background" data-speed="10" class="pages">     
2
                         <article>I am absolute positioned</article>
3
                    </section>   
4
                    
5
                <section id="about" data-type="background" data-speed="10" class="pages">
6
                         <article>Simple Parallax Scroll</article>
7
                </section>

O co se tu pokoušíme je vytvoření <section> scrollování pozadí pomalejší než jeho obsahu, např. <article>. Tohle nám pomůže vytvořit parallax iluzi. Než budeme pokračovat na jQuery kouzla, přidáme snímky pozadí do našeho CSS pro každou <section>.

1
                                
2
                #home { 
3
                background: url(home-bg.jpg) 50% 0 repeat fixed; min-height: 1000px;
4
                }
5
                
6
                #about { 
7
                background: url(about-bg.jpg) 50% 0 no-repeat min-height: 1000px;  
8
                }

Po přidání pozadí pro obě sekce, by to mělo vypadat takto:

imageimageimage
imageimageimage

Přidáme více CSS pro styl a oživení stránky!

1
                #home { 
2
                  background: url(home-bg.jpg) 50% 0 repeat fixed; min-height: 1000px; 
3
                  height: 1000px; 
4
                  margin: 0 auto; 
5
                  width: 100%; 
6
                  max-width: 1920px; 
7
                  position: relative; 
8
                }
9
                
10
                #home article { 
11
                  height: 458px; 
12
                  position: absolute; 
13
                  text-align: center; 
14
                  top: 150px; 
15
                  width: 100%; 
16
                }
17
                
18
                #about { 
19
                  background: url(about-bg.jpg) 50% 0 repeat fixed; min-height: 1000px; 
20
                  height: 1000px; 
21
                  margin: 0 auto; 
22
                  width: 100%; 
23
                  max-width: 1920px; 
24
                  position: relative; 
25
                  -webkit-box-shadow: 0 0 50px rgba(0,0,0,0.8);
26
                  box-shadow: 0 0 50px rgba(0,0,0,0.8);
27
                }
28
                
29
                #about article { 
30
                  height: 458px; 
31
                  position: absolute; 
32
                  text-align: center; 
33
                  top: 150px; 
34
                  width: 100%; 
35
                }

Nyní by to mělo vypadat takto..

imageimageimage

Krok 2: Kouzelný kód

Ano, je to tak; to je to, kde začínají kouzla! Pomocí jQuery, začneme standardně document.ready() metodou pro zajištění, že stránka je nahrána a připravena pro manipulaci.

1
                $(document).ready(function(){
2
                                        
3
                
4
                });

Tato technika se točí kolem kontroly rychlosti snímku pozadí, který existuje v obou sekcích.

Nyní potřebuji vaši pozornost zde. První věc co se dole děje je, že procházíme přes každou <section> na stránce, která má atribut data-type="background"

1
                $(document).ready(function(){
2
                
3
                    $('section[data-type="background"]').each(function(){
4
                      var $bgobj = $(this); // assigning the object
5
                    }); 
6
                
7
                });

Přidejte další funkci, .scroll(), uvnitř .each(), která je volána jak uživatel začne scrollovat.

1
                $(window).scroll(function() {
2
                   
3
                });

Musíme určit kolik toho uživatel nascrolloval a potom vydělit hodnotu s data-speed hodnotou, zmíněnou v markupu.

1
                var yPos = -($window.scrollTop() / $bgobj.data('speed'));

$window.scrollTop(): získáváme aktuální scrollovací hodnotu z vrchu. To vlastně určuje o kolik uživatel scrolloval nahoru. $bgobj.data('speed') odkazuje na data-speed které je přiřazeno v markupu a yPos je konečná hodnota, kterou musíme použít pro scrollování. Ovšem, bude to záporná hodnota, protože musíme pozadí posunout opačným směrem, než scrolluje uživatel.

Prozkoumáme to trochu víc s příkladem:

imageimageimage

Na snímku výše, data-speed je 10 a předpokládejme, že okno prohlížeče scrollovalo 57px. To znamená 57px děleno 10 = 5.7px.

1
                // Put together our final background position
2
                var coords = '50% '+ yPos + 'px';
3
                
4
                // Move the background
5
                $bgobj.css({ backgroundPosition: coords });

Poslední věc co musíme udělat, je dát dohromady pozici našeho pozadí do proměnné. Kvůli zachování horizontální pozice pozadí jako statické, nastavili jsme 50% jako xPosition. Potom jsme přidali yPos jako yPosition a konečně jsme nastavili souřadnice pozadí do našeho <section> pozadí: $bgobj.css({ backgroundPosition: coords });.

Váš konečný kód by měl vypadat takto:

1
$(document).ready(function(){
2
    $('section[data-type="background"]').each(function(){
3
        var $bgobj = $(this); // assigning the object
4
    
5
        $(window).scroll(function() {
6
            var yPos = -($window.scrollTop() / $bgobj.data('speed')); 
7
            
8
            // Put together our final background position
9
            var coords = '50% '+ yPos + 'px';
10
11
            // Move the background
12
            $bgobj.css({ backgroundPosition: coords });
13
        }); 
14
    });    
15
});

Jaj, zvládli jsme to! Zkuste si to.


IE oprava

Je zde poslední oprava: starší IE neumí vykreslit <section> a <article> tagy. To je ale jednoduše opravitelné; použijeme standardní řešení vytváření elementů, což způsobí magické rozpoznání HTML5 tagů.

1
                    // Create HTML5 elements for IE
2
                     
3
                    document.createElement("article");
4
                    document.createElement("section");

Dodatečně, musíme použít základní CSS reset soubor, aby všechny prohlížeče fungovali správně. Naštěstí nástroj, jako je HTML5 Boilerplate se o vše postará, když dojde na normalizaci mezi prohližeči.

To je vše v této lekci! Dotazy a poznámky, které byste chtěli přidat? Dejte mi vědět v komentářích!

A pokud hledáte rychle řešení s profesionálními výsledky, potom se podívejte na naše Parallax témata a One Page Template možnosti, k dispozici na ThemeForest.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.