移动网页横竖屏兼容适应的一些体会
来源:互联网 发布:服务器重启后数据丢失 编辑:程序博客网 时间:2024/06/05 15:22
【文章前提】
最近接到一个需求,是一个需要在手机端横屏显示的滑页类型的页面。这个页面需要兼容iphone和安卓,也就是可以不支持wp。
设计图给的是宽图,也就是宽度>高度的图片。但是手机默认情况下,大家都是会选择竖屏的,或者直接是禁止手机横屏显示的,我就是其中这样的一个人,同时我发现身边的人一般都是禁止手机自动选择屏幕的,因为这样反而会带来一些麻烦。所以大多情况下,用户竖屏显示。
既然接到了这样的需求,所以还是要想办法实现的。
办法总是比方法多的。
【实践过程】
因为是第一次来做这样的适应,所以在这上面做了很多种尝试。
~~~ 第一种实践~~~
1、写一个css文件,但是里面会写两个适应的内容。通过@media all and (orientation : landscape)来判断是横屏,默认是竖屏的样式,当遇到横屏时,横屏显示样式。这个,在后来的实践中,都是没有问题的。
2、js,这个问题会比较多。因为横屏和竖屏所触发的事件会有一些不同。
比如:
横屏的时候,是这样的:
竖屏的时候是这样的:
分析上面这两张图,就可以发现,当横屏的时候,手指滑动是计算moveX,图片的位移也是x轴上的。
而竖屏的时候,是计算moveY,图片的位移是Y轴上的。
以上这两个不同的地方,就需要在程序中判断不同的旋转方向了。
第一次的时候,做了两套js,当屏幕的宽度大于屏幕的高度的时候,判断是横屏,加载横屏的js。当屏幕是竖屏的时候,加载竖屏的js。加载js使用异步加载的方式。
当用户旋转了屏幕,监听resize事件,发生旋转的时候,刷新页面,这样在安卓上是完美实现了需求了的。
但是客户用iphone打开的时候,却发现,旋转刷新的时候,微信直接卡死闪退了。所以无奈此举在安卓上ok却让iphone出问题了,只好放弃第一种实践方式。
~~~ 第二种实践方式~~~
1、css和之前的没有变化
2、js写在同一个文件中,旋转屏幕的时候,不进行刷新操作。
3、代替的方法是通过判断横屏还是竖屏,初始化各种参数。包括加载图片,页面的宽高等,滑页的事件。
4、当旋转屏幕的时候,重新绑定事件,重新设置必要样式,重新加载相应需要改变的图片等。
----问题出现了:
出现重新绑定事件会有一些bug出现。
一怒之下,抛弃之。
~~~ 第三种 ~~~
之前绑定事件都是分开绑定的,比如横屏是的swipe1,竖屏就是swipe2
第三种方式不是分开了,而是把两个可能都写在一个函数中,然后在函数中通过判断横竖屏来选择相应的操作。
第三种方法就解决了第二种方法的bug。
旋转屏幕后大概流程是这样的:
1、重新获取屏幕的高度和宽度
2、重新设置页面的宽度和高度
3、重新设置下需要滑动的图片容器的样式。
4、重新加载图片
以上就可以了。
而事件的判断,已经都写在函数中了,执行的时候会进行判断是横屏或者竖屏。
虽然这样看上去似乎会影响到性能,但是能够解决bug,也就暂且这样了。
在这个过程中,发现了一个问题。
这个问题我发了帖子,可以前往地址查看问题,懂的就回答,同问的可以参考其他人提供的回帖。http://bbs.csdn.net/topics/390939397
ps:虽然遇到bug的时候,会吐槽客户怎么做这样的页面之类的。但是却喜欢,因为可以做一些自己没有接触过的东西,在bug中成长,增长见识真是极好的啊~~~
- 移动网页横竖屏兼容适应的一些体会
- 移动端横竖屏问题--兼容iPhone、Android
- 一个网页适应多种不同屏幕的移动wap开发
- GridView自动适应横竖屏切换
- 移动网页设计规范(适应手机屏幕大小)
- 移动端网页事件以及屏幕适应
- 关于移动应用用户体验设计的一些体会
- 阿里移动技术峰会的一些体会 2015-07-04
- android 软键盘弹出移动view 键盘监听兼容横竖屏切换
- 界面横竖屏的一些问题总结
- 用代码来控制自定义的控件 自动适应横竖屏时的相对位置
- 用代码来控制自定义的控件 自动适应横竖屏时的相对位置
- 网页的高度自动适应
- 网页适应不同的分辨率
- 检测移动设备横竖屏
- 一些工作的体会
- Ajax的一些体会
- OnGestureListener的一些体会
- 循环判断综合题解析
- jquery动画animate缓动效果
- leetcode——Scramble_String
- maven(三) 生成项目原型
- HDU 1051 Wooden Sticks
- 移动网页横竖屏兼容适应的一些体会
- three.js 源码注释(二十二)Core/Object3D.js
- MySQL中concat函数(连接字符串)
- 【ASP接口开发】获取访问URL的真实客户端IP地址
- 史玉柱退休继续“烧脑”手游成新宠
- Cocos2dx学习笔记35 CCArray使用注意事项
- 基于SMB协议共享文件及文件夹的复制
- 虚函数
- xcode Swift SourceKitService Crashed