2015-04-14 2 views
0

У меня есть фрагмент кода, в котором используется стандартная анимация с поддержкой jQuery для плавного перехода от одной части страницы к другой (чтобы избежать дезактивации перехода страницы в привязке к странице). Вот оно:Прокрутка к пользовательскому переходу CSS3

// Scroll to 
$('.scrollto').click(function() { 
    var elementClicked = $(this).attr("href"); 
    var destination = $(elementClicked).offset().top; 
    $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 800); 
    return false; 
}); 

Вместо того, чтобы использовать анимации JQuery, я хотел бы использовать переход на заказ CSS3 следующим образом:

.scrollto { 
    -webkit-transition-timing-function: cubic-bezier(.77,0,.175,1); 
    -moz-transition-timing-function: cubic-bezier(.77,0,.175,1); 
     -ms-transition-timing-function: cubic-bezier(.77,0,.175,1); 
      transition-timing-function: cubic-bezier(.77,0,.175,1); 
} 

Как я могу объединить два вместе и убедитесь, что переходы CSS3 используются вместо jquery's?

+1

Сомневаюсь, я не уверен, как вся страница будет анимирована. Возможно, вам нужен плавный плагин типа [** JqueryUI/Easing **] (http://api.jqueryui.com/easings/) или Special Easing в анимированном свойстве [** JQuery Animate **] (http://api.jquery.com/animate/) –

+0

это https://github.com/rdallasgray/bez позволяет использовать кривые безье в jquery-анимации – Gael

ответ

0

Вы не можете использовать переходы CSS3 для управления функцией jQuery. Вы также не можете использовать CSS для анимации полосы прокрутки напрямую, потому что позиция прокрутки не является стилем.

Есть библиотеки, которые имитируют прокрутку, используя преобразования CSS3 (iScrollJS for example), но для перемещения собственной полосы прокрутки вам нужно будет использовать строго JavaScript.

Решение заключается в использовании jQuery Easing library, который позволяет выполнять пользовательские функции ослабления. Он также поставляется с репликами встроенных функций CSS3 easing.

+0

Я вижу здесь обратную логику ... jQuery (предположительно) управляет инициализацией переходы - и это облегчает функции уже довольно долго. – Shikkediel

+1

Невозможно анимировать полосу прокрутки в CSS. Существуют библиотеки, которые используют преобразования CSS3, которые дают вид прокрутки, но для того, чтобы оживить scrollTop (как запрашивается), вам нужно сделать это в JavaScript – isick

+0

С этим я должен согласиться (фактически, почему бы не поместить его в ответ). – Shikkediel

Смежные вопросы