Анимация CSS очень плохо влияет на прорисовку всей страницы

#html #css

#HTML #css — файл #css

Вопрос:

История

Я пытаюсь добиться непрерывной анимации прокрутки в <ul> теге, который содержит список изображений, выровненных по горизонтали, с помощью простой анимации ключевых кадров CSS, что-то вроде старого тега HTML <marquee> . Меня устраивает непрерывная бесконечная повторяющаяся прокрутка или стиль «туда-сюда», подобный animation-direction: alternate (это то, что я сделал).

HTML

 <div>
  <ul>
    <li>
      <img src="img1.jpg" alt="">
    </li>
    <li>
      <img src="img2.jpg" alt="">
    </li>
    <li>
      <img src="img3.jpg" alt="">
    </li>
  </ul>
</div>
  

CSS

 ul {
    position: absolute;
    left: 0;
    list-style: none;
    padding: 0;
    padding-left: 2rem;
    margin: 0;
    display: inline-flex;
    transform: translateX(0);
    animation: animation1 20s linear infinite;
    animation-direction: alternate;
}

li {
    height: 6rem;
    margin: 1rem;
    box-shadow: 0px 0px .5rem rgba(0, 0, 0, .2);
    width: 15rem;
    border-radius: .5rem;
    padding: .5rem;
    box-sizing: border-box;
    line-height: 7rem;
}

img {
    max-height: 100%;
    max-width: 100%;
}

@keyframes animation1 {
    from {
        left: 0;
        transform: translateX(0);
    }
    to {
        left: 100%;
        transform: translateX(-100%);
    }
}
  

Проблема

Приведенная выше анимация ключевых кадров делает всю страницу дерьмовой. Каждый раз, когда я прокручиваю вверх и вниз какую-то часть страницы, выполняю перерисовку. Это также делает мой ноутбук горячее. Пожалуйста, предложите лучший способ добиться анимации или помогите мне разобраться, что происходит не так.

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

1. Используйте transform: translate3d(0, 0, 0); , чтобы заставить ваш браузер использовать рендеринг на графическом процессоре, что приводит к более плавной анимации и снижению загрузки процессора. Замените нули на нужные вам значения.

2. @Sirence Как я могу использовать это в данной ситуации! Можете ли вы дать немного больше информации, основанной на моей реализации?

3. @Sirence Попробовал это, я думаю, нагрев сведен к минимуму. Но рендеринг пока не проходит гладко. Связано ли это с использованием left свойства в анимации?

4. Для вас это более плавно? jsfiddle.net/2mj98zwn

5. да, использование left происходит медленнее, чем просто использование transform: translate . Вы можете попробовать добавить translateZ(0) в свой аниматон