通过viewport缩放页面的代码
2013-06-27 14:04
274 查看
很多游戏原来在设计的时候,是为pc而设计的,分辨率较高,比如设置宽度为900。这些游戏如果想简单修改就兼容移动终端的话,只能通过设置页面viewport来实现,不用修改任何游戏代码,只简单设置viewport就可兼容移动终端。
封装了一段代码来实现这个功能。
demo地址:http://www.adanghome.com/js_demo/28/
===================================================
(function(){
function ajustViewport(gameWidth,gameHeight,isLandscope){
var viewportNode,
viewportContent = "",
ua = window.navigator.userAgent.toLowerCase(),
_width = isLandscope ? Math.max(window.innerHeight,window.innerWidth) : Math.min(window.innerHeight,window.innerWidth),
_height = isLandscope ? Math.min(window.innerHeight,window.innerWidth) : Math.max(window.innerHeight,window.innerWidth),
rate = _width / gameWidth,
rate2 = _height / gameHeight,
scalable = ",user-scalable=no",
width;
if (rate > rate2) {
width = Math.round(_width/rate2);
} else {
width = gameWidth;
}
if (ua.indexOf("android") >= 0) {
viewportContent = "width=" + width + scalable + ",target-densitydpi=320";
}else if(ua.indexOf("ios") >= 0 || ua.indexOf("iphone") >= 0 || ua.indexOf("ipod") >= 0 || ua.indexOf("ipad") >= 0){
viewportContent = "width=" + width + scalable;
}
viewportNode = document.querySelector('meta[name=viewport]');
if(viewportNode){
viewportNode.content = viewportContent;
}else{
viewportNode = document.createElement("meta");
viewportNode.name = "viewport";
viewportNode.content = viewportContent;
document.head.appendChild(viewportNode);
}
}
window.ajustViewport = ajustViewport;
})();
=====================================================
调用的时候,在页尾调用 ajustViewport(gameWidth,gameHeight) ; 即可。由于这种缩放是直接通过设置viewport,改变设备dpi缩放比率实现的缩放,所以所有的像素位置,包括事件位置都和pc上一模一样,是种很好的缩放方案。
封装了一段代码来实现这个功能。
demo地址:http://www.adanghome.com/js_demo/28/
===================================================
(function(){
function ajustViewport(gameWidth,gameHeight,isLandscope){
var viewportNode,
viewportContent = "",
ua = window.navigator.userAgent.toLowerCase(),
_width = isLandscope ? Math.max(window.innerHeight,window.innerWidth) : Math.min(window.innerHeight,window.innerWidth),
_height = isLandscope ? Math.min(window.innerHeight,window.innerWidth) : Math.max(window.innerHeight,window.innerWidth),
rate = _width / gameWidth,
rate2 = _height / gameHeight,
scalable = ",user-scalable=no",
width;
if (rate > rate2) {
width = Math.round(_width/rate2);
} else {
width = gameWidth;
}
if (ua.indexOf("android") >= 0) {
viewportContent = "width=" + width + scalable + ",target-densitydpi=320";
}else if(ua.indexOf("ios") >= 0 || ua.indexOf("iphone") >= 0 || ua.indexOf("ipod") >= 0 || ua.indexOf("ipad") >= 0){
viewportContent = "width=" + width + scalable;
}
viewportNode = document.querySelector('meta[name=viewport]');
if(viewportNode){
viewportNode.content = viewportContent;
}else{
viewportNode = document.createElement("meta");
viewportNode.name = "viewport";
viewportNode.content = viewportContent;
document.head.appendChild(viewportNode);
}
}
window.ajustViewport = ajustViewport;
})();
=====================================================
调用的时候,在页尾调用 ajustViewport(gameWidth,gameHeight) ; 即可。由于这种缩放是直接通过设置viewport,改变设备dpi缩放比率实现的缩放,所以所有的像素位置,包括事件位置都和pc上一模一样,是种很好的缩放方案。
相关文章推荐
- 通过viewport实现jsp页面支持手机缩放
- 通过viewport实现jsp页面支持手机缩放
- html页面通过ActiveX控件调用摄像头实现拍照上传demo代码下载
- 纯css的防止图片撑破页面的代码(图片自动缩放)
- javascript代码控制图片在页面显示时等比例缩放
- 通过添加角色页面,体现一个人的代码水平,思路是否严谨?
- JSP 部属Tomcat jsp嵌套Java代码 通过JDBC获取数据库表通过Java在JSP页面输出
- iOS屏幕适配之通过代码实现控件按比例缩放
- android webView中的html页面通过javascript访问java代码
- asp.net2.0中通过CS代码来动态的指定aspx页面中head中的信息
- 20行html代码加40行css代码实现照片墙页面(鼠标hover实现旋转缩放)
- 通过添加角色页面,体现一个人的代码水平,思路是否严谨?
- 有关div页面拖动、缩放、关闭、遮罩效果代码
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- jsp中插入java代码,并在当前页面获取值(也可在另一js种通过input标签id获取值)
- asp.net2.0中通过CS代码来动态的指定aspx页面中head中的信息
- HTML--如何实现通过鼠标事件拖动页面图像(代码)
- 通过添加角色页面,体现一个人的代码水平,思路是否严谨?
- 纯css的防止图片撑破页面的代码(图片自动缩放)
- 通过添加角色页面,体现一个人的代码水平,思路是否严谨?