- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Mon, 12 Nov 2012 12:43:26 -0800
- To: www-style@w3.org
CSS4 images module define concept of Image Fragments [1] like:
background-image: image('toolbar.png#xywh=40,0,20,20')
But this solution is not scaleable well when for different DPIs when
we need to use toolbar.png, toolbar-2x.png, toolbar-4x.png images.
And yet such declarations are very hard to maintain.
So thinking about the @image-map construct:
Let's assume we have this declaration:
@image-map my-sprites {
src: url(toolbar-icons.png);
cells: 16 2; /* 16 in a row, 2 rows */
parts: icon-bold, /* logical names of cells, one by one */
icon-italic,
icon-font-name,
icon-font-size,
...;
}
That defines image catalog made of fragments of toolbar-icons.png file.
So later in CSS we can define something like this:
.toolbar > button.bold { background-image: image-map(my-sprites,icon-bold); }
.toolbar > button.italic { background-image:
image-map(my-sprites,icon-italic); }
etc.
Note that this group of declarations is using only logical names - is
not tied with pixel sizes of original images.
The src may use multiple image sources:
@image-map my-sprites {
src: url(toolbar-icons.png) 100dpi,
url(toolbar-icons-2x.png) 300dpi,
url(toolbar-icons-print.png) 600dpi );
cells: 16 2; /* 16 in a row, 2 rows */
...
}
in this case such single declaration will be flexible to different
screen resolutions.
The image-map may also define catalogs of parts of variable sizes:
@image-map my-logos {
src: ...;
cells: 16 4; /* 16 in a row, 4 rows */
parts: logo-this 1 1 4 4, /* spans 4x4 cells from 0,0 */
icon-fb 5 1 1 1, /* spans 1 cell at 5,1 */
...;
}
If we have such @image-map then we don't need image-set [2] construct.
We can define just this:
@image-map dpi-aware-img {
src: url(dpi-aware.png) 100dpi,
url(dpi-aware-2x.png) 300dpi,
url(dpi-aware-print.png) 600dpi );
}
And use it as
background-image: image-map(dpi-aware-img);
Any comments?
[1] http://dev.w3.org/csswg/css4-images/#image-fragments
[2] http://dev.w3.org/csswg/css4-images/#image-set-notation
--
Andrew Fedoniouk.
http://terrainformatica.com
Received on Monday, 12 November 2012 20:43:53 UTC