倾力总结40条常见的移动端Web页面问题解决方案
1、安卓浏览器看背景图片,有些设备会模糊。
用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢?
经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,所以苹果当初就把iPhone4的960640分辨率,在网页里只显示了480320,这样devicePixelRatio=2。现在android比较乱,有1.5的,有2的也有3的。
想让图片在手机里显示更为清晰,必须使用2x的背景图来代替img标签(一般情况都是用2倍)。例如一个div的宽高是100100,背景图必须得200200,然后background-size:contain;,这样显示出来的图片就比较清晰了。
代码可以如下:
background:url(../images/icon/all.png)no-repeatcentercenter; -webkit-background-size:50px50px; background-size:50px50px;display:inline-block;width:100%;height:50px;
或者指定background-size:contain;都可以,大家试试!
2、图片加载
若您遇到图片加载很慢的问题,对这种情况,手机开发一般用canvas方法加载:
具体的canvasAPI参见:http://javascript.ruanyifeng.com/htmlapi/canvas.html
下面举例说明一个canvas的例子:
<li><canvas></canvas></li>
js动态加载图片和li总共举例17张图片!
vartotal=17; varzWin=$(window); varrender=function(){ varpadding=2; varwinWidth=zWin.width(); varpicWidth=Math.floor((winWidth-padding*3)/4); vartmpl=''; for(vari=1;i<=totla;i++){ varp=padding; varimgSrc='img/'+i+'.jpg'; if(i%4==1){ p=0; } tmpl+='<listyle="width:'+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px;"><canvasid="cvs_'+i+'"></canvas></li>'; varimageObj=newImage(); imageObj.index=i; imageObj.onload=function(){ varcvs=$('#cvs_'+this.index)[0].getContext('2d'); cvs.width=this.width; cvs.height=this.height; cvs.drawImage(this,0,0); } imageObj.src=imgSrc; } } render();
3、假如手机网站不用兼容IE浏览器,一般我们会使用zeptojs。zeptojs内置Touchevents方法,具体可以看http://zeptojs.com/#Touchevents
看了一下zeptio新版的API,已经支持IE10以上浏览器,对zeptojs可以选择使用!
4、防止手机中网页放大和缩小,这点是最基本的,最为手机网站开发者来说应该都知道的,就是设置meta中的viewport
还有就是,有些手机网站我们看到如下声明:
<!DOCTYPEhtmlPUBLIC"-//WAPFORUM//DTDXHTMLMobile1.0//EN""http://www.wapforum.org/DTD/xhtml-mobile10.dtd">