Когда люди публикуют анимированные GIF-файлы, они воспроизводятся снова и снова, и снова, и снова, и снова…
Twitter предоставляет возможность остановить анимацию. Slack позволяет свернуть изображение, чтобы я больше его не видел. Пожалуйста, пожалуйста, Discourse, дайте мне что-то похожее.
Отличная идея по улучшению, @ganncamp, спасибо. Это уже реализовано (коммит) и развернуто здесь, на meta. При клике на изображение анимация ставится на паузу, а затем возобновляется. Из-за ограничений безопасности браузера при паузе отображается только первый кадр изображения; показать кадр в момент клика невозможно.
Выглядит отлично, есть пара небольших рекомендаций:
Возможно, стоит добавить небольшое оверлейное уведомление «на паузе», чтобы пользователи понимали, что произошло (полупрозрачные II в правом нижнем углу?).
Я думаю (хотя не уверен), что это работает только после полной загрузки GIF-анимации. Некоторые анимированные GIF-файлы могут загружаться довольно долго. Можешь ли ты проверить это локально, используя ограничение скорости сети, чтобы убедиться, что пауза срабатывает даже если GIF ещё не полностью загружен?
Она не останавливалась. Я пробовал в двух браузерах.
Я зашёл в эту тему, так как читал её на днях.
Нажал на гифку STOP IT, и она остановилась.
Вернулся к своему посту, и теперь она тоже останавливается.
Спасибо, Джефф. Техническая причина, по которой ваша загрузка не работает, заключается в том, что это сейчас работает только для загрузок, которые есть в базе данных. Ваша загрузка выше — это ссылка на Giphy, у неё нет локальной записи о загрузке. Мы не можем легко расширить это на анимированные изображения с других URL, потому что не можем точно определить, является ли ресурс по конкретному URL анимированным изображением или обычным статичным.
Мы можем сделать предположение, например, для ссылок на Giphy, но если загрузка не локальная и не обработана, мы не будем знать наверняка.
Обновление: ах, и теперь загрузка Giphy в вашем сообщении выше была загружена локально, и пауза работает.
Гифка, которую я опубликовал выше, сейчас не ставится на паузу.
Затем я обновил страницу, и теперь работает.
Думаю, проблема с отсутствием паузы касается только автора гифки и решается обновлением страницы.
Редактирование — извините, только что прочитал ваш пост выше, @pmusaraj.
Да, это имеет смысл. Пауза работает, когда файл доступен локально.
Так что на короткое время функция паузы не будет работать. Хорошо, что я это знаю. Спасибо.
Действие паузы работает, но холст не может прочитать/отрисовать первый кадр, пока GIF полностью не загрузится. Я не думаю, что мы можем это правильно исправить, поэтому добавил ненавязчивый цвет фона к элементу canvas, который будет отображаться следующим образом:
Да, @pmusaraj, мы собираемся снова открыть эту тему. Нам, вероятно, нужно улучшить обработку случаев, когда анимированный GIF открывается в лайтбоксе — сейчас это очень неудобно.
Не уверен, что в такой ситуации делать правильно? Не открывать анимированные GIF в лайтбоксе? Сделать разные области клика для «паузы» и «полного размера» в таких случаях?
Думаю, технически можно было бы сделать гигантскую анимацию, чтобы похвастаться.
Может, пока просто отключим лайтбокс и посмотрим, кто-нибудь пожалуется? Полностью согласен, что обычно это плохая идея и бесполезно для анимированных GIF.
Конечно, если отключение лайтбокса для анимированных GIF-файлов несложно, давайте сделаем это. Наверное, стоит также портировать это изменение в старые версии!