1. viewport

viewport在移动端承载网页的区域:具有默认格式

设置viewport属性,适配移动端设备

主流设置:

<meta name = ”viewport” content = ”width = device-width , initial-scale = 1.0 , user-scalable = 0”>

主流设置快捷键:meta: vp  tab

name = ”viewport”    viewport 设置入口格式

width = device-width  设置viewport宽度与移动设备宽度相同

initial-scale = 1.0     初始化缩放比例与pc端比例为:11

user-scalable = 0  是否允许用户自行缩放,可设置值:1,0或者yes,no    0为不允许

如果设置了用户不能自行缩放,那么下面两个参数没有意义

maximum-scale    用户最大缩放比,可设置大于0的数字

minimum-scale    用户最小缩放比,可设置大于0的数字

非主流设置:

参考taobao,判断屏幕尺寸,设置动态设置initial-scale

2.  base.css设置

reset css 重置标签的默认样式代码如下:

*,::before,::after {

    padding:0;  margin:0; 

    -webkit-tap-highlight-color: transparent;  移动端特有清除高亮

      -webkit-box-sizing: border-box;

    box-sizing: border-box;     用两种写法,兼容处理

}

body {

    font-size: 14px;

    color: #333;

    font-family: “MicroSoft YaHei” , “sans-serif”; 这是设备默认样式

}

ul,ol {

    list-style: none;

}

a {

    text-decoration: none;

    color: #333;

}

a: hover {

    color: #333;

}

input , textarea {

    border: none;    

    outline: none;      选中时没有边框

    resize: none;       不允许用户自行拉伸

       -webkit-appearance: none;     清除浏览器给input自带的样式,设置组件默认样式为空

}

.f_left {

    float: left;

}

.f_right {

    float: right;

}

.clearfix::before,.clearfix::after {     清除浮动

    content: ”.”;

    line-height: 0;

    height: 0;

    display: block;

    visibility: hidden;

    clear: both;

}

3. 设置动态页面的容器div  类名可设为:.layout

.layout {

          min-width: 300px;     适配小屏幕设备

          max-width: 640px;    设计图的基本格式

}

4. 部分CSS格式说明

移动端input格式设置,调用输入法时,enter键变为搜索键

        <form action="#">

            <input type="search"  placeholder="请输入"/>

        </form>

position: fixed 设置后定位失效,fixed是以window为基准的

要想实现效果,给fixed元素添加一个子盒子,给子盒子设置min-widhtmax-widthmargin: 0 auto即可居中;

5. 物理像素,在移动端图片1:1显示可能会出现失真

iPhone 42:1  四个物理像素显示1px   压缩图片一倍可显示正常

iPhone 6s plus:  3:1  九个物理像素显示1px    高清屏

6. 基本事件

touch事件    addEventListener()中添加事件

1touchstart事件:手指触摸屏幕触发事件

2touchmove事件:手指在屏幕上滑动时连续触发事件

3touchend事件:手指离开屏幕触发事件  chrome模拟器在模拟手机touchend时可能会丢失事件,最好将事件绑定在window

4touch的事件对象 event

dom.addEventListener (“touchstart” , function( event ) {

              console.log(event);

})

targetTouches页面上目标元素的所有当前触摸,元素外触摸点不包含

touches页面上所有的触摸点

changedTouches 页面上最新更改的所有触摸,在touchend事件中只记录changedTouchestargetTouchestouches都不会被记录

以上三个属性的数据类型都是数组

页面第一个触摸点信息touches[0]

dom.addEventListener (“touchstart” , function( event ) {

              console.log(event.touches[0]);

})

可以根据相关数据获取触摸点的位置

clientX:触摸点在浏览器视口中的X坐标

clientY:触摸点在浏览器视口中的Y坐标

pageX:触摸点在页面中的x坐标

pageY:触摸点在页面中的y坐标

screenX:触摸点在屏幕中的x坐标

screenY:触摸点在屏幕中的y坐标

过渡结束事件transitionEnd  webkitTransitionEnd过渡结束后触发

dom.addEventListener(“transitionEnd” , function( e ){  })

dom.addEventListener(“webkitTransitionEnd” , function( e ){  })

动画结束事件animationEnd  webkitAnimationEnd动画结束后触发

dom.addEventListener(“animationEnd” , function( e ){  })

dom.addEventListener(“webkitAnimationEnd” , function( e ){  })

click事件

click事件在移动端有300ms的延迟,在touchend事件之后发生,有300ms延迟所以用户体验并不好

测试代码如下:

dom.addEventListener("touchstart", function () {

console.time("click");    标记一个时间

 console.time("touchend")

});

dom.addEventListener("touchend", function () {

console.timeEnd("touchend");    计算该标记执行间隔时间

});

dom.addEventListener("click", function () {

 console.timeEnd("click");    计算该标记执行间隔时间

})

封装一个tap事件让点击屏幕150ms内触发,且不触发touchmove事件:

tabb.tap = function (dom, callback) {

        if (dom && typeof dom == 'object') {

            var isMove = false;

            var startTime = 0;

            dom.addEventListener('touchstart', function (e) {

                startTime = Date.now();

            });

            dom.addEventListener('touchmove', function (e) {

                isMove = true;

            });

            dom.addEventListener('touchend', function (e) {

               if (!isMove && ( Date.now () – startTime ) < 150) {

                callback && callback(e);

               }

                isMove = false;          重置参数

                startTime = 0;

            });

    }

}

7.  zepto.js

使用语法与jQuery基本相同,可理解为轻量化、模块化的jQuery

使用引包增加功能:

1)包含五个模块  core  event  form  ajax  ie

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

2)扩展性选择器模块

    <script src="zepto/selector.js"></script>

3)动画模块

<script src="zepto/fx.js"></script>

4)移动端事件模块

<script src="zepto/touch.js"></script>

8.  响应式开发

媒体媒介media query 设置不同宽度下的样式:and之后一定要加空格

0-768px 移动端显示:   

@media screen and(空格)(max-width: 768px){

           .container{ width: 100%; background: red };

}

768px-992px 小屏设备显示:

@media screen and (min-width:768px) and (max-width: 992px){

           .container{ width: 100%; background: yellow};

}

992px-1200px 中屏设备显示:

@media screen and (min-width:992px) and (max-width: 1200px){

           .container{ width: 100%; background: green};

}

1200px- 大屏设备显示:

@media screen and(空格)(min-width: 1200px){

           .container{ width: 100%; background: black };

}

9.  bootstrap

英文网:http://getbootstrap.com/

中文网:http://www.bootcss.com/

10.  结构性选择器

①  “+”号选择器

div + div {}   .class + div {}

选择目标元素div或者.class的下一个元素div会被选中

“~”号选择器

div ~ div {}   .class ~ div {}

选择目标元素div或者.class后面的所有同级元素div会被选中

11.  向应式开发后台数据渲染underscore.js

移动端web开发 浅析的更多相关文章

  1. 移动端 Web 开发前端知识整理

    文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...

  2. 移动端web开发的一些知识点

    整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...

  3. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  4. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  5. 移动端web开发基础概念

    最近在了解移动端web开发的相关知识,有些概念总是模糊不清,这次花费了一些时间整体的梳理了一遍. 分辨率 分辨率可以从显示分辨率与图像分辨率两个方向来分类.显示分辨率(屏幕分辨率)是屏幕图像的精密度, ...

  6. 移动端Web开发注意点

    不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版 ...

  7. 移动端Web开发如何处理横竖屏

    <!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...

  8. 移动端web开发技巧(转)

    原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我 ...

  9. 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)

    一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...

随机推荐

  1. netty-socket.io点对点通讯和聊天室通讯

    netty-socketio是基于netty的socket.io服务实现,可以无缝对接前端使用的socketio-client.js. 相对于javaee的原生websocket支持(@serverE ...

  2. JavaScript 事件机制

    1 什么是事件 JavaScript 使我们有能力创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数的事件.比方说,我 ...

  3. 第4章 HDFS操作

    目录 4.1 命令行操作 4.2 Java API操作 4.2.1 创建Java工程 4.2.2 读取数据 4.2.3 创建目录 4.2.4 创建文件 4.2.5 删除文件 4.2.6 遍历文件和目录 ...

  4. Hive 数据实战

    需求 remote_addr 用户IP 1.用于根据地址确认区域 2.用于统计来自同一个(外网)用户的访问数量 time_local 用户访问时间 1.分析用户访问时间段 2.合理安排客服上班时间 r ...

  5. 十三、MySQL之IDE工具介绍及数据备份

    一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...

  6. P3819 松江1843路(洛谷月赛)

    P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...

  7. 微信支付 h5

    Android开发要点说明 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID.由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付. ...

  8. Windows系统安装测试redis

    因本人电脑是windows系统,从https://github.com/ServiceStack/redis-windows下载了兼容windows系统的redis 下载后直接解压到D:\redis目 ...

  9. 我的转行之路(电气转IT)------2018阿里校招面经

    博主本专业电气,今年3月下定决心转向互联网行业,本来想依仗自己比较自信的学习能力自学成才的,不过学了一段时间感觉还是需要一个人来指点,不仅仅是指点一些技术性的问题,更是需要有人来指点一下方向性的问题. ...

  10. GCD那些事儿

    GCD GCD,全名Grand Central Dispatch,中文名郭草地,是基于C语言的一套多线程开发API,一听名字就是个狠角色,也是目前苹果官方推荐的多线程开发方式.可以说是使用方便,又不失 ...