PC端与移动端页面适配

PC考虑的是浏览器的兼容性,而移动端开发考虑的更多的是手机兼容性,因为目前不管是android手机还是ios手机,一般浏览器使用的都是webkit内核,所以说做移动端开发,更多考虑的应该是手机分辨率的适配,和不同操作系统的略微差异化。
针对跨终端适配主要包括两种方法:

  • 第一种是通过响应式或页面终端判断去实现一套资源适配所有终端;
    主要采用jQuery+响应式布局+CSS预处理器(sass和less);
    这种方法只需要维护一套页面,成本比较低,通过响应式布局来实现适配各种终端设备;因为需要加载适配各个终端的各个资源,部分交互效果需要在页面中作终端判断,影响页面响应速度。如果图片资源为一套的话,会出现页面在超高分辨率终端设备打开时图片失真的问题
  • 第二种是通过终端判断分别调取不同的资源以适配所有终端。
    采用zepto+响应式+CSS+终端适配
    这种方法可以根据各种不同的终端做个性化设计,例如移动端的加速度感应以及各种手势实现的效果,PC端可以不受流量限制等。相应的会增加维护成本。

浏览器的兼容性问题及解决办法

  • 不同浏览器的标签默认的padding与margin不同
    最常见也是最容易解决的问题,只需要在CSS里写入*{margin:0;padding:0}
  • 块属性标签浮动且有横向margin的情况下,在ie6显示margin比设置的大
    在float的标签样式控制中加入 display:inline;将其转化为行内属性
  • 超链接点击后hover样式失效
    使用正确的书写顺序a:link; a:visited; a:hover; a:active.
  • IE6不支持PNG格式透明背景
    使用gif格式图片
  • IE5-8不支持opacity
    解决办法:选择器{
    opacity: 0.4;filter: alpha(opacity=60); -ms-filter: “progid:DXImageTransform.Microsoft.Alpha(Opacity=60)”;
    }
JavaScript兼容
  • 滚动条:
document.documentElement.scrollTop||document.body.scrollTop
  • 获取样式兼容
function getStyle(dom, styleName){

return dom.currentStyle?dom.currentStyle[styleName]

getComputedStyle(dom)[styleName];

}
  • 网页可视区域兼容
window.innerHeight || document.documentElement.clientHeight

window.innerWidth || document.documentElement.clientWidth
  • 事件对象兼容
evt = evt || window.event;
  • 阻止事件冒泡兼容
event.stopPropagation?event.stopPropagation():event.cancelBubble=true;
  • 阻止默认行为兼容
evt.preventDefault?evt.preventDefault():evt.returnValue=false;
  • 事件监听兼容
if(document.all){
    dom.attactEvent(“onclick”, fn);
} else {
    dom.addEventListener(“click”, fn);
}
  • 事件目标对象兼容
var t = event.target || event.srcElement;