ТЛ, д-р? Получить механизм, показанный в приведенной ниже ссылке, вести себя с ускорением GPU в Android Chrome и браузере по умолчанию.
ОБНОВЛЕНИЕ 2 (2014-01-13 13: 25: 30Z): Согласно bref.it комментарий ниже, сообщаемое поведение фиксируется как Android 4.4 KitKat, но исправление, описанное ниже, теперь прерывает его! Закон о дерне.
ОБНОВЛЕНИЕ 1 (2012-11-01 17: 54: 09Z): поведение багги неочевидно из матрицы преобразования, как сообщается вычисленным стилем преобразованного элемента, который возвращает значение пикселя, Я попытаюсь написать тест Modernizr для этого, чтобы проложить путь для любых возможных решений.
Я разработал механизм для перемещения контейнера, чтобы показать полные, горизонтально расположенные подсекции. Скользящие вкладки, в основном. Поскольку у нас много производительности и сложного Javascript, я хочу, чтобы JS был минимальным и выполнял большую часть стилистики в CSS. Я думаю, что я сделал очень хорошо, учитывая, что JS просто меняет атрибут на обертке:
(с левой стороны)http://jsfiddle.net/barney/VPJuq/ (мобильные устройства могут добавлять/показывать/к этим URL-адресам для просмотра самих результатов)
Слово о том, как это работает: обработка вкладок как inline-block
позволяет мне указать white-space: nowrap
(остальная часть кода в последних парах правил существенно разрушает пробелы между вкладками) и позволяет им стекать по горизонтали без очистки/возврата, причем все они сохраняют всю ширину своего родителя. Оттуда установка отрицательного левого смещения в обертку делает магию. Круто, да?
Теперь немного контекста: интерфейс, который я разрабатываю, должен запускаться в собственных мобильных приложениях - функциональность ядра приложения зависит от передовой технологии для мобильных устройств (не спрашивайте - NDA) - через UIWebView, и единственной платформой, которая в настоящее время поддерживает эту технологию, является Android.
Здесь моя проблема двоякая: transform: translate
работает a/lot/smoother (translate3d
даже больше), чем переходы left
или margin-left
, до такой степени, которая действительно очень нужна, пограничная критическая - особенно на Android, рассматривая как непереведенные переходы, по-прежнему заикается на ледниках на последних телефонах с новейшей ОС. Имея это в виду, суть проблемы заключается в том, что Android, по-видимому, выводит полевую модель по-разному в отношении translate
. Чтобы продемонстрировать, здесь версия на основе transform
того же самого, что делает то же самое, что и предыдущая скрипка, и работает во всех браузерах, которые поддерживают translate3d...
http://jsfiddle.net/barney/EJ7ve
Если вы изучите это на iPhone (опять же, добавив /show
), вы заметите улучшенную частоту кадров на iPhone. То же самое относится к Firefox, работающему на Android, и, возможно, к Chrome и браузеру по умолчанию на Android, за исключением того, что здесь смещение translateX
-100% как-то относится к пространству, занятому всеми тремя вкладками, поэтому обертка слайд просто достаточно, чтобы ни одна из вкладок не была видна. Это нечетно, так как проценты преобразования указаны как относящиеся к полной коробке модели преобразуемого элемента, а вычисляемый стиль однозначно описывает ширину обертки как ту же, что и ее родительская (а не, как следует из результата), растягивается в 3 раза разместить вкладки).
Можем ли мы описать это как ошибку?
Насколько я могу судить, нет чистых CSS (я не прочь обнаружить функцию запросов к медиа-материалам, разметку поставщика услуг или хакерство свойств) метод вывода и решения этой проблемы. На самом деле единственный способ сделать эту же работу с CSS-машиной, о которой я могу сейчас думать, - это обнюхать строку UA для Android и условно применять разные правила. Юк! Если я сделаю решение только для Android-WebKit и сломаю функциональность во всем мире, я могу принять де-факто поведение в аккаунте и сделать проценты ссылкой на фракции:
(w/translate - для Android update: не нужно и перерывы на Android 4.4 KitKat)http://jsfiddle.net/barney/nFt5t/
Не идеально, так как это делает пользовательский интерфейс браузером конкретным и требует, чтобы мы знали перед собой количество вкладок в группе перед написанием нашего CSS. Но это даже не полностью решает проблему там, так как при изменении ориентации (и это действительно странно) смещение переключается на правильное поведение спецификации, отображаемое другими браузерами!
Я также попытался применить перевод к фактическим вкладкам, который снова работает повсюду, но, несмотря на правильное принятие и применение правил, браузер Android не будет оказывать эффекта. Незнакомка и незнакомец:
(w/translate, работая над теорией Android, вообще не работая с Android)
http://jsfiddle.net/barney/EJ7ve/9
Любые идеи или идеи для кроссбраузерного решения очень ценятся.