移动端详解

1. PC 端和移动端的区别

(1)页面承载量不同,

PC端屏幕大,内容多,而移动端屏幕相对较小,承载的内容也会因此有很大的差异,当一款成熟的 PC 端产品移植到移动端,会需要考虑什么功能应该被砍掉,什么功能应该被保留。内容也因该更加简练。

(2)交互方式不同,

PC 端采用鼠标点击的方式,移动端采取手指触碰的方式。在设计时,PC端往往更多考虑用户视觉浏览路线,而移动端则会更多地考虑手指交互习惯,人体工学等。

(3)使用场景不同

PC 端使用场景一般都比较固定,而移动端则有很大的不同,可能是走路的时候,等人,坐公交/地铁途中,上班、上课休息期间,睡觉之前等等。不同的使用环境肯定会导致不同的设计方案,PC 端因为使用环境相对固定,设计方案会更加清晰。而移动端的场景千变万化,很难同时兼顾所有的场景,只能找出最主要的目标用户的使用场景,以此为主要目标点,同时兼顾次要目标点来进行设计。

(4)网络接入方式

PC 端一般连结宽带或者 wifi,而移动端则连接2G/3G/4G等,需要消耗流量。因此再 PC 的用户一般不会考虑页面消耗的流量,而移动端产品,如果消耗流量过大,用户会因为流量费用/加载速度等原因而不愿意或者根本不能使用。

注意图片的适配和压缩。

注意点:

1. PC 端和移动端的区别,

2. PC 端没有触摸的各种事件,移动端有;但是还移动端没有鼠标移动事件,PC 端有;

3. PC 端最常用的布局是固定宽度 980px(也有 960px ,1000px,1200px);而在移动端,因为有很多网页是可以横屏看,也可以竖屏看,并且很多屏幕的分辨率都是不一样的,所以只要牵涉到移动端的都要考虑响应式布局;

4. PC 端考虑更多的是浏览器的兼容性,但是再移动端考虑更多的是手机兼容。

1. PC 端主要是 px 单位 

2. rem:1rem= 当前文档的根元素(html)的fontsize大小

布局上 flex布局

事件上 touchstart,touchmove,touchend

fontsize.js 根据屏幕宽度来调整 根元素(html)的 fontsize

//designWidth:设计稿的实际宽度值,需要根据实际设置
//maxWidth:制作稿的最大宽度值,需要根据实际设置
//这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最大宽度,
//例如设计稿为375,最大宽度为1000,则为(375,1000)
(function(designWidth, maxWidth) {    
    var doc = document,        
    win = window;    
    var docEl = doc.documentElement;    
    var tid;    
    var rootItem,rootStyle;    
    function refreshRem() {        
        var width = docEl.getBoundingClientRect().width;        
        if (!maxWidth) {            
            maxWidth = 540;        
        };        
        if (width > maxWidth) {            
            width = maxWidth;        
        }        
        //与淘宝做法不同,直接采用简单的rem换算方法1rem=100px        
        var rem = width * 100 / designWidth;        
        //兼容UC开始        
        rootStyle="html{font-size:"+rem+'px !important}';        
        rootItem = document.getElementById('rootsize') || document.createElement("style");        
        if(!document.getElementById('rootsize')){        
            document.getElementsByTagName("head")[0].appendChild(rootItem);        
            rootItem.id='rootsize';        
        }        
        if(rootItem.styleSheet){        
            rootItem.styleSheet.disabled||(rootItem.styleSheet.cssText=rootStyle)        
        }else{        
            try{rootItem.innerHTML=rootStyle}catch(f){rootItem.innerText=rootStyle}        
        }        
        //兼容UC结束        
        docEl.style.fontSize = rem + "px";    
    };    
    refreshRem();//要等 wiewport 设置好后才能执行 refreshRem,不然 refreshRem 会执行2次;    
    win.addEventListener("resize", function() {        
        clearTimeout(tid); //防止执行两次        
        tid = setTimeout(refreshRem, 300);    
    }, false);    
    win.addEventListener("pageshow", function(e) {        
        if (e.persisted) { // 浏览器后退的时候重新计算            
            clearTimeout(tid);            
            tid = setTimeout(refreshRem, 300);        
        }    
    }, false);    
    if (doc.readyState === "complete") {        
        doc.body.style.fontSize = "16px";    
    } else {        
        doc.addEventListener("DOMContentLoaded", function(e) {            
            doc.body.style.fontSize = "16px";        
        }, false);    
    }
})(375, 1000);复制代码


zepto 

可以理解为移动端的 jQuery,用法与 jQuery 一样

jQuery 在移动端也可以用,但是存在以下问题:

(1)click延迟 300ms (2)jquery.min.js 有94k,消耗性能;

(1)tap 移动端的click事件
'singleTap' , 'longTap' $("button").on("tap",function(){ console.log(1)}) (
2)swipe 滑动事件 
'swipeLeft' , 'swipeRigth' , 'swipeUp' , 'swipeDown' , 'doubleTap',复制代码

$(".box").on("touchmove",function(e){                
    e.preventDefault() //swipe 是基于touch,所以必须先阻止掉touch事件            
})            
$("div").on("swipeDown",function(e){                
    console.log(3)            
})复制代码


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值