移动端H5页面制作规范

计量单位的使用

css的计量单位有三种选择:

  • px: 固定的相素值
  • em: 相对父级元素的font-size设置来作为当前元素1em所代表的像素值,如父节点的font-size:10px,当前节点的font-size:1.2em,则当前节点的font-size实为12px;
  • rem:相对根节点html的font-size设置来作为当前元素1rem所代表的像素值,与em的区别就是rem的基本度量单位与父节点无关,只与根节点font-size的设置有关,如设置html{font-size:10px;}后当前dom所有节点的1rem都表示10px;

移动端开发中我们使用rem作为基本计量单位,同时将根节点默认字号大小设为font-size:62.5%,因移动端浏览器默认字号大小为16px;16*62.5%刚好为10px; 具体设置方法及使用示例

html{font-size:62.5%;/*刚好为10px;*/}
#example{font-size:1.2rem}/*设置#example的字体大小为12px;*/
#example div{font-size:1.4rem; width:10rem;height:10rem}/*设置#example子节点div的字体大小为14px;宽度为100px;高度100px*/
  • 安卓下<textarea>标签的内容字体大小不支持rem设置,如有需要使用响应式及px单位设置其字体大小,暂时还未找到具体原因

不同分辨率的终端

在对主流手机终端进行统计得出,大部分手机的device-width为320px、360px、375px、384px、400px、414px,另外安卓pad的device-width为600px\800px。 手机屏幕分辨率宽度则在320px-1080px间,有少部分手机已经达到1152px和1440px。PS:ipad访问移动端建议跳转去对应的PC页面。

viewport设置

在移动端开发中,我们使用如下viewport设置

<!--viewport的设置-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

注:device-width实际上并不等于设备宽度,而是css宽度,它是根据设备屏幕宽度和屏幕像素密度换算得出的用于网页显示的css宽度

移动端设计稿750px*1134px的制作规范

css部分
/*reset.less*/
/* CSS Document */
html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;  font-size:62.5%;}
ul,li,div,p,body,h1,h2,h3,h4,h5,h6,dl,dt,dd{margin:0;padding:0;}
li{list-style:none;}
a{text-decoration:none; color: #2a2a2a; }
input{ -webkit-appearance:none;outline:none}
*{outline: none; webkit-focus-ring-color: rgba(0, 0, 0, 0);-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;}
.hide{display:none;}
body, html {width: 100%; font-family: "Microsoft YaHei","Helvetica Neue",Arial, HelveticaNeue, Helvetica, "BBAlpha Sans", sans-serif;font-weight: normal;display: -webkit-box;-webkit-box-orient: vertical; -webkit-box-align: center;}

/* *{-webkit-backface-visibility: hidden;-moz-backface-visibility: hidden;-ms-backface-visibility: hidden;backface-visibility: hidden;} 用于解决某些情况下出现闪屏的问题,若无则不加*/
body{opacity: 1;-webkit-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in; }
p,a,li{font-size:1.2rem; color:#434343}
html{ font-size: 312.5%; } 
@media screen and (max-width:359px) and (orientation:portrait) {
    html { font-size: 266.67%; } 
}
@media screen and (min-width:360px) and (max-width:374px) and (orientation:portrait) {
    html { font-size: 300%; } 
}
@media screen and (min-width:384px) and (max-width:399px) and (orientation:portrait) {
    html { font-size: 320%; } 
}
@media screen and (min-width:400px) and (max-width:413px) and (orientation:portrait) {
    html { font-size: 333.33%; } 
}
@media screen and (min-width:414px) and (max-width:431px) and (orientation:portrait){
    html { font-size: 345%; }
}
@media screen and (min-width:432px) and (max-width:479px) and (orientation:portrait){
    html { font-size:360%; }
}
@media screen and (min-width:480px)and (max-width:639px) and (orientation:portrait){
   html{ font-size:400%;}
} 
@media screen and (min-width:640px) and (orientation:portrait){
   html{ font-size:533.33%;}
}

例如750px设计稿上320px*200px字体大小为32px的区域样式为:

html{ font-size: 312.5%; } 
.div{
    width:3.2rem;
    height:2rem;
    font-size:0.32rem    
}
js部分

主要处理短屏下缩放,以及初始化时固定页面大小,防止竖屏下弹出键盘或横屏时页面发生缩放的情况

 var initScreen=function(callback){//初始化html  font-size
        $("html").css("font-size",document.documentElement.clientHeight/document.documentElement.clientWidth<1.5 ? (document.documentElement.clientHeight/603*312.5+"%") : (document.documentElement.clientWidth/375*312.5+"%")); //单屏全屏布局时使用,短屏下自动缩放
        //$("html").css("font-size",document.documentElement.clientWidth/375*312.5+"%");//长页面时使用,不缩放
        if(callback)callback();
    }


function _onorientationchange(e){
    if(window.orientation==90||window.orientation==-90){
        $("#forhorview").css("display", "-webkit-box");  //显示竖屏浏览提示框
    }else{//竖屏下恢复默认显示效果
        var st=setTimeout(initScreen,300);
         $("#forhorview").css("display", "none");    
    }
    _resize(e);
}
$(function(){
    initScreen();
    window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize",     function(e){_onorientationchange(e);}, false);
})

html示例

<!doctype html>
<html>
    <head>
        <title>标题</title>
        <meta name="keywords" content="关键字" />
        <meta name="description" content="描述" />
        <meta name="format-detection" content="telephone=no" />
        <meta name="format-detection" content="address=no" />
        <!--for baidu 识别移动端页面并禁止百度转码-->
        <meta name="applicable-device"content="mobile"> 
        <meta http-equiv="Cache-Control" content="no-transform" />
        <meta http-equiv="Cache-Control" content="no-siteapp" />
        <!--viewport 设置,如果页面实际情况不允许缩放请加上,user-scalable=no-->
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <link rel="stylesheet" type="text/css" href="css/index.less" />
    </head>
    <body>
   
        <div id="forhorview">
            <p>推荐使用竖屏浏览哦~</p>
        </div>

        <script src="js/zepto.min.js"></script>
    </body>
</html>

移动端开发细节和优化

在移动端使用新的css3样式代替原来在PC上的开发习惯

  • 新的布局实现方式:使用display:box、box-flex代替float\display:inline-block; 实现更强大、更完美的流体布局,尤其在宽度为100%的布局中,实现横向并排元素宽度的自动伸缩以及水平垂直居中平均分布、首尾分布排列等。
  • 垂直居中的实现方式:使用display:-webkit-box;-webkit-box-align: center;实现垂直居中。
  • 尽量使用border-radius,box-shadow,text-shadow等css3样式实现诸如圆角、渐变色、盒子投影、字体投影,减少使用图片。
  • 对于单色的icon图标,我们将会整理出一套常用图标,并制作成字体,利用css3的@font-face使用自定义字体导入,这样的话,可以像修改字体一样随意地修改图标的颜色、大小、背景色、特殊效果(如投影)等,而不再需要每一种颜色就需要切一份图片。
  • 利用-webkit-transform:rotate(90deg)来获取旋转了不同角度的icon,避免每个角度需要切一张图片
  • 在动画中,利用css3动画属性如-webkit-transform:translate(10px,12px)来改变元素的偏移位置,减少使用left和top来做位移动画
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349