IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zaražení scrollování v určitém bodě stránky

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jan Troják
Brigádník
Avatar
Jan Troják:3.3.2018 16:27

Ahoj,
vytvářím stránku a potřebuju vytvořit funkci, která by při scrolování zajistila, aby se stránka zasekla v bodě který potřebuji (začátek nového section). Nenapadá někoho jak to udělat?

stránka: http://web.topenitrojak.cz/

Předem děkuji za reakce

 
Odpovědět
3.3.2018 16:27
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:3.3.2018 17:15
var keys = {37: 1, 38: 1, 39: 1, 40: 1};

function preventDefault(e) {
  e = e || window.event;
  if (e.preventDefault)
      e.preventDefault();
  e.returnValue = false;
}

function preventDefaultForScrollKeys(e) {
    if (keys[e.keyCode] && window.pageYoffset>=/*Sem zadej souřadnice začátku nového section*/) {
        preventDefault(e);
        return false;
    }
}

  if (window.addEventListener) // older FF
      window.addEventListener('DOMMouseScroll', preventDefault, false);
  window.onwheel = preventDefault; // modern standard
  window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE
  window.ontouchmove  = preventDefault; // mobile
  document.onkeydown  = preventDefaultForScrollKeys;

Částečně převzato ze stránky https://stackoverflow.com/…-temporarily

Editováno 3.3.2018 17:16
 
Nahoru Odpovědět
3.3.2018 17:15
Avatar
Jan Troják
Brigádník
Avatar
Odpovídá na Šimon Rataj
Jan Troják:3.3.2018 19:03

Pouze to zablokuje veškeré scrollování na stránce

 
Nahoru Odpovědět
3.3.2018 19:03
Avatar
Šimon Rataj
Člen
Avatar
Odpovídá na Šimon Rataj
Šimon Rataj:3.3.2018 19:09

Zkus to takhle:

var keys = {37: 1, 38: 1, 39: 1, 40: 1};

function preventDefaultScrolling(e) {
  e = e || window.event;
  if(window.pageYoffset>=/*Sem zadej souřadnice začátku nového section*/) {
    if (e.preventDefault)
        e.preventDefault();
    e.returnValue = false;
  };
}

function preventDefaultForScrollKeys(e) {
    if (keys[e.keyCode]) {
        preventDefaultScrolling(e);
        return false;
    }
}

  if (window.addEventListener) // older FF
      window.addEventListener('DOMMouseScroll', preventDefaultScrolling, false);
  window.onwheel = preventDefaultScrolling; // modern standard
  window.onmousewheel = document.onmousewheel = preventDefaultScrolling; // older browsers, IE
  window.ontouchmove  = preventDefaultScrolling; // mobile
  document.onkeydown  = preventDefaultForScrollKeys;
Editováno 3.3.2018 19:10
Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět
3.3.2018 19:09
Avatar
Jan Troják
Brigádník
Avatar
Jan Troják:3.3.2018 19:21

Díky :)

 
Nahoru Odpovědět
3.3.2018 19:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.