I've written an alternative to freezeframe.js that also uses javascript, but if you prefer a CSS only alternative, I have a partial solution! This uses detail/summary elements, and is most useful for sections of gifs, like blinkie and button collections. If you have gifs sprinkled throughout your page, JavaScript will better serve you.
(Guide is a work in progress - currently an accessibility complication (images are included in the button name), pls dont use, im coding in my browser)
Test it out!
Note that the pause/play button is specific to the gifs contained in the details element, it is not a page or site wide button.
HTML
Unfortunately, like my JS alternative, this method needs a png (or jpg) version of every gif (or other animated file). I copy pasted my gifs into MS Paint and saved them as pngs, which may be tedious if you have a lot of gifs.
Heres an example if you're unfamiliar with how details and summary normally look
This is the summary, select it to open the details.
Heres the rest of the details. The hidden details are any element(s) inside the detail element, after the summary element.
Select the summary again to close these details.
CSS
Thats all! I explain the CSS further below if needed.
CSS Breakdown
I used the :before instead of list-style-type because it accepts more styles.
Note that a width is set for the button so that it does not span the whole container length (since it's a block element, and it being a block element is the only thing that keeps the paused images below it).
Again this only works for gifs that are all together, or individually per gif. Its good for collections of gifs, or a page that as one gif, but not for pages that have gifs in multiple spots, since you would have to have a detail element for each gif, or put unrelated content in the details.