当人们发布动图时,它们会一遍又一遍、没完没了地循环播放……
Twitter 让我能停止动画播放,Slack 允许我折叠图片以便不再看到它。求求了,Discourse 也请给我提供类似的功能吧。![]()
当人们发布动图时,它们会一遍又一遍、没完没了地循环播放……
Twitter 让我能停止动画播放,Slack 允许我折叠图片以便不再看到它。求求了,Discourse 也请给我提供类似的功能吧。![]()
您可以使用 Stylus 来隐藏所有动态 GIF 的样式(display: none 或 visibility: hidden):
div.topic-body div.lightbox-wrapper > a.lightbox > img[src$='.gif']
确实,我完全同意!浏览器曾经原生支持这一功能……请在此处了解详情:
如果您使用的是 Chrome,我推荐这个扩展:
很遗憾,浏览器已经取消了对 <kbd>esc</kbd> 的支持,无法再通过它来停止所有 GIF 页面的动画。人们可能已经忘记了……但这确实曾经是一个真实存在的功能。
很好的功能建议 @ganncamp,谢谢。这已完成(提交)并已在此 meta 站点部署。点击图像将暂停动画,随后再恢复播放。由于浏览器安全限制,暂停时仅显示图像的第一帧,无法显示点击瞬间的帧。
以下是用于测试的必备 GIF:

看起来很棒,有两点小建议:
或许可以加一个小型的“已暂停”覆盖层,让用户了解发生了什么。(比如在右下角显示一个半透明的 II?)
我认为(虽然我不太确定)这个功能仅在 GIF 完全加载后才有效。有些动态 GIF 可能需要较长时间才能加载。你能否在本地通过限制网速进行测试,验证即使 GIF 尚未完全加载,暂停功能也能正常工作?
我在 Meta 上注意到一些奇怪的行为。
我在此发布了一个动图 https://meta.discourse.org/t/badges-and-general-chattiness-of-discourse/187971/19?u=geoff777
它无法暂停。我试了两个浏览器。
我来到这个帖子,因为前几天读过它。
点击了“停止”动图,它就暂停了。
回到我的帖子,现在它也能暂停了。
所以……
测试 测试 测试 …

或许我们可以添加一个设置,在将鼠标悬停在 GIF 上时,沿“停止当前 GIF”按钮显示:
谢谢 Geoff,您的上传无法工作的技术原因是:目前该功能仅适用于数据库中已存在的上传。您上面的上传是一个 Giphy URL,没有本地上传记录。我们很难将这一功能扩展到其他 URL 的动图,因为我们无法确定特定 URL 上的资源是动图还是普通静态图片。
我们可以进行合理推测,例如针对 Giphy URL,但除非上传是本地文件并经过处理,否则我们无法完全确定。
更新:啊,现在您上面帖子中的 Giphy 上传已被下载到本地,暂停功能可以正常工作了。
我上面发布的 GIF 目前无法暂停。
然后刷新了一下,它就可以暂停了。
我猜这个无法暂停的问题只是针对 GIF 发布者本人,刷新后就会修复。
编辑——抱歉,刚才才看到你上面的帖子 @pmusaraj
是的,这说得通。当 GIF 在本地可用时,暂停功能就会生效。
所以在短时间内暂停功能可能无法使用。了解这一点很好,谢谢。
暂停功能可以正常工作,但在 GIF 完全加载之前,画布无法读取/绘制第一帧。我认为我们无法彻底修复这个问题,因此我为 canvas 元素添加了一种微妙的背景色,显示效果如下:
我还添加了播放/暂停图标以及一些其他改进。
此主题已在 6 天后自动关闭,不再允许新回复。
正如您所见,灯箱模式会造成干扰。请点击/点击下方的动态 GIF 以对比其行为差异:


在第二个示例中,该功能勉强可用,但需注意:灯箱的展开和收起会“吞噬”一次点击,导致无法正确暂停或继续播放。
是的 @pmusaraj,我打算重新开启这个议题。目前对于被灯箱显示的动画 GIF 的处理方式非常 awkward,我们需要更好的处理方案。
不确定正确的做法是什么?是不对动画 GIF 使用灯箱显示?还是针对这种情况为“暂停”和“全屏查看”设置不同的点击区域?
也许是这样?我不确定对动画 GIF 使用灯箱功能有什么实际好处……
从技术上讲,你确实可以放一个超大的动画来展示。
要不我们先暂时禁用灯箱,看看是否有人抱怨?完全同意,它通常弊大于利,对动态 GIF 来说也没什么用。
好的,如果禁用灯箱对动图来说很容易实现,那就这么做吧。可能还需要将其反向移植!