移动端web开发 浅析
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端比例为:1比1
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-widht、max-width和margin: 0 auto即可居中;
5. 物理像素,在移动端图片1:1显示可能会出现失真
iPhone 4:2:1 四个物理像素显示1px 压缩图片一倍可显示正常
iPhone 6s plus: 3:1 九个物理像素显示1px 高清屏

6. 基本事件
① touch事件 在addEventListener()中添加事件
(1)touchstart事件:手指触摸屏幕触发事件
(2)touchmove事件:手指在屏幕上滑动时连续触发事件
(3)touchend事件:手指离开屏幕触发事件 chrome模拟器在模拟手机touchend时可能会丢失事件,最好将事件绑定在window上
(4)touch的事件对象 event
dom.addEventListener (“touchstart” , function( event ) {
console.log(event);
})

targetTouches:页面上目标元素的所有当前触摸,元素外触摸点不包含
touches:页面上所有的触摸点
changedTouches: 页面上最新更改的所有触摸,在touchend事件中只记录changedTouches,targetTouches和touches都不会被记录
以上三个属性的数据类型都是数组
页面第一个触摸点信息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开发 浅析的更多相关文章
- 移动端 Web 开发前端知识整理
文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...
- 移动端web开发的一些知识点
整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 移动端web开发基础概念
最近在了解移动端web开发的相关知识,有些概念总是模糊不清,这次花费了一些时间整体的梳理了一遍. 分辨率 分辨率可以从显示分辨率与图像分辨率两个方向来分类.显示分辨率(屏幕分辨率)是屏幕图像的精密度, ...
- 移动端Web开发注意点
不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版 ...
- 移动端Web开发如何处理横竖屏
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...
- 移动端web开发技巧(转)
原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我 ...
- 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)
一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...
随机推荐
- python__基础 : 异常处理与自定义异常
异常处理方法一般为: try: ------code----- except Exception as e: # 抛出异常之后将会执行 print(e) else: # 没有异常将会执行 print( ...
- Laravel系列之CMS系统学习 — 角色、权限配置【1】
一.后台Admin模块 后台管理是有管理员的,甚至超级管理员,所以在设计数据表的时候,就会有2个方案,一个方案是共用users数据表,添加is_admin,is_superAdmin字段来进行验证,或 ...
- flask-login原理详解
最近发现项目中使用的flask-login中有些bug,直接使用官网的方式确实可以用,但仅仅是可以用,对于原理或解决问题没有什么帮助,最近通过查看网上资料.分析源码.通过demo.从零开始总结了fla ...
- Django+vue在腾讯云上搭建前后端分离项目
最近打算用Django+vue搭建一个个人主站,在此记录一下搭建项目的整个过程. 一 开发环境: 腾讯云Centos 7 Python 3.7 Django ...
- PHP.16-PDO
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能. 注意利用 PDO 扩展自身并不能实现任何数 ...
- 关于RTKLIB资料整理和学习
最近要做一个关于rtk的项目,采用rtklib源码基础上进行移植,由于我在嵌入式方面和rtk方面都是小白,所以无论是嵌入式通信还是rtk都得从头学起.嵌入式方面打算用stm32进行移植,现在已经基本掌 ...
- 2753: [SCOI2012]滑雪与时间胶囊
2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 2633 Solved: 910 Descriptio ...
- Kotlin 二分法算法游戏--猜价格
本人最新想学习算法,算法是提高程序性能的关键! 程序就是数据结构和算法! 写了一个二分法的游戏,供大家参考: 当然,语言基于kotlin import java.util.* /** * Create ...
- java.sql.SQLException: Field 'id' doesn't have a default value异常
在做mybatis插入的时候报了这个错误,百度了下,貌似是因为这个健没有设置值且不是自增类型的. java.sql.SQLException: Field 'id' doesn't have a de ...
- iOS-QQ好友列表实现
0.QQ好友列表实现 0.首先说说实现思路 自定义UITableView,每一个分组都是一个UITableViewHeaderFooterView,然后自定义cell,这里分组的实现主要是自定义UIT ...