Ответы пользователя по тегу JavaScript
  • Как делаются такие плавные переходы между страницами как на сайте http://ru.silasveta.com/?

    При клике по ссылке делается не переход на нужную страницу, а происходит подгрузка контента с помощью ajax запроса. При успешном получении контента (это может быть просто html верстка или json с контентом). В случае если контент подгружается с помощью json, то делается еще один запрос для подгрузки шаблона, в который контент будет выведен.
    После вывода контента происходит смена фона с css3 анимацией и добавляется в историю браузера с помощью html5 history api новая страница. Таким образом перезагрузки страницы не было, но в истории и адресной строке уже новый url.
    Ответ написан
    3 комментария
  • Как отследить scroll событие на ios устройствах?

    Обычно событие скролла можно отследить например таким образом:
    window.onscroll = function() {
      var scrolled = window.pageYOffset || document.documentElement.scrollTop;
      console.log(scrolled);
    }


    но iOS устройствах при скролле присутствует еще дополнительное движение страницы по инерции. И событие скролла отработает лишь после завершения движения страницы.
    По-этому если нужно отследить именно само событие, немедленно в момент движения пальца по экрану, то необходимо использовать ивент touchmove. Вот пример для директивы ангулара. (был под рукой)

    $element.bind('touchmove', function (e) {
           console.log(e.touches[0].pageY,e.touches[0].clientY);
    }):


    А если необходимо именно количество пикселей от верха документа, то нужно использовать событие scroll, которое отработает после анимации.

    Подробнее о событии скролла на iOS можно ознакомиться в оф. документации
    Ответ написан
    Комментировать
  • Почему значения не попадают из jquery селекта в input?

    Раз уж используешь jquery и angular, то в jquery callback'е slide:
    Убери from.trigger('input'); и to.trigger('input');

    и пропиши в этом же колбэке:
    $scope.$apply(function () {
        $scope.filterPriceFrom = ui.values[0];
        $scope.filterPriceTo = ui.values[1];
        $scope.byPrice($scope.filterPriceFrom,$scope.filterPriceTo);
    });


    Только $scope.byPrice объяви перед рейндж слайдером.

    То есть выйдет:
    slide: function (event, ui) {
          var from = $("#price-from");
          from.val(ui.values[0]);
          var to = $("#price-to");
          to.val(ui.values[1]);
          $scope.$apply(function () {
                $scope.filterPriceFrom = ui.values[0];
                $scope.filterPriceTo = ui.values[1];
                $scope.byPrice($scope.filterPriceFrom,$scope.filterPriceTo);
          });
    }
    Ответ написан