Анимированные GIF: Как это остановить!

Когда люди публикуют анимированные GIF-файлы, они воспроизводятся снова и снова, и снова, и снова, и снова…

Twitter предоставляет возможность остановить анимацию. Slack позволяет свернуть изображение, чтобы я больше его не видел. Пожалуйста, пожалуйста, Discourse, дайте мне что-то похожее. :pray:

19 лайков

Вы можете использовать Stylus, чтобы изменить стиль (display: none или visibility: hidden) всех анимированных GIF:

div.topic-body div.lightbox-wrapper > a.lightbox > img[src$='.gif']

6 лайков

Конечно, я полностью согласен! Браузеры ранее поддерживали это как встроенную функцию… прочитайте всё об этом здесь:

9 лайков

Если вы используете Chrome, я рекомендую это расширение:

4 лайка

Просто небольшое обновление.

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

@pmusaraj работает над этой функцией и сообщит нам, когда она будет готова.

12 лайков

Жаль, что браузеры отказались от поддержки esc для остановки всех анимаций на страницах с GIF-изображениями. Люди забывают, но это действительно было.

5 лайков

Отличная идея по улучшению, @ganncamp, спасибо. Это уже реализовано (коммит) и развернуто здесь, на meta. При клике на изображение анимация ставится на паузу, а затем возобновляется. Из-за ограничений безопасности браузера при паузе отображается только первый кадр изображения; показать кадр в момент клика невозможно.

Вот обязательный GIF для проверки:

giphy-4

17 лайков

Выглядит отлично, есть пара небольших рекомендаций:

  1. Возможно, стоит добавить небольшое оверлейное уведомление «на паузе», чтобы пользователи понимали, что произошло (полупрозрачные II в правом нижнем углу?).

  2. Я думаю (хотя не уверен), что это работает только после полной загрузки GIF-анимации. Некоторые анимированные GIF-файлы могут загружаться довольно долго. Можешь ли ты проверить это локально, используя ограничение скорости сети, чтобы убедиться, что пауза срабатывает даже если GIF ещё не полностью загружен?

7 лайков

Я заметил здесь, на Meta, странное поведение.
Я опубликовал гифку здесь https://meta.discourse.org/t/badges-and-general-chattiness-of-discourse/187971/19?u=geoff777

Она не останавливалась. Я пробовал в двух браузерах.
Я зашёл в эту тему, так как читал её на днях.
Нажал на гифку STOP IT, и она остановилась.
Вернулся к своему посту, и теперь она тоже останавливается.

так что …
тест, тест, тест …

Thats So Raven Hello GIF by Cameo

3 лайка

Возможно, мы могли бы добавить настройку, которая отображалась бы при наведении на GIF-анимацию рядом с кнопкой «Остановить текущую GIF-анимацию»:

  • автовоспроизведение GIF-анимаций: включено/выключено (сохраняется в сессии)
4 лайка

Спасибо, Джефф. Техническая причина, по которой ваша загрузка не работает, заключается в том, что это сейчас работает только для загрузок, которые есть в базе данных. Ваша загрузка выше — это ссылка на Giphy, у неё нет локальной записи о загрузке. Мы не можем легко расширить это на анимированные изображения с других URL, потому что не можем точно определить, является ли ресурс по конкретному URL анимированным изображением или обычным статичным.

Мы можем сделать предположение, например, для ссылок на Giphy, но если загрузка не локальная и не обработана, мы не будем знать наверняка.

Обновление: ах, и теперь загрузка Giphy в вашем сообщении выше была загружена локально, и пауза работает.

4 лайка

Гифка, которую я опубликовал выше, сейчас не ставится на паузу.

Затем я обновил страницу, и теперь работает.

Думаю, проблема с отсутствием паузы касается только автора гифки и решается обновлением страницы.

Редактирование — извините, только что прочитал ваш пост выше, @pmusaraj.

Да, это имеет смысл. Пауза работает, когда файл доступен локально.
Так что на короткое время функция паузы не будет работать. Хорошо, что я это знаю. Спасибо.

2 лайка

Действие паузы работает, но холст не может прочитать/отрисовать первый кадр, пока GIF полностью не загрузится. Я не думаю, что мы можем это правильно исправить, поэтому добавил ненавязчивый цвет фона к элементу canvas, который будет отображаться следующим образом:

Также я добавил иконки воспроизведения/паузы и несколько других улучшений.

10 лайков

Эта тема была автоматически закрыта через 6 дней. Новые ответы больше не принимаются.

Лайтбокс мешает, как вы можете видеть здесь. Сравните поведение, нажав или коснувшись анимированных GIF-изображений ниже:

ed1bdf66998acb6fa9d93c4d8b318dbb07c15203

igor-bastidas-2

На втором изображении это работает кое-как, с оговоркой, что расширение и сжатие лайтбокса поглощает одно из нажатий для паузы/возобновления.

3 лайка

Да, @pmusaraj, мы собираемся снова открыть эту тему. Нам, вероятно, нужно улучшить обработку случаев, когда анимированный GIF открывается в лайтбоксе — сейчас это очень неудобно.

Не уверен, что в такой ситуации делать правильно? Не открывать анимированные GIF в лайтбоксе? Сделать разные области клика для «паузы» и «полного размера» в таких случаях?

2 лайка

Может быть, это? Не уверен, что есть смысл использовать лайтбокс для анимированных GIF…

7 лайков

Думаю, технически можно было бы сделать гигантскую анимацию, чтобы похвастаться.

Может, пока просто отключим лайтбокс и посмотрим, кто-нибудь пожалуется? Полностью согласен, что обычно это плохая идея и бесполезно для анимированных GIF.

6 лайков

Конечно, если отключение лайтбокса для анимированных GIF-файлов несложно, давайте сделаем это. Наверное, стоит также портировать это изменение в старые версии!

3 лайка