- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Fri, 11 Feb 2011 16:22:51 -0800
- To: www-style list <www-style@w3.org>
In <http://www.w3.org/TR/CSS21/generate.html#list-style> there is an
algorithm for sizing images used in list-style-image. The algorithm
described there has identical results to what is in Image Values,
except for one case: when an image is used that has only one intrinsic
dimension and no intrinsic ratio, the CSS2.1 algorithm sets the other
dimension to make a square, rather than setting it to 1em.
This does not reflect implementations, however. I did some basic
testing with an SVG image that had only a height or width:
test.svg:
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN'
'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg height="50px" version='1.1' xmlns='http://www.w3.org/2000/svg'>
<ellipse cx="50%" cy="50%" rx="50%" ry="50%" fill="blue" />
</svg>
test.html:
<!doctype html>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
<style>
ul {
list-style-image: url("test.svg");
}
</style>
Opera fills in the missing dimension as 1em, not 50px. Chrome fills
in the missing dimension as, I dunno, .5em? Something like that,
probably related to the width of the default bullet. It's not exactly
right, but it clearly has the same behavior as Opera.
I can't seem to get Firefox or IE8 to render an SVG list-style-image.
IE9, unfortunately, implements the spec here. Luckily, this is a tiny
edge-case that I suspect is extremely rare. In all the normal cases
(images with all intrinsic dimensions, images with no dimensions,
images with just a ratio), everyone does things right.
I suggest changing the spec here to match the webkit/opera behavior,
so that list-style-image is consistent with every other use of images
in CSS. My suggested change is to replace line #3 in the algorithm
with "If the image has no intrinsic ratio, intrinsic width, or
intrinsic height, then its intrinsic ratio is assumed to be 1:1."
~TJ
Received on Saturday, 12 February 2011 00:23:44 UTC