Widzę że zaszalałeś w JS :)
Stronka spoko. Skoro Comandeer chwali, to będę się "wzorował" w razie czego :)
Mam natomiast kilka pytań:
1)
W jakim celu do IIFE ładujesz jako parametr funkcję?
W JS od 80 linijki (pod odminifikowaniu w konsoli Chrome):
!function(e, t) {
"use strict";
"function" == typeof define && define.amd ? define(t) : "object" == typeof exports && "object" == typeof module ? module.exports = t() : e.smoothScroll = t()
}(this, function() {
"use strict";
if ("object" == typeof window && void 0 !== document.querySelectorAll && void 0 !== window.pageYOffset && void 0 !== history.pushState) {
Dlaczego, obok this przekazujesz funkcję?
2)
W 124 linijce:
for (var e, t = document.querySelectorAll('a[href^="#"]:not([href="#"])'), n = t.length; e = t[--n]; )
, a konkretnie ten fragment:
('a[href^="#"]:not([href="#"])')
szukasz <a>, których atrybut href zaczyna się od #, ale nie jest #? Czyli href="#hash" przejdzie a href="#" nie przejdzie? Tak przynajmniej rozumiem z opisu:
https://www.w3.org/TR/css3-selectors/
3)
I, jak dla mnie, ciekawa/dziwna rzecz (linijka 48):
var f = c.getElementById("lb-img")
Pobierasz sobie jakiś element po ID - ok. Ale (linijka 59):
f.addEventListener("load", function() {
, jeśli ten element f nie jest wcześniej załadowany, to czy pobranie go poprzez ID nie powinno rzucić null? Właściwie, jesli dany element zostanie pobrany dynamicznie, to przy próbie podpięcia .addEventListener() konsola powinna rzucić błąd w stylu "Cannot read property 'addEventListener' of null(…)". Mogę się mylić - dlatego pytam :)