[css3-transforms] Behavior on UAs without 3D support


CSS3 Transforms should give UAs the possibility to just support 2D. The questions is what UAs should do on 3D transform functions?

Possible solutions:

1) All transform functions are supported. When it comes to rendering, the resulting 4x4 matrix is flattened to a 3x2 matrix by just throwing away all 3d parts. The resulting drawing not be the same as the intention of the author.

   m_matrix[0][2] = 0;
   m_matrix[0][3] = 0;

   m_matrix[1][2] = 0;
   m_matrix[1][3] = 0;

   m_matrix[2][0] = 0;
   m_matrix[2][1] = 0;
   m_matrix[2][2] = 1;
   m_matrix[2][3] = 0;

   m_matrix[3][2] = 0;
   m_matrix[3][3] = 1;

2) Just 2D Transform functions get applied and 3D functions just get ignored. The result will most likely not match the authors expectations as well.

3) 3D transform functions are treated as invalid if a UA just supports 2D. In this case any property settings are rejected if a 3D transform was found. Independent if 2D transforms are included in this list as well. This gives the author the possibility to provide two different transforms. One for UA's with and one for UAs without 3D support:

div {
  transform: rotate(45deg);
  transform: rotate3d(0,0,1,45deg);

There was an issue raised, that it might affect printing. I am not sure if this is a valid concern, since for printing the same happens as on the screen. The 3D transformed object gets "flattened" on the screen.

I personally prefer option 3 at the moment.


Received on Tuesday, 1 May 2012 21:26:20 UTC