- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Wed, 03 Dec 2008 20:08:40 -0800
- To: Philip Jägenstedt <philipj@opera.com>
- CC: www-style@w3.org
Philip Jägenstedt wrote:
> Hi,
>
> I've been working on implementing HTML 5 <video> in Opera and after
> recent discussions on the WHATWG list[1] about the pixelratio attribute
> in the specific and more generally the difference between <img> and
> <video> I believe formalizing and expressing these differences in CSS
> would be for the best (first suggested by Martin Atkins[2]).
>
> As you know, <img style="width: 100px; height: 100px;"> would cause
> the image to stretch to fill the content box of 100x100 px, distorting
> the image if the original is not square.
>
> <video style="width: 100px; height: 100px;"> also causes the content box
> to be 100x100 px, but the video is scaled while preserving its ratio so
> that it fits precisely inside the box, resulting in letterboxing or
> pillarboxing if the original video is not square.[3]
>
> Furthermore, SVG has the preserveAspectRatio[4] attribute for some
> elements, including <image> and <video>, but it cannot be set with CSS.
> Using this attribute one can achieve both the stretch behavior ("none";
> like HTML <img>), the aspect-preserving behavior ("meet"; like HTML
> <video>) and additionally "slice" which also preserves aspect but zooms
> and crops instead.
>
> I would like to suggest introducing something similar to
> preserveAspectRatio in CSS along the following lines:
>
> 1. A new "preserve-aspect-ratio" property which can take the values
> "none", "meet" and "slice". I'm not sure what the overflow behavior for
> slice should be, this needs discussion. An alternative naming scheme for
> this property might be "scaling" with values "stretch", "aspect-min" and
> "aspect-max".
>
> 2. A new content-position property similar to background-position which
> does has the same function as the align portion of the SVG
> preserveAspectRatio attribute. This would only take effect if the above
> property is "meet" or "slice".
>
Conceptually <img> and <video> are elements that have two images:
1) background-image:url(...) and
2) foreground-image:attr(src).
Imagine that you have additional set of foreground-*** attributes
similar to background-*** set.
Having them you would be able to define defaults for the <video>
as:
video
{
foreground-image :attr(src);
foreground-repeat :stretch keep-ratio;
foreground-position:50% 50%;
}
video:unavailable
{
foreground-image :url(somecaption.png);
}
There are also many other cases when CSS would benefit from having
foreground images. E.g. list items with icons are better (semantically)
defineable as <li>'s with foreground image and text.
--
Andrew Fedoniouk.
http://terrainformatica.com
Received on Thursday, 4 December 2008 04:09:07 UTC