- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Thu, 05 May 2011 22:04:55 -0700
- To: "www-style@w3.org" <www-style@w3.org>
The CSSWG wanted to discuss what features from CSS3 Images and Replaced Content
other than gradients are stable enough to go to CR. So I've prepared an overview
of what all the feature are, along with notes on why they were added to the draft
and, as far as I know, who implements which bits so far. I've copied this text to
http://wiki.csswg.org/spec/css3-images
so that we can update it as people point out other implementations, use cases,
etc.
Several features are incorporated into the image() notation; I have split them
out here.
Image Slices (Basic Spriting)
=============================
The use case we're trying to solve is the one that authors are currently
hacking 'background-position' and other properties to solve: namely, page
loading optimization and easier management of graphic resources
(only one file to to load/edit for a series of related icons)
http://www.google.com/search?q=css%20sprites
The Media Fragments WG has created a fragment identifier notation for
representing slices of images:
http://www.w3.org/TR/media-frags/#naming-space
But URLs don't have the same parsing-fallback behavior that CSS does,
so if an author used, e.g.
url('sprites.png#xywh=10,30,60,20')
in a style sheet, new UAs would pull out the relevant portion of
sprites.png, but old UAs would use the *entire* png file.
One of the features of the image() notation is to allow for fallbacks:
list-style: circle;
list-style-image: image('sprites.png#xywh=60,0,20,20');
or
background-image: url('swirl.png'); /* old UAs */
background-image: image('sprites.png#xywh=10,30,60,20'); /* new UAs */
http://dev.w3.org/csswg/css3-images/#url
Implementation notes:
- Mozilla implements a -moz-image-rect() notation that has this
functionality.
Image Fallbacks
===============
There'd been discussion of fallback images, particularly for background
images, in the past. A fallback color was originally integrated into the
Backgrounds and Borders spec. After discussions on syntax and
understandability, the feature was dropped with the suggestion to
integrate it into a different mechanism. This is the image() notation's
comma-separated syntax:
background-image: image(url(wavy.svg), 'wavy.png', "wavy.gif",
rgba(255,0,0,0.5));
http://dev.w3.org/csswg/css3-images/#image-notation
Implementation notes:
none
Image Resolution
================
High-resolution images are critical for printing applications, but for
backwards-compatibility, CSS images must be rendered at 1dppx. Prince
and Antenna House Formatter support an 'image-resolution' property to
explicitly set the resolution of replaced elements or to indicate that
the resolution information embedded in the image should be used.
http://dev.w3.org/csswg/css3-images/#image-resolution
Implementation notes:
- implemented in Antenna House Formatter
- implemented in Prince
Both products also support a 'background-image-resolution' property.
When the WG discussed this at the last Tokyo F2F, it was decided that
we didn't want an explosion of properties to control image resolution
for each way of introducing images in CSS (backgrounds, list markers,
border-image, other future extensions, etc.). The conclusion was to
use a functional notation to associate an image resolution with the
CSS image where it was declared.
http://lists.w3.org/Archives/Public/www-style/2009Mar/0065.html
The image() notation has an optional <resolution> argument to handle
this use case.
http://dev.w3.org/csswg/css3-images/#image-notation
Implementation notes:
- none, but would replace/extend 'background-image-resolution'
Image Directionality
====================
This feature, which associates an image with a directionality and
automatically flips it as necessary, comes from a request from the
bidi folks in the I18n WG. It was originally a request for an
additional feature in HTML, but after some discussions they were
convinced that legitimate uses of HTML <img>/<object> are rarely
flippable, whereas stylistic images (which /should/ be used via
CSS) were the images they were concerned with.
http://lists.w3.org/Archives/Public/www-style/2010Nov/0000.html
This feature request was also folded in as an argument to the
image() notation.
http://dev.w3.org/csswg/css3-images/#image-notation
Implementation notes:
none
Element-as-Image
================
The -moz-element() notation was implemented in Mozilla, and proposed
for standardization as element():
http://lists.w3.org/Archives/Public/www-style/2010Aug/0635.html
As CSS3 Image Values seemed the logical place to put it, it wound
up here.
http://dev.w3.org/csswg/css3-images/#element-notation
Implementation notes:
- Mozilla
cross-fade() notation
=====================
As noted in the spec, this was needed to represent the intermediate
state when animating one image to another.
http://dev.w3.org/csswg/css3-images/#cross-fade-function
Implementation notes:
?
Sizing Images and Objects in CSS
================================
This is a more detailed rewrite of the intrinsic sizing algorithms
in CSS2.1, including the SVG-related portions that were recently
kicked out due to lack of correct implementation. It generalizes
the algorithm so that it can be referenced by other modules, such
as CSS3 Backgrounds and Borders.
http://dev.w3.org/csswg/css3-images/#sizing
Implementations:
- everyone, partial
object-fit and object-position
==============================
These were pulled in from the CSS3 Paged Media module where they
didn't quite belong and were renamed, after a fair amount of
negotiation with the SVGWG, from image-* to object-*. The SVGWG
plans to use these properties as a CSS mapping for <svg>'s
preserveAspectRatio attribute.
http://dev.w3.org/csswg/css3-images/#object-fit
http://dev.w3.org/csswg/css3-images/#object-position
Implementations:
- HP
- Opera
Tab recently re-added the 'none' value, which had been removed by
WG resolution, in response to a request from Opera:
http://lists.w3.org/Archives/Public/www-style/2011Jan/0554.html
There doesn't seem to be consensus on this value, yet. See also
http://lists.w3.org/Archives/Public/www-style/2011Jan/0649.html
The 'scale-down' value is similarly new, and was added from the
same thread.
image-orientation
=================
This feature applies a rotation to the image before it is processed
by layout. It is intended to correct images that are given in the
wrong orientation (e.g. sideways off a camera). This was also pulled
out of the CSS3 Paged Media module, and IIRC was particularly
important for printers. (They use CSS as a templating language for
printing photos off your camera.)
http://dev.w3.org/csswg/css3-images/#image-orientation
Implementations:
needs investigation
image-rendering
===============
This property was originally defined in SVG:
http://www.w3.org/TR/SVG/painting.html
I haven't followed the discussions that resulted in the current definition.
Implementation notes:
- Mozilla
https://developer.mozilla.org/En/CSS/Image-rendering
- Microsoft (different syntax)
http://msdn.microsoft.com/en-us/library/ff521095%28VS.85%29.aspx
Serialization and Interpolation
===============================
These sections are provided to define interactions with the CSSOM and
animation, respectively, so I expect their inclusion to be uncontroversial.
~fantasai
Received on Friday, 6 May 2011 05:05:25 UTC