移动端页面自适应横屏竖屏解决方法思考

之前对于横屏的webapp做过一些尝试,但是始终不是很好的解决方案,前段时间又接触了类似的需求,尝试了感觉更好的解决方案。

之前的方法写的博客:移动网页横竖屏兼容适应的一些体会

这里举的例子还是平时常见的移动端的滑动页面,也就是上下切换页面的”H5“。

首先要做的准备:

1、html布局

<div id="wrap">
			<div class="pageWrap">
				<div class="img11"><img data="images/1/plane.png" alt=""></div>
				<div class="img12 animated"><img data="images/1/tips.png" alt=""></div>
			</div>
			<div class="pageWrap">

			</div>

		</div>

2、然后是css样式:

/*
YUI 3.18.1 (build f7e7bcb)
Copyright 2014 Yahoo! Inc. All rights reserved.
Licensed under the BSD License.
http://yuilibrary.com/license/
*/

html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;*font-size:100%}legend{color:#000}#yui3-css-stamp.cssreset{display:none}

img{ width: 100%; display: block;}

/* main css */
body{ width: 100%; height: 100%; position: relative; left:0; top: 0; background: #000; overflow: hidden;}
#wrap{ height: 100%; position: absolute; left: 50%; top:50%; overflow: hidden;}

.pageWrap{ width: 100%; height: 100%; position: absolute; overflow: hidden; left: 0; top:0; -webkit-transition:all 1s; transition:all 1s;  transform: translate3d(100%, 0, 0); -webkit-transform: translate3d(100%, 0, 0);}
.pageWrap div{ display: none;}
.pageWrap:nth-child(1){ background: #42a8fe url(http://7xioxc.com1.z0.glb.clouddn.com/bigxm_1_house.jpg) no-repeat center bottom; background-size:cover; transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);}
.pageWrap:nth-child(1) div{ display: block;}
.pageWrap:nth-child(2){ background: #e22143 url(http://7xioxc.com1.z0.glb.clouddn.com/bigxm_2_bg2.jpg) no-repeat center bottom; background-size:cover;}

/* p1 */
.logo{ width:94px; position: absolute; left:50%; margin-left: -47px; top:23px; }
.img11{ width:97px; position: absolute; left:2%;  top:10%; }
.img12{ width: 190px; position: absolute; left: 50%; margin-left: -95px; bottom:85px;}
.img13{ width: 100%; position: absolute; left: 0; top:0;}

上面的样式包含了reset.css以及页面的样式,主要关注的地方是body的样式和#wrap、.pageWrap的样式。页面是按照横屏来写的,当为竖屏时,需要把页面旋转90度。

----------------------------------------------------------------------------------------------------------------------------------

准备好上面的内容之后,接下来就是要写我们的js实现了。

通过js来得到宽高的值来判断是竖屏还是横屏,为什么要这样子呢?

因为不是所有的浏览器都支持orientation的方法,所以我就通过这个笨笨的方法来实现了。

(1)如果浏览器的宽度大于高度,说明是横屏的,画布的宽度 == 浏览器的宽度,所以wrap不需要旋转。

$('body').css({
			'width':ww+'px',
			'height':wh+'px'
		});

		wrap.css({
			'width':ww + 'px',
			'height':wh + 'px',
			'transform':'translate3d(-50%,-50%,0)',
			'-webkit-transform':'translate3d(-50%,-50%,0)'
		});

(2)如果浏览器的宽度小于高度,说明是竖的,画布的宽度 == 浏览器的高度

$('body').css({
			'width':ww+'px',
			'height':wh+'px'
		});

		wrap.css({
			'width':wh + 'px',
			'height':ww + 'px',
			'transform':'translate3d(-50%,-50%,0) rotate(90deg)',
			'-webkit-transform':'translate3d(-50%,-50%,0) rotate(90deg)'
		});

这个时候,就需要把页面旋转过来了。

-------------------------------------------------

除了需要注意这一点之外,还要考虑到的是滑动页面的时候的方向。

因为横屏和竖屏的时候手指滑动的方向并不是一致的,所以手指滑动的事件也需要写两个情况。

完整的测试代码可以在百度云盘中下载:http://pan.baidu.com/s/1gdix9QF

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-01 03:06:07

移动端页面自适应横屏竖屏解决方法思考的相关文章

移动端判断横屏竖屏

1. CSS判断横屏竖屏 写在同一个CSS中 @media screen and (orientation: portrait) { /*竖屏 css*/} @media screen and (orientation: landscape) { /*横屏 css*/}分开写在2个CSS 竖屏<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css

HTML5中判断横屏竖屏

HTML5中判断横屏竖屏 在移动端中我们经常碰到横屏竖屏的问题,那么我们应该如何去判断或者针对横屏.竖屏来写不同的代码呢. 这里有两种方法: 一:CSS判断横屏竖屏 写在同一个CSS中 1 2 3 4 5 6 @media screen and (orientation: portrait) {   /*竖屏 css*/ } @media screen and (orientation: landscape) {   /*横屏 css*/ } 分开写在2个CSS中 竖屏 1 <link rel=

Android学习笔记(三六):横屏竖屏的切换

1.准备环境 对模拟器,只要“Ctrl+F12“,就可以可以实现竖屏(portrait)和横屏(landscape)的切换. 2.UI的屏幕切换实现 下面一个简单的例子,如图. 我们需要写两个Android XML文件,假定文件为chapter_19_test1.xml,放在常规目录位置layout/内容如下: [plain] view plaincopy <?xml version="1.0" encoding="utf-8"?> <Linear

【转】Android 模拟器横屏竖屏切换设置

http://blog.csdn.net/zanfeng/article/details/18355305# Android 模拟器横屏竖屏切换设置时间:2012-07-04   来源:设计与开发   作者:Daniel   点击:5571 摘要:  Android 模拟器旋转,横屏.竖屏切换设置,android 横屏布局,android 横屏模式,android 模拟器,android 模拟器横屏,android 模拟...       Android 模拟器旋转,横屏.竖屏切换设置,andr

手机横屏竖屏css

@media是css3中新定义的,功能非常强大,顾名思义PC是无法匹配横竖屏的,所以orientation只对移动设备起效. 1.头部声明 复制代码 代码如下: <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0"> 加到 复制代码 代码如下: <head></head> 2.

Cocos2dx开发windows phone时,VS2013设置为横屏竖屏问题

1.首先打开自己的windows phone的项目: 2.把项目打开,可看到如下的结构: 3.然后点击MainPage.xaml文件,可以看到如下结构: 然后左边是显示的模拟器,右边是代码,Landscape表示的是横屏,Portrait表示的是竖屏,如图所示: 这样就可以设置横屏竖屏了,如果你只是点击模拟器中的旋转来调试横屏竖屏,根本就没用,还是要代码才能解决吧: 这是在移植wp8的时候一些总结,在移植过程中,各种坑爹的语法都有,有些改了就可以用了,但也许你不知道为什么, 哈哈,真是,可能是兼

Phonegap 禁止手机横屏竖屏自动旋转

方法: 在AndroidManifest.xml的<activity>标签里面加入下面代码 android:screenOrientation=”portrait”属性即可(portrait是纵向,landscape是横向),事例代码如下: <activity android:name="com.example.test.MainActivity" android:label="@string/app_name" android:screenOri

Android之横屏竖屏显示问题

1.采用不同的布局文件 res文件下 选中layout  Ctrl+C 选中res Ctrl +V 创建layout-land横屏显示的layout 同理创建layout-port竖屏显示的layout 图片横屏竖屏 选中drawable-xhdpi Ctrl+C 选中res Ctrl + V 创建drawable-land-xhdpi 其他分辨率的也一样 字符串 values-land values-port 另外:(layout文件夹也可以使用hdip,mdip等关键字命名如layout-h

cocos2d-x 设置屏幕方向 横屏 || 竖屏

cocos2d-x 设置屏幕方向 横屏 || 竖屏 需要根据各个平台分别进行设置. android 修改项目根目录 proj.android\AndroidManifest.xml 文件中的android:screenOrientation属性值,portrait 为竖屏,landscape为横屏 Windows 直接用cocos引擎接口中的GLView::createWithRect方法指定窗口大小,需要注意的是,该方法在android环境下会报错,并导致程序崩溃,所以我们需要在代码里面这么写