CSS Paker: block padding and grouping #147
Comments
Hey @aarondail, thanks for your submission! At a glance it sounds reasonable and I will review it further to see how to incorporate it. However, due to capacity reasons I won't be able to work on all this until end of April, so please bear with me. Thanks! :) |
Hey @aarondail, I finally found the time to dive into your issue — thanks a lot for this awesome submission. I really learnt a lot reading your code! :) I'm currently doing some house cleaning with svg-sprite and will deal with the more fundamental issues first (like updating dependencies), but I'll definitely keep thinking about your proposal. In the meantime, could you please have a look at #142 and tell me if you see any relationship between these issues? Thanks! |
Thanks @jkphl, I took a look at #142, but I think they are independent in the sense that their problem is different than mine... But as it happens, I also wanted to use absolute pixel coordinates in my sprite sheet so I customized the default template to do that. FWIW, using absolute pixel coordinates seems to also help with the same problem I opened this ticket for (emphasis on "seems to"). |
The Overview
Firstly, thanks for making this great tool!
This is kinda a request for either some new functionality or possibly a new extensibility point. Its a bit long, so bear with me!
The Problem
For context, we are using the tool to generate CSS using the packed layout and a svg sprite sheet. It works well. :)
But we have some sprites that represent different states of an icon (i.e. a
checkbox-unselected-icon
, and acheckbox-selected-icon
). We noticed that on some browsers at some non-100% zoom levels, when you interacted with the icon and triggered the other sprite to show (i.e. checked the checkbox) the icon would seem to shift right|left|up|down by a pixel. Its not a huge deal, but visually its kinda jarring.This is not a SVG specific problem ... it happens with raster sprite sheets too and has been happening for a long time ... because browsers all do different sub-pixel rounding for the sprite's starting screen coordinates when you zoom in/out (note that it does not happen AFAICT if you zoom via touch though)
Anyways, to mitigate this (to some degree) we monkey patched two changes into the
lib\svg-sprite\mode\css\packer.js
code.The Request
I'd like to see if you are open to adding this functionality into the tool itself or if we could get an extension point (i.e. pass a function in somewhere) so we could get rid of the monkey patching.
(That said, thank you for designing the code in a way where we at least have the possibility to monkey patch it and get something working!)
The Monkey Patching
The two changes we are patching into packer.js are both in the
fit
function:These seemed to help mitigate the problem to a large degree. We also customized the css template to use position.absolute.px instead of position.relative.xy and that helped as well.
Here the actual change we made, which may be more useful than my explanation😄
The text was updated successfully, but these errors were encountered: