移动端网页开发之注意点

有如下几点:

1、webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用:

//	第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度
比例是1.0,且不允许用户点击屏幕放大浏览
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">

//	第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览
<meta content="yes" name="apple-mobile-web-app-capable">

//	第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式
<meta content="black" name="apple-mobile-web-app-status-bar-style">

//	第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码
<meta content="telephone=no" name="format-detection">

2、放弃CSS float属性:

  • 在项目开发过程中可以会遇到内容排列显示的布局,假如你遇见这样的视觉稿,建议你放弃float,可以直接使用: display:inline-block

3、HTML5标签的使用:

  • 在开始编写webapp时,建议前端工程师使用HTML5,而放弃HTML4,因为HTML5可以实现一些HTML4中无法实现的丰富的WEB应用程序的体验,可以减少开发者很多的工作量,当然了你决定使用HTML5前,一定要对此非常熟悉,要知道HTML5的新标签的作用。比如定义一块内容或文章区域可使用section标签,定义导航条或选项卡可以直接使用nav标签等等。

4、利用CSS3边框背景属性:

  • 这个按钮有圆角效果,有内发光效果还有高光效果,这样的按钮使用CSS3写是无法写出来的,当然圆角可以使用CSS3来写,但高光和内发光却无法使用CSS3编写,
    这个时候你不妨使用-webkit-border-image来定义这个按钮的样式。
    -webkit-border-image就个很复杂的样式属性。

5、块级化a标签:

  • 保证将每条数据都放在一个a标签中,为何这样做?
  • 因为在触控手机上,为提升用户体验,尽可能的保证用户的可点击区域较大。

6、自适应布局模式:

  • 在编写CSS时,不建议前端工程师把容器(不管是外层容器还是内层)的宽度定死。为达到适配各种手持设备,我建议前端工程师使用自适应布局模式(如支付宝采用了自适应布局模式),因为这样做可以让你的页面在ipad、itouch、ipod、iphone、android、web safarik、chrome都能够正常的显示,你无需再次考虑设备的分辨率。

7、学会使用webkit-box:

  • 运用webkit为display属性提供了一个webkit-box的值,它可以帮助前端工程师做到盒子模型灵活控制

8、如何去除Android平台中对邮箱地址的识别:

<meta content="email=no" name="format-detection" />

9、如何去除iOS和Android中的输入URL的控件条:

  • 利用一句简单的javascript代码来实现这个效果:setTimeout(scrollTo,0,0,0);

10、如何关闭iOS中键盘自动大写

  • 在iOS中,当虚拟键盘弹出时,默认情况下键盘是开启首字母大写的功能的,根据某些业务场景,可能我们需要关闭这个功能,移动版本webkitinput元素提供了autocapitalize属性,通过指定autocapitalize=”off”来关闭键盘默认首字母大写

11、添加智能 App 广告条 Smart App Banner(IOS 6+ Safari):

<meta name="apple-itunes-app" content="app-id=myAppStoreID, 
affiliate-data=myAffiliateData, app-argument=myURL">

12、viewport模板:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<title>标题</title>
<link rel="stylesheet" href="index.css">
</head>
<body>
这里开始内容
</body>
</html>

13、移动端如何定义字体font-family:

三大手机系统的字体:

ios 系统

  • 默认中文字体是Heiti SC

  • 默认英文字体是Helvetica

  • 默认数字字体是HelveticaNeue

  • 无微软雅黑字体
    android 系统

  • 默认中文字体是Droidsansfallback

  • 默认英文和数字字体是Droid Sans

  • 无微软雅黑字体

winphone 系统

  • 默认中文字体是Dengxian(方正等线体)
  • 默认英文和数字字体是Segoe
  • 无微软雅黑字体
  • 各个手机系统有自己的默认字体,且都不支持微软雅黑 如无特殊需求,手机端无需定义中文字体,使用系统默认 英文字体和数字字体可使用 Helvetica ,三种系统都支持

/* 移动端定义字体的代码 */
body{font-family:Helvetica;}

14、移动端字体单位font-size选择px还是rem

对于只需要适配手机设备,使用px即可

对于需要适配各种移动设备,使用rem,例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备

  • rem配置参考:
html {font-size:10px}
@media screen and (min-width:480px) and (max-width:639px) {
    html {
        font-size: 15px
    }
}
@media screen and (min-width:640px) and (max-width:719px) {
    html {
        font-size: 20px
    }
}
@media screen and (min-width:720px) and (max-width:749px) {
    html {
        font-size: 22.5px
    }
}
@media screen and (min-width:750px) and (max-width:799px) {
    html {
        font-size: 23.5px
    }
}
@media screen and (min-width:800px) and (max-width:959px) {
    html {
        font-size: 25px
    }
}
@media screen and (min-width:960px) and (max-width:1079px) {
    html {
        font-size: 30px
    }
}
@media screen and (min-width:1080px) {
    html {
        font-size: 32px
    }
}


15、移动端touch事件(区分webkit 和 winphone)

当用户手指放在移动设备在屏幕上滑动会触发的touch事件

以下支持webkit

  • touchstart——当手指触碰屏幕时候发生。不管当前有多少只手指
  • touchmove——当手指在屏幕上滑动时连续触发。通常我们再滑屏页面,会调用event的 preventDefault()可以阻止默认情况的发生:阻止页面滚动
  • touchend——当手指离开屏幕时触发
  • touchcancel——系统停止跟踪触摸时候会触发。例如在触摸过程中突然页面alert()一个提示框,此时会触发该事件,这个事件比较少用

以下支持winphone 8

  • MSPointerDown——当手指触碰屏幕时候发生。不管当前有多少只手指
  • MSPointerMove——当手指在屏幕上滑动时连续触发。通常我们再滑屏页面,会调用css的html{-ms-touch-action: none;}可以阻止默认情况的发生:阻止页面滚动
  • MSPointerUp——当手指离开屏幕时触发

16、移动端click屏幕产生200-300 ms的延迟响应:

  • 移动设备上的web网页是有300ms延迟的,玩玩会造成按钮点击延迟甚至是点击失效

17、上下拉动滚动条时卡顿、慢:

 body {
    -webkit-overflow-scrolling: touch;
    overflow-scrolling: touch;
}

18、禁止复制、选中文本:

Element {
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
     user-select: none;
}

19、长时间按住页面出现闪退:

element {
    -webkit-touch-callout: none;
}

20、iphone及ipad下输入框默认内阴影:

Element{
    -webkit-appearance: none; 
}

21、active兼容处理 即 伪类 :active 失效:

方法一:body添加ontouchstart

<body ontouchstart="">

方法二:js给 document 绑定 touchstart 或 touchend 事件

<style>
a {
  color: #000;
}
a:active {
  color: #fff;
}
</style>
<a herf=foo >bar</a>
<script>
  document.addEventListener(‘touchstart‘,function(){},false);
</script>

22、动画定义3D启用硬件加速

Element {
    -webkit-transform:translate3d(0, 0, 0)
    transform: translate3d(0, 0, 0);
}

注意:3D变形会消耗更多的内存与功耗

23、Retina屏的1px边框

Element{
    border-width: thin;
}

24、旋转屏幕时,字体大小调整的问题

*{
   -webkit-text-size-adjust:100%;  
}

25、顶部状态栏背景色

<meta name="apple-mobile-web-app-status-bar-style" content="black" />

26、浏览器私有及其它meta :

  • QQ浏览器私有

全屏模式

<meta name="x5-fullscreen" content="true">

强制竖屏

<meta name="x5-orientation" content="portrait">

强制横屏

<meta name="x5-orientation" content="landscape">

应用模式

<meta name="x5-page-mode" content="app">
  • UC浏览器私有

全屏模式

<meta name="full-screen" content="yes">

强制竖屏

<meta name="screen-orientation" content="portrait">

强制横屏

<meta name="screen-orientation" content="landscape">

应用模式

<meta name="browsermode" content="application">
  • 其它

针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓

<meta name="HandheldFriendly" content="true">
  • 微软的老式浏览器

windows phone 点击无高光

<meta name="msapplication-tap-highlight" content="no">

27、OS中input键盘事件keyup、keydown、keypress支持不是很好:

问题是这样的,用input search做模糊搜索的时候,在键盘里面输入关键词,会通过ajax后台查询,然后返回数据,然后再对返回的数据进行关键词标红。用input监听键盘keyup事件,在安卓手机浏览器中是可以的,但是在ios手机浏览器中变红很慢,用输入法输入之后,并未立刻相应keyup事件,只有在通过删除之后才能相应!

解决方法:可以用html5的oninput事件去代替keyup

<input type="text" id="testInput">
<script type="text/javascript">
    document.getElementById(‘testInput‘).addEventListener(‘input‘, function(e){
        var value = e.target.value;
    });
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值