M端总结
最近在项目开发过程中涉及到了移动端,现在对此进行总结。
在此次M端的开发过程中,遇到了许多问题,在此进行一次总结,希望大家在以后的开发过程
中能尽量规避类似的问题,提高开发效率和代码质量。
一、布局
1.移动端开头
<meta name="viewport" content="width=device-width, initial-scale=1,
minimum-scale=1.0, maximum-scale=1.0"/>
一般在写移动端时,会在head标签内添加上面这个meta标签,它的作用在于给手机端建立
一个viewport层,这样才能更好的去展现页面效果。比如有的手机分辨率达到了
1920*1080,这种高分辨率一般在电脑大屏中出现,那么手机那么小的手机,为什么能达到
1920*1080这么高的分辨率呢?因为他的dpi或ppi高。
注释:dpid:ots per inch,最初用于衡量打印物上每英寸的点数密度,就是打印机可以在一
英寸内打多少个点。当dpi的概念用在计算机屏幕上时,就称之为ppi。ppi和dpi是同一个概
念,Android比较喜欢使用dpi,IOS比较喜欢使用ppi。
1.单位
dom布局单位的问题,移动端的布局与PC端的布局有所差别,在PC端我们习惯于用px设置
固定宽高的值,而移动端的重点是自适应,所以在许多地方采用的是设置百分比或者以rem
为单位来设置宽高。 宽度一般设置百分比,高度设置rem。
一定要区分清楚什么情况下使用固定大小,什么情况下使用自适应大小。文字类基本都使用
固定大小,图片及背景图片类可酌情考虑自适应大小,具体情况请结合实际,不清楚的地方
可先与同事沟通,或者与产品沟通,务必做到了解需求后再写代码。
当采用rem作为单位时,如果是sublime text编辑器,可以先安装一个cssrem插件,方便自
动对rem单位进行换算。
2.弹性布局
在移动端里比较常见的布局有弹性布局,也就是display:box和boxflex;利用这两个属性可以
较方便的分配一行内的子元素;简单的理解就是能够按等分划分元素。
例如:
2016/3/29 M端总结 马克飞象 专为印象笔记打造的Markdown编辑器
https://maxiang.io/# 2/6
<ul style="display:box">
<li style="box-flex:1">1</li>
<li style="box-flex:2">2</li>
<li style="box-flex:1">1</li>
</ul>
结合上面的代码,我们可以这样理解,当把ul设置为弹性盒子时,则ul的三个子元素li都会被
分配各自的比重,我们可以把ul当成单位1,并被划分为了四等分,其中第一个和最后一个li
各占四分之一,中间的li占二分之一。
display:box兼容写法
display: -webkit-box;
display: -moz-box;
display: -o-box;
display: -ms-flexbox;
display: flex;
display:box兼容写法
-moz-box-flex: 1;
-webkit-box-flex: 1;
-o-box-flex: 1;
-ms-flex: 1;
flex: 1;
3.boxsizing布局
boxsizing布局比较适合用在自适应场景的开发。比较常见的例如:
这种情况下,把边框长度算入盒模型的宽度中是比较方便的。
4.css3属性
移动端对css3的支持非常给力,除了部分属性需要添加前缀。而且据说移动端使用css3的性
能比css2要高,所以大家优先使用css3属性,同时css3用起来有多方便也就不需要我说了。
二、js代码
技术选型:zepto.js+swiper.js+echarts.js+common.js
1.zepto.js
2016/3/29 M端总结 马克飞象 专为印象笔记打造的Markdown编辑器
https://maxiang.io/# 4/6
Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api。 如
果你会用jquery,那么你也会用zepto。
正如zepto自己所说的那样,它只是个轻量级的js库,所以我们常用的一些jq方法它可能没有
提供,尤其是animate动画,当然,这个并不是特别要紧,大部分的动画都可以直接用css3
动画来实现,少部分有需求的动画,可以用原生js自行定义。
2.swiper.js
swiper是一款专门针对移动端所开发的开源触摸滑动插件,能够满足移动端大部分滑动特效
需求。而且swiper提供了基于zepto开发的插件,更加轻量。swiper的使用也比较方便,基础
引用方式如下:
var swiper = new Swiper(".swiper-container", {
slidesPerView: 3,
setWrapperSize :true
});
swiper常用API:
(1) slidesPerView 设置一个屏幕内元素显示的个数
(2) setWrapperSize 设置swiper自动计算对象的总长度
(3) direction 设置横向或者纵向显示
(4) pagination 设置小图标
3.echarts.js 3.0
echarts从3.0版本开始支持移动端图表。
4.common.js
简单列举common.js中的一些方法:
(1) common.backtop() 返回顶部按钮效果
(2) common.divselect(divselectid,inputselectid,height) 模拟下拉表单
(3) common.touchList(content,num) 调用swiper,左右滑动效果
(4) common.ajax(method, type, params, callback) 异步请求的通用方法
(5) common.getDate(data) 根据时间戳(秒)生成时间 1436412956699 > 20150709 12:00
5.Js代码规范
每写一个新的js方法,都要写好注释,形式如下图:
2016/3/29 M端总结 马克飞象 专为印象笔记打造的Markdown编辑器
https://maxiang.io/# 5/6
每一个事件,最好也简单的写上注释,如下图:
6.如何异步获取并渲染数据
var example = function(){
//定义了一个对象
}
(1)方法入口,例如:
2016/3/29 M端总结 马克飞象 专为印象笔记打造的Markdown编辑器
https://maxiang.io/# 6/6
house:function(){
var n = 1,
nickname,
typeid;
nickname = $(".nickname").text();
typeid = $(".typeid").val();
//调用发送异步请求的方法
example.sendHouse();
//除了调用请求方法,也可以在这里写一些相关的操作事件,例如点击加载更多
$(".btn-more").click(function(){
n++;
example.sendHouse();
})
}
(2)发送异步请求,例如:
sendHouse:function(nickname,typeid,pageIndex){
//调用通用异步请求方法
common.ajax("Image.s.List","post",{buildnickname:nickname||"bl
sd",typeid: Typeid||"0",PageSize: pagesize||"5",Pageindex: pageinde
x||"0",Requrl:"http://192.168.100.101:8088"},function(res,success){
if(example.loadHouseInfo && res[success]){
example.loadHouseInfo(res[success]);
}else{
console.log("没有提供函数调用...");
}
})
}
加群 474471759交流
M端总结的更多相关文章
- 移动端之Android开发的几种方式的初步体验
目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- 关于如何提高Web服务端并发效率的异步编程技术
最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...
- Socket聊天程序——服务端
写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...
- 移动端1px边框
问题:移动端1px边框,看起来总是2倍的边框大小,为了解决这个问题试用过很多方法,用图片,用js判断dpr等,都不太满意, 最后找到一个还算好用的方法:伪类 + transform 原理是把原先元素的 ...
- 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断
概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...
- zookeeper源码分析之五服务端(集群leader)处理请求流程
leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
- zookeeper源码分析之一服务端启动过程
zookeeper简介 zookeeper是为分布式应用提供分布式协作服务的开源软件.它提供了一组简单的原子操作,分布式应用可以基于这些原子操作来实现更高层次的同步服务,配置维护,组管理和命名.zoo ...
- 创建APPID&&部署服务端教程
创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...
随机推荐
- [IOS] 'Double' is not convertible to 'CGFloat'
在做一个对象旋转的时候,要求转动的弧度角, 这个地方报错,如题的错误,其实是类型转换的问题,swift不能静静的做类型转换,一定要显式的转换 typeTableView?.transform=CGAf ...
- >hibernate.cfg.xml的一些常用配置
1.数据库的基本配置信息 hibernate.connection.driver_class是配置数据库驱动 hibernate.connection.url是配置数据库的url hibernate. ...
- linux用户不在sudoers文件中
*** is not in the sudoers file. This incident will be reported." (用户不在sudoers文件中--) 处理这个问题很简单 ...
- 页面制作部分之PS切图
页面制作部分之PS切图 <--本标签下,通过页面制作.页面架构.javascript程序设计.DOM编程艺术.产品前端架构五部分来分享总结笔记,总结笔记会陆续分享--> 网页设计在技术层面 ...
- SQL Server2008附加数据库之后显示为只读时解决方法
啰嗦的话就不多说了,直入主题吧! 方案一: 碰到这中情况一般是使用的sa账户登录的,只要改为Windows身份验证,再附加数据库即可搞定. 方案二: 使用sa登录SQL Server2008附加数据库 ...
- 一起来测试天兔Lepus3.8 Beta版本的MSSQL部分
一起来测试天兔Lepus3.8 Beta版本的MSSQL部分 产品介绍:http://www.lepus.cc/下载地址:http://www.lepus.cc/soft/18手册地址:http:// ...
- SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题
SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题 基于物理块变化的复制,没有并行也是很快的. 逻辑复制的日志是按事务结束的时间排序的,而物理复制是与事务无关的, ...
- 你get了无数技能,为什么一事无成
前几日看到阮一峰老师的发的一句话,颇有感慨,「你只是坐在电脑前,往网上发表了一段文字或者一张图片,随便什么,就能够接触到多少陌生的灵魂.这就是我热爱互联网的原因」.我打心底认为这是一个最好的时代, ...
- Kinect for Windows SDK开发学习相关资源
Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应用学习中,提供了一种不同于传统的鼠标,键盘及触摸的无接触的交互方式,在某种程度上实现了自然交互界面的理想,即 ...
- 程序猿尤其是.NET程序员所需要注意的网站资源
我觉得一个程序员 需要 对 技术 和 行业 两方面同时具有极大热情和注意力才能让自己在一个新的台阶. 有些程序员就是对技术有着极大的热情但是行业完全不注意,这样我感觉只能成为一个专家,并不能让自己真正 ...