基于HTML5的iPad电子杂志横竖屏自适应方案

摘要:
p=1172)基于HTML5来制作iPad电子杂志,横屏及竖屏自适应是个大问题,查找了半天资料,没有一篇像样的文章可供参考。将思路及例子分享一下。例子并不严谨和规范,仅供参考。由于目前电子杂志以图片为主,因此采用iframe来包含横竖屏文件,因此此种方案目前无用。

基于HTML5的iPad电子杂志横竖屏自适应方案

(转载自:http://www.yeeach.com/?p=1172)

基于HTML5来制作iPad电子杂志,横屏及竖屏自适应是个大问题,查找了半天资料,没有一篇像样的文章可供参考。将思路及例子分享一下。例子并不严谨和规范,仅供参考。

大致思路:

1、对横屏(portrait)和竖屏(landscape)情况下的页面定义两个不同的HTML5页面文件及图片

2、使用iframe来包含横屏(portrait)和竖屏(landscape)时候实际要包含的页面内容,注意此处没有指定iframe的src属性

<iframe id=”iframe1″ name=”iframe1″ frameborder=”0″ scrolling=”no” />

3、使用jQuery Mobile来横屏(portrait)和竖屏(landscape)情况来动态改变iframe的src属性,指向横屏

<script type=”text/javascript”>
functionorient() {
   if (window.orientation == 0 || window.orientation == 180) {
        $(“body”).attr(“class”, “portrait”);
        orientation =‘portrait’;
        $(“#iframe1″).attr(“src”,”portrait.html”);
        $(“#iframe1″).attr(“width”,”768″);
        $(“#iframe1″).attr(“height”,”1024″);
        return false;
        }
   else if (window.orientation == 90 || window.orientation == -90) {
        $(“body”).attr(“class”, “landscape”);
        orientation =‘landscape’;
        $(“#iframe1″).attr(“width”,”1024″);
        $(“#iframe1″).attr(“height”,”768″);
        $(“#iframe1″).attr(“src”,”landscape.html”);
        return false;
   }
}

4、采用meta 的viewport属性来控制iPad或iphone的屏幕属性。

 <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no,minimum-scale=1.0, maximum-scale=1.0"> 

此处 user-scalable=no,minimum-scale=1.0, maximum-scale=1.0值,此种情况下图片能够很好自动适配横屏、竖屏,但缺点是图片不能够手动进行缩放

因此在实际应用中最好采用采用

<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>

5、采用3的方案后,由于iOS的bug,图片不能按照正常比例显示,采用一个javascript补丁解决此问题

iOS-Orientationchange-Fix

一些可供参考的资料:

http://stackoverflow.com/questions/2557801/how-do-i-reset-the-scale-zoom-of-a-web-app-on-an-orientation-change-on-the-iphon

http://web.peterhartree.co.uk/2012/jquery-mobile-orientationchange-supplement/

http://www.blog.highub.com/mobile-2/a-fix-for-iphone-viewport-scale-bug/

http://davidbcalhoun.com/2010/dealing-with-device-orientation

备注:

1、可以使用css针对横屏或竖屏指定不同的CSS文件,这在以文字为主的页面文件中可以直接通过指定横屏和竖屏时候的css文件来实现横竖屏切换。

由于目前电子杂志以图片为主,因此采用iframe来包含横竖屏文件,因此此种方案目前无用。

<link rel=”stylesheet” media=”all and (orientation:portrait)” href=”portrait.css”>

<link rel=”stylesheet” media=”all and (orientation:landscape)” href=”landscape.css”>

2、可以测试一下

jquery.mobile-1.1.0.min.js脚本必须放在jquery-1.6.4.min.js脚本前,否则会在页面显示Loading

<script type=”text/javascript” src=”jquery.mobile-1.1.0.min.js”></script>

<script type=”text/javascript” src=”jquery-1.6.4.min.js”></script>

例子下载请点击此处

免责声明:文章转载自《基于HTML5的iPad电子杂志横竖屏自适应方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NLP-Progress记录NLP最新数据集、论文和代码: 助你紧跟NLP前沿花生壳(公网版) for linux的安装以及使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

实现JTable的列宽与内容的自适应

 JTable默认的各列宽度平均,下函数可以实现各列宽度与内容长度适应!来自互联网~ 1 public void FitTableColumns(JTable myTable){ 2 JTableHeader header = myTable.getTableHeader(); 3 int rowCount = myTable.getR...

微信H5适配 解决微信调整字体大小导致Html5页面混乱

最近开发公众号遇到一个问题: iOS、Android 加载页面,如果用户调整了微信自带的字体大小,那么我们的页面就会跟随调整字体大小,导致页面错乱无法适配。所以希望能够禁止微信的字体放大功能。 找了一些方法总结如下: 原理:阻止ios和安卓调整字体大小时候的事件,ios通过添加css属性,安卓通过微信属性去阻止。 iOS系统禁止微信客户端修改字体大小: /...

HTML5和CSS3基础

第一章 Web时间代的变迁一、HTML4常见用div来划分页面结构方法,HTML5新出现的更语义化的标签. 二、可以放心使用HTML5的三个理由   1、兼容性:HTML5在老版本的浏览器也可以正常运行   2、实用性:HTML5内部并没有封装什么很复杂的功能,只封装了简单实用的功能   3、非革命性的发展:HTML5的内部功能不是革命性,而是发展性的...

iOS H5容器的一些探究(一):UIWebView和WKWebView的比较和选择

一、Native开发中为什么需要H5容器 Native开发原生应用是手机操作系统厂商(目前主要是苹果的iOS和google的Android)对外界提供的标准化的开发模式,他们对于native开发提供了一套标准化实现和优化方案。但是他们存在一些硬伤,比如App的发版周期偏长、有时无法跟上产品的更新节奏;灵活性差,如果有较大的方案变更,需要发版才能解决;如果存...

防止 iframe 的链接重定向父级页面

项目中发现,多系统通过iframe嵌套时,如果iframe的请求是重定向会导致父级页面重定向,怎么破? 查找MDN(https://developer.mozilla.org/zh-CN/docs),找到sandbox 属性是用来限制安全沙箱的. 最终的设置 (不包含allow-top-navigation即可) 1、在 PC 端你可以这样设置 ifra...

python实现获取登录验证码图片

  自动化测试登录页面一般都会存在验证码校验问题,大部分童鞋都是直接把验证码校验关闭掉,下面记录的是如何获取验证码图片的方法: 1.首先获取登录页面图片; 2.确定验证码坐标和大小; 3.通过坐标和尺寸在登录页面上截取验证码图片; 4.截取的验证码图片保存为新的文件。 代码实现如下: from selenium import webdriver impor...