Анимированный текст исчезает в Safari. Перекрасить / Перерисовать ошибку?

Я работаю над этим сайтом, где текст анимируется так же, как новостная лента. Анимация выполняется с помощью CSS и активируется переключением класса через Javascript.

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

Я пробовал много вещей, таких как замена текста на SVG, относительное позиционирование элементов вместо абсолютного, перемещение "левой" позиции вместо использования трансляционного преобразования и многое другое. Ничто не решает проблему.

Я читал, что это может быть проблема перерисовки webkit, но проблема сохраняется даже после использования трюка для перерисовки.

Вот скриншот, который показывает проблему.

Вот ссылка на сайт: http://staging-cb-minisite.matthiasdeckx.be/

Включен большая часть кода, относящегося к анимированным баннерам.

Заранее спасибо.

$('.c-ticker--header').addClass('js-banner-header-animation');
$('.c-ticker--banner--1').addClass('js-banner-1-animation');
$('.c-ticker--banner--2').addClass('js-banner-2-animation');
$('.c-ticker--banner--3').addClass('js-banner-3-animation');

setTimeout(function() {

  if (ww >= brMedium) {
    $('.c-ticker--banner--1').css({
      '-webkit-animation-play-state': 'paused'
    });
    $('.c-ticker--banner--1').css({
      'animation-play-state': 'paused'
    });
    $('.c-ticker--banner--2').css({
      '-webkit-animation-play-state': 'paused'
    });
    $('.c-ticker--banner--2').css({
      'animation-play-state': 'paused'
    });
    $('.c-ticker--banner--3').css({
      '-webkit-animation-play-state': 'paused'
    });
    $('.c-ticker--banner--3').css({
      'animation-play-state': 'paused'
    });

    $('.js-banner-1-animation').hover(
      function() {
        $(this).css({
          '-webkit-animation-play-state': 'running'
        });
        $(this).css({
          'animation-play-state': 'running'
        });
        main.initRepaint();
      },
      function() {
        $(this).css({
          '-webkit-animation-play-state': 'paused'
        });
        $(this).css({
          'animation-play-state': 'paused'
        });
        main.initRepaint();
      }
    );

    $('.js-banner-2-animation').hover(
      function() {
        $(this).css({
          '-webkit-animation-play-state': 'running'
        });
        $(this).css({
          'animation-play-state': 'running'
        });
        main.initRepaint();
      },
      function() {
        $(this).css({
          '-webkit-animation-play-state': 'paused'
        });
        $(this).css({
          'animation-play-state': 'paused'
        });
        main.initRepaint();
      }
    );

    $('.js-banner-3-animation').hover(
      function() {
        $(this).css({
          '-webkit-animation-play-state': 'running'
        });
        $(this).css({
          'animation-play-state': 'running'
        });
        main.initRepaint();
      },
      function() {
        $(this).css({
          '-webkit-animation-play-state': 'paused'
        });
        $(this).css({
          'animation-play-state': 'paused'
        });
        main.initRepaint();
      }
    );
  }

}, 100);
.c-ticker {
  display: block;
  box-sizing: border-box;
  @include clear();
  white-space: nowrap;
  z-index: 4;
}

.c-ticker--header {
  .c-ticker__item {
    height: $large_items-size;
    line-height: $large_items-size;
    -webkit-backface-visibility: visible;
    backface-visibility: visible;
    position: relative;
    display: inline-block;
    box-sizing: border-box;
    @include mq($br-medium) {
      height: $small_items-size !important;
      line-height: $small_items-size !important;
    }
  }
}

.c-ticker--banner {
  .c-ticker__item {
    height: $large_banners-size !important;
    line-height: 26.5vh !important;
    -webkit-backface-visibility: visible;
    backface-visibility: visible;
    display: inline-block;
    box-sizing: border-box;
    @include mq($br-medium) {
      height: $small_banners-size !important;
      line-height: 14.55vh !important;
    }
  }
}

.o-banner {
  position: relative;
  overflow: visible;
  width: 100%;
  height: $large_banners-size;
  padding-left: 0 !important;
  padding-right: 0 !important;
  white-space: nowrap;
  @include sans--xlarge();
  @include mq($br-medium) {
    height: $small_banners-size;
  }
}

.o-banner--borders {
  border-bottom: 1px solid $white;
}

.o-banner--borders:first-of-type {
  border-top: 1px solid $white;
}

.o-banner__title {
  display: block;
  position: absolute;
  width: auto;
  height: 100%;
  white-space: nowrap;
  -webkit-backface-visibility: visible;
  backface-visibility: visible;
}

.o-banner__title--text-border {
  -webkit-text-fill-color: $black;
  /* Will override color (regardless of order) */
  -webkit-text-stroke-width: 1px;
  -webkit-text-stroke-color: $white;
}

#banner-ticker-1,
#banner-ticker-3 {
  right: -20%;
  cursor: e-resize;
}

#banner-ticker-2 {
  left: -20%;
  cursor: w-resize;
}

.js-banner-1-animation {
  -webkit-animation-name: tickerBannerOne;
  animation-name: tickerBannerOne;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-duration: 120s;
  animation-duration: 120s;
}

.js-banner-header-animation {
  -webkit-animation-name: tickerHeader;
  animation-name: tickerHeader;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-duration: 120s;
  animation-duration: 120s;
  -webkit-animation-play-state: running;
  animation-play-state: running;
  &:hover {
    -webkit-animation-play-state: paused;
    animation-play-state: paused;
  }
}

.js-banner-2-animation {
  -webkit-animation-name: tickerBannerTwo;
  animation-name: tickerBannerTwo;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-duration: 90s;
  animation-duration: 90s;
}

.js-banner-3-animation {
  -webkit-animation-name: tickerBannerThree;
  animation-name: tickerBannerThree;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-duration: 90s;
  animation-duration: 90s;
}
<div class="o-banner o-banner--borders o-banner--ticker ">
  <div id="banner-ticker-1" class="c-ticker c-ticker--banner c-ticker--banner--1 o-banner__title o-banner__title--text-border">
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
    <span class="c-ticker__item">35 years of creative clubbing</span>
  </div>
</div>

<div class="o-banner o-banner--borders o-banner--ticker ">
  <div id="banner-ticker-2" class="c-ticker c-ticker--banner c-ticker--banner--2 o-banner__title">
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
    <span class="c-ticker__item">Creative Belgium Awards</span>
  </div>
</div>

<div class="o-banner o-banner--borders o-banner--ticker ">
  <div id="banner-ticker-3" class="c-ticker c-ticker--banner c-ticker--banner--3 o-banner__title  o-banner__title--text-border">
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
    <span class="c-ticker__item">01.06.18 Casino Knokke</span>
  </div>
</div>

0 ответов

Другие вопросы по тегам