• Как сделать плавный скролл (смягчение скролла) на сайте?

    @alexandrpopovweb
    Искал то же плавный скролл для AngularJS не нашел, в общем вот кому надо :)
    app.factory('goTo', ['$window', '$interval', '$location', '$anchorScroll', function($window: any, $interval: any, $location: any, $anchorScroll: any) {
        return function(id: string, marginTop?: number, step?: number, seconds?: number): void {
            marginTop = marginTop || 100;
            step = step || 300;
            seconds = seconds || 50;
            var element: any = $window.document.getElementById(id);
            if (null === element) {
                return;
            }
            $location.hash(id);
            var position: number = element.getBoundingClientRect().top,
                before: number = 0,
                current: number = $window.scrollY;
            if (current > position) {
                position += current;
                var go = $interval(function(): void {
                    $window.scrollTo(0, current);
                    before = current;
                    current -= step;
                    if (position >= current || before === current) {
                        $anchorScroll();
                        $window.scrollTo(0, $window.scrollY - marginTop);
                        $interval.cancel(go);
                    }
                }, seconds);
            } else {
                var go = $interval(function(): void {
                    $window.scrollTo(0, current);
                    before = current;
                    current += step;
                    if (position <= current || before === current) {
                        $anchorScroll();
                        $window.scrollTo(0, $window.scrollY - marginTop);
                        $interval.cancel(go);
                    }
                }, seconds);
            }
        };
    }]);


    Удалите только все ":string :any: number : void" - Это для TypeScript у кого чистый JS + Angular должно работать :)

    И да, два слова о var seconds: number = 50, step: number = 300, marginTop: number = 100;

    seconds - по времени "шагать" (в миллисекундах)
    step - щаг (в px)
    marginTop - как только цель достигнута отступ сверху, полезная штука если есть (например) топ бар fixed. :)

    Штака самописная, уже обкатал :)
    Ответ написан
    Комментировать
  • Как реализовать удаление элементов массива JS?

    @alexandrpopovweb
    var arr = ["a", "b", "c", "d"];
    // удаляем "с"
    delete arr[arr.indexOf("c")];

    // так тоже будет работать :)
    var arr = ["с", "b", "g", "d"];
    delete arr[arr.indexOf("c")];
    Ответ написан
    Комментировать