I am a lazy person and like to automate things that can be automated. We had all our sprites hand written earlier and the problem with that approach is that it was append only. Every time you have to add a new image the developer would add it at the end but if I asked to remove an image then they would give me a look like what the heck I am talking about, they would give weeks estimate to go and fix coordinates in each and every place those images were used. Net net this seems like something that should not be that hard to automate and thats where smartsprite came to rescue. A very very handy tool to automatically generate your sprite and biggest benefit is that its non-intrusive and you can start small and keep cleaning your old code and convert to this mode as and when you change that part of code. This is the link to the tool http://csssprites.org/
So all you need to do is add some comments at the top of your existing css
/** sprite: kpSmartSprite; sprite-image: url('../images/kpSmartSprite-${md5}.png'); sprite-layout: vertical; */
and then the css rule where you add image reference you have to add the comment
.t-add {
background-image: url("../images/add.png") !important; /** sprite-ref: kpSmartSprite; sprite-alignment: left; sprite-margin-bottom:6px;*/
}
So you can keep adding these tags. Now you can use an ant target to generate your sprite. The tool will generate the sprite image and will also change you css file to add the coordinates.
<target name="sprite-images" description="Creates a sprite using smartsprite by reading smart sprite annotations">
<taskdef resource="smartsprites.xml">
<classpath>
<fileset dir="${thirdParty}/tools/smartsprites-0.2.8/lib">
<include name="*.jar" />
</fileset>
</classpath>
</taskdef>
<smartsprites rootdir="${war.path}/css"
documentrootdir=""
outputdir="${war.path}/css-sprite"
cssfileencoding="UTF-8"
cssfilesuffix=""
loglevel="INFO"
spritepngdepth="AUTO"
spritepngie6="false" />
<move todir="${war.path}/css" failonerror="no">
<fileset dir="${war.path}/css-sprite" />
</move>
</target>
So all you need to do is add some comments at the top of your existing css
/** sprite: kpSmartSprite; sprite-image: url('../images/kpSmartSprite-${md5}.png'); sprite-layout: vertical; */
and then the css rule where you add image reference you have to add the comment
.t-add {
background-image: url("../images/add.png") !important; /** sprite-ref: kpSmartSprite; sprite-alignment: left; sprite-margin-bottom:6px;*/
}
So you can keep adding these tags. Now you can use an ant target to generate your sprite. The tool will generate the sprite image and will also change you css file to add the coordinates.
<target name="sprite-images" description="Creates a sprite using smartsprite by reading smart sprite annotations">
<taskdef resource="smartsprites.xml">
<classpath>
<fileset dir="${thirdParty}/tools/smartsprites-0.2.8/lib">
<include name="*.jar" />
</fileset>
</classpath>
</taskdef>
<smartsprites rootdir="${war.path}/css"
documentrootdir=""
outputdir="${war.path}/css-sprite"
cssfileencoding="UTF-8"
cssfilesuffix=""
loglevel="INFO"
spritepngdepth="AUTO"
spritepngie6="false" />
<move todir="${war.path}/css" failonerror="no">
<fileset dir="${war.path}/css-sprite" />
</move>
</target>
Comments
Post a Comment