移动网站 – 强制风景只/不自动旋转

我有一个网站有一个移动样式表:

<link rel="stylesheet" href="css/mobile.css" media="handheld"> 

我也使用jQuery来检查移动设备并相应地改变function。

但是我想知道是否有办法强制横向定向并禁用自动旋转? 无论是CSS或jQuery解决scheme都可以。

谢谢!

使用媒体查询来testing方向,在纵向样式表中隐藏所有内容,并显示一条消息,说明该应用只能在横向模式下工作。

 <link rel="stylesheet" type="text/css" href="css/style_l.css" media="screen and (orientation: landscape)"> <link rel="stylesheet" type="text/css" href="css/style_p.css" media="screen and (orientation: portrait)"> 

我认为是最好的方法

您无法强制在网页中定位,但您可以在portarit模式下build议或阻止内容。

我对现有的脚本进行了改编

在你的html文件中添加一个div元素

 <div id="block_land">Turn your device in landscape mode.</div> 

然后调整你的CSS来覆盖你的所有页面

 #block_land{position:absolute; top:0; left:0; text-align:center; background:white; width:100%; height:100%; display:none;} 

然后添加一个小号的JavaScript来检测方向

 function testOrientation() { document.getElementById('block_land').style.display = (screen.width>screen.height) ? 'none' : 'block'; } 

不要忘记testingonload和onorientationchange方向,也许在你的身体标签

 <body onorientationchange="testOrientation();" onload="testOrientation();"> 

让我知道这个解决scheme是否适合你。

我认为最好的方法是脚本,以便当用户改变时,改变。 我修改了这个,使它在纵向旋转你的页面主DIV,迫使用户切换。 除非他们想要侧身倾斜头部,

 <script type="text/javascript"> (function () { detectPortrait(); $(window).resize(function() { detectPortrait("#mainView"); }); function detectPortrait(mainDiv) { if (screen.width < screen.height) { $(mainDiv).addClass("portrait_mode"); } else { $(mainDiv).removeClass("portrait_mode"); } } })(); </script> <style type="text/css"> .portrait_mode { -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -o-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } </style> 

我试了下面的代码,它强制浏览器使用肖像模式:

 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0" /> 

此代码已在iPhone和其他移动设备上进行过testing。

简单的方法来强制横向方向设置你的最小宽度在你的CSS代码,尝试使用此代码

 @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation:portrait) { body { -webkit-transform: rotate(90deg); width: 100%; height: 100%; overflow: hidden; position: absolute; top: 0; left: 0; }} 

希望解决你的问题。