Nano Hash - криптовалюты, майнинг, программирование

Изменения анимации CSS3 в последней версии Chrome?

Посмотрите на этот JSFiddle: http://jsfiddle.net/Grimdotdotdot/URrLW/

В Firefox он анимируется, как и ожидалось — красный круг внутри ходит по кругу, а синий снаружи вращается в другую сторону с разной скоростью и исчезает.

Раньше это нормально работало в Chrome, но после последнего обновления до 21.0.1180.75 м внешний синий круг перестал вращаться.

Вот CSS для анимации в Chrome:

@-webkit-keyframes spinPulse {
    0% { -webkit-transform:rotate(160deg); opacity:0; box-shadow:0 0 1px #2187e7; }
    40% { -webkit-transform:rotate(145deg); opacity:1;}
    80% { -webkit-transform:rotate(-320deg); opacity:0; }
    100% { -webkit-transform:rotate(-320deg); opacity:0; }
}

Проблема заключается в непрозрачности — если я уберу ее, анимация будет работать нормально (хотя в конце она прыгает, потому что вы ее видите): http://jsfiddle.net/Grimdotdotdot/BVXwR/

Это ошибка, или я неправильно пишу свой CSS?

Бонусные баллы: как добиться такой же анимации в IE9?


  • Когда я получил свой номер версии, я понял, что есть обновление Chrome до 21.0.1180.79 m, но оно тоже сломано = [ 15.08.2012
  • Используя инспектор элементов, я заметил, что инспектор думает, что это анимация, поэтому я отправил отчет об ошибке. code.google.com/p/chromium/issues/detail?id= 142859 15.08.2012

Ответы:


1

Так что у меня аналогичная ситуация. Я пытаюсь анимировать несколько div на данной странице, и хотя они отображаются в исходном коде, они (и их дочерние элементы) полностью непрозрачны в последней версии Chrome. Я считаю (в моем случае), что я решил проблему. Я использую sass и библиотеку миксинов Bourbon от ребят из thinkbot в приложении для рельсов, но ситуация аналогична. Я не уверен, что это действительно можно считать ошибкой, поскольку решение действительно изложено в некоторых местах в спецификации webkit - на самом деле, в его нынешнем виде кажется, что Chrome - единственные, кто понял это правильно, и поскольку это выглядит так они только начинают поддерживать это (хотя сафари нет?) это упоминается. Несмотря на это, это очевидно при попытке анимировать преобразование с режимом анимации-заполнения обоих. Я убедился, что это работает в более старых версиях Chromium и Safari. Это недавняя проблема, возникшая в нашем приложении после последнего обновления Chrome. Во всяком случае, мой код sass выглядит примерно так

.animation-tilefill {
  @include animation(tilefill 0.25s $ease-out-sine);
  @include animation-fill-mode(both); 
}
@mixin tilefill {
  0% {
    opacity: 0;
     // @include transform(scale(0.0)); // <= There's our issue
     // @include transform-origin(left top); 
  }
  80% {
     // @include transform(scale(1));
  }
  100% {
    opacity: 1;
  }
}
@-webkit-keyframes tilefill { @include tilefill; }
   @-moz-keyframes tilefill { @include tilefill; }
        @keyframes tilefill { @include tilefill; }

Вам нужно знать немного бурбона и дерзости, чтобы знать, что это делает, но для нужд этого ответа достаточно сказать, что он анимирует масштабное преобразование, а также непрозрачность элемента. Проблема с этим кодом на самом деле не связана с самим преобразованием, а связана 0.0 VALUE — нулевое значение является ключом. Если вы посмотрите здесь: Справочник Safari по CSS вы увидите в описании оба режима анимации-заполнения, что:

«Начальный ключевой кадр анимации применяется, как только стиль анимации применяется к элементу, а последний ключевой кадр анимации продолжает применяться после завершения последней итерации анимации. Начальный ключевой кадр влияет только на анимации, которые имеют ненулевое значение для -webkit. -анимация-задержка."

Ключевой частью является то, что Исходный ключевой кадр влияет только на анимацию, которая имеет ненулевое значение для -webkit-animation-delay. Мое исправление состояло в том, чтобы изменить значения в transform(scale()) на что-то неотрицательное, например в виде:

  0% {
    opacity: 0;
     @include transform(scale(0.01)); // <= There's our issue
     @include transform-origin(left top); 
  }

Как только это было изменено, проблема решена - надеюсь, это поможет. Я хотел бы знать, что некоторые люди думают о поддержке этого, хотя :)

20.08.2012
  • Я возился со скрипкой (как бы), и изменение всех значений на положительные значения, похоже, не имеет значения - он начинает вращаться только в том случае, если я удаляю все изменения непрозрачности в анимации (не только в начальном ключевой кадр). Рад, что у вас все заработало, и спасибо за подробный ответ. 21.08.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..