views:

1107

answers:

2

I have a very basic web page that uses flot to create a canvas based graph (similar to what SO uses for reputation graph).

In the case of a PC display, it should simply output normally, with a the width (x-axis) being 1.6 times the height.

But for iPhones, I would like it if, rather than having it overflow in "canvas" orientation, the page defaulted to landscape orientation, encouraging (or forcing) the user to turn their phone to see the chart as PC users would.

So my questions are:

1) Is there a way (using CSS, JS, or simply HTML head tags) to have the canvas rotate 90 degrees on detection of a "canvas" orientation?

2) Is there a way, in general, to rotate elements/objects, regardless of who is viewing it?

3) Is there a way to avoid the iPhone's default behavior of rotating the content when the device is rotated? Obviously I want the user to rotate the device upon seeing that it has shown up sideways, but I don't want the graph to flip over and STILL be sideways when they turn the phone, teasing them to continue to flip the phone and never getting the graph to hold still.

Thanks!

+1  A: 

Something like this.

window.onorientationchange = function() {

  var orientation = window.orientation;
  switch(orientation) {
    case 0:

 document.body.setAttribute("class","portrait");

 break; 

    case 90:

 document.body.setAttribute("class","landscapeLeft");

 document.getElementById("currentOrientation").innerHTML="Now in landscape orientation and turned to the left (Home button to the right).";
 break;

    case -90: 

 document.body.setAttribute("class","landscapeRight");

 document.getElementById("currentOrientation").innerHTML="Now in landscape orientation and turned to the right (Home button to the left).";
 break;
  }
}
Robert Cabri
This is definitely what I had in mind. Very elegant in that it takes into account both the user turning the device with the iPhone detecting the turn and withouth.
Anthony
+1  A: 

1/2) Did you try -web-transform? See this Apple web page

3) I think you can't inhibit the auto-rotation

muccy
+1 for pointing me to a really awesome resource.
Anthony