jQuery оптимизирован для iPad?

#jquery

#jquery

Вопрос:

Я работаю над веб-приложением для iPad, и большинство эффектов, которые я использую, взяты из jQuery. Однако не все анимации получаются плавными, поэтому мне интересно, существует ли версия jQuery, оптимизированная для более плавной работы на iPad?

Комментарии:

1. вы должны создавать анимации css3. Извините за мой неубедительный ответ. Я не спал уже почти 2 дня. (48 часов).

Ответ №1:

Есть jQuery mobile: http://jquerymobile.com /

Кроме того, анимация CSS3 в соответствии с комментарием Андреасала. Используйте их вместо JavaScript, где это возможно.

Полезная статья для анимации CSS3 с «обычными» (не мобильными) резервными вариантами jQuery; должно быть применимо к вашему сценарию: http://addyosmani.com/blog/css3transitions-jquery / Однако обратите внимание, что многие мобильные устройства имеют ограничение на размер кэша, которое превышается «обычным» jQuery. Не уверен насчет iPad.

[обновление следует]

Я наткнулся Zepto.js довольно давно, но забыл об этом, ТАК что отвечайте, пока кто-нибудь не наткнулся на него. Во многих случаях Zepto.js является заменой мобильных приложений на основе jQuery. Он совместим не только с мобильными устройствами в ограниченной степени (на самом деле он предназначен для webkit, браузеров по умолчанию для iOS и Android), но я бы не стал полагаться на него для пользователей настольных компьютеров. Вы могли бы использовать условный предварительный загрузчик (require.js ?), чтобы загрузить jQuery для настольных компьютеров и Zepto для мобильных устройств.

В худшем случае добавьте его и посмотрите, подходит ли он для ваших нужд; синтаксис совместим с jQuery, поэтому вам не нужно будет изменять свой пользовательский код, чтобы просто посмотреть, работает ли он.

[дальнейшее обновление]

Если вы выполняете обнаружение пользовательского агента или это будет ТОЛЬКО для iOS и Android, также есть это:

http://www.jqmobi.com/

Комментарии:

1. Проблема с jQ mobile в том, что мне пришлось бы переписать большую часть своего кода, чтобы работать с ним. Я мог бы попытаться переключить некоторые эффекты на CSS3, просто не уверен, есть ли откидной div (я погуглю). Что вы имеете в виду, говоря об ограничении кэша?

2. Итак, как правило, после того, как вы извлекли скрипт (или другой ресурс), браузер может кэшировать его, чтобы ему не нужно было извлекать его снова на другой странице. Для отдельных компонентов iPhone (последний раз, когда я проверял) не кэширует ничего размером более 25 КБ. Я только что заметил по крайней мере одного исследователя, который сказал, что на самом деле это 15 КБ. Я не претендую на звание эксперта, но я много раз читал, что jQuery превышает ограничения iPhone. Я обобщил, что, вероятно, у других мобильных устройств аналогичная проблема. Опять же, не уверен насчет iPad.

3. Обновил этот ответ, добавив немного о Zepto.

4. Спасибо за обновление, я обязательно загляну в Zepto и отмечу это как решение 🙂

Ответ №2:

Попробуйте этот облегчающий jquery плагины, оптимизированные для жестких анимационных эффектов и дающие вам плавный анимационный эффект

смотрите здесь

Комментарии:

1. Как бы мне это реализовать? Нужно ли мне переписывать существующий код или просто вызывать скрипт в head?

2. Похоже, его добавление не делает анимацию более плавной

3. @Charlie.. Пожалуйста, перейдите по ссылке

Ответ №3:

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

 //animate memory hog fix
jQuery.fx.prototype.custom = function(from, to, unit) {
    this.startTime = now();
    this.start = from;
    this.end = to;
    this.unit = unit || this.unit || "px";
    this.now = this.start;
    this.pos = this.state = 0;
    var self = this;
    function t(gotoEnd) {
        return self.step(gotoEnd);
    }
    t.elem = this.elem;
    if (t() amp;amp; jQuery.timers.push(t) amp;amp; !jQuery.fx.prototype.timerId) {
        jQuery.fx.prototype.timerId = setInterval(jQuery.fx.tick, 75);
    }
}
  

Измените 75 в этой последней строке на то, что вы хотите. Также будьте осторожны с тем, что вы анимируете, просто попробуйте делать что-то одно за раз. Непрозрачность всегда занимает много памяти, поэтому попробуйте заменить эффекты слайдов там, где это возможно.

Комментарии:

1. Будет ли это работать для всех анимаций jQuery? И это просто будет помещено в тег head, верно?

2. Да, он изменяет таймеры для всех анимаций jQuery, включая встроенные, такие как slide (). Просто поместите его в head после включения jquery.

3. Установка его после нарушает часть моего кода. Помещение его перед этим не выполняется, но это, вероятно, потому, что оно переопределяется…

4. Я не получаю сообщение об ошибке, но я использовал его в сочетании с Flip! Плагин jQ, который он сломал. Я попробую это с другими анимациями.

Ответ №4:

Я использую плагин jQuery Animate Enhanced от Бена Барнетта

Комментарии:

1. Мне это нравится. Это может работать для некоторых частей, но не для всех, а для тех, для которых это не работает (переверните! например, плагин) это все портит.