WebApp 开发中常用的代码片段

其实这里面的多数都是 iOS 上面的代码。其他平台的就没有去验证了。

HTML, 从HTML文档的开始到结束排列:

<meta name=”viewport” content=”width=device-width, initial-scale=1.0″/> 让内容的宽度自适应为设备的宽度, 在做Mobile Web时必须加的一条

<meta name=”format-detection” content=”telephone=no”]]> 禁用手机号码链接(for iPhone)

<link rel=”apple-touch-icon” href=”icon.png”/> 设置你网页的图标, 尺寸为57X57 px

<!– iOS 2.0+: tell iOS not to apply any glare effects to the icon –>

<link rel=”apple-touch-icon-precomposed” href=”icon.png”/>

<!– iOS 4.2+ icons for different resolutions –>

<link rel=”apple-touch-icon” sizes=”72×72″ href=”touch-icon-ipad.png” />

<link rel=”apple-touch-icon” sizes=”114×114″ href=”touch-icon-iphone4.png” />

<link rel=”apple-touch-startup-image” href=”startup.png”> 全屏启动时候的启动画面图像, 尺寸320X460 px

<meta name=”apple-mobile-web-app-capable” content=”yes” /> 是否允许全屏显示, 只有在桌面启动时可用

<meta name=”apple-mobile-web-app-status-bar-style” content=”black” /> 控制全屏时顶部状态栏的外观, 默认白色

<input autocorrect=”off” autocomplete=”off” autocapitalize=”off”>  取消自动完成, 自动大写单词字母(适用于Mobile上)

<input type=”text” x-webkit-speech /> 语音输入

<input type=”file” accept = “image ::-webkit-scrollbar { width: 12px; } ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); -webkit-border-radius: 10px; border-radius: 10px; } ::-webkit-scrollbar-thumb { -webkit-border-radius: 10px; border-radius: 10px; background: rgba(255,0,0,0.8); -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); } ::-webkit-scrollbar-thumb:window-inactive { background: rgba(255,0,0,0.4); }

-webkit-background-composite: plus-darker; -webkit-background-composite用来设置一个元素的背景或颜色的组合样式

-webkit-text-stroke:  1px rgba(0,0,0,0.5); -webkit-text-stroke可以用来给文字添加描边

-webkit-mask-image:  url(/path/to/mask.png); 定义一个图片用来遮罩元素

-webkit-box-reflect:  below 5px; 定义了一个元素的反射

:local-link {font-weight: normal;}  local-link可以定义相对地址的链接样式

Javascript:

window.scrollTo(0,0); 隐藏地址栏

window.matchMedia(); 匹配媒体

navigator.connection; 决定手机是否运行在WiFi/3G等网络

window.devicePixelRatio; 决定屏幕分辨率(iPhone 4值为2, 而Nexus One值为1.5)

window.navigator.onLine; 取得网络连接状态

window.navigator.standalone; 决定iPhone是否处于全屏状态

touch事件 (iOS, Android 2.2+): touchstart, touchmove, touchend, touchcancel

gesture事件 (Apple only, iOS 2+):  gesturestart, gesturechange, gesturend give access to predefined gestures (rotation, scale, position)

window.addEventListener("orientationchange", function(e){ //window.orientation(0 is portrait, 90 and -90 are landscape) }, false); window.addEventListener("deviceorientation", function(e){ //e.alpha //e.beta //e.gamma }, false); window.addEventListener("devicemotion", function(e){ //e.accelerationIncludingGravity.x //e.accelerationIncludingGravity.y //e.accelerationIncludingGravity.z }, false);

requestAnimationFrame() 新的动画函数

element.webkitRequestFullScreen() 调用全屏函数

1、-webkit-tap-highlight-color:rgba(255,255,255,0)可以同时屏蔽ios和android下点击元素时出现的阴影。

备注:transparent的属性值在android下无效。
2、-webkit-appearance:none可以同时屏蔽输入框怪异的内阴影。
3、-webkit-transform:translate3d(0, 0, 0)在ios下可以让动画更加流畅(这个属性会调用硬件加速模式),但是在android下不可乱用,很多见所未见的bug就是因为这个。
4、@-webkit-keyframes可以预定义很多你所想到的动画,然后通过-webkit-transition来调用。
5、-webkit-background-size可以做高清图标,不过一些低版本的android只能识别background-size,所以有必要两个都要写上;用这个属性的时候推荐树勇cover这个值,可以自动去匹配宽和高。
6、text-shadow多用这个属性,可以美化文字效果。
7、border-radius、box-shadow、gradient、border-image,不解释,可以精简代码。
8、android、ios4及以下,固定宽/高块级元素的overflow:scroll/auto失效,属于浏览器的bug,可借助第三方工具实现。
9、ios5+可以通过scrollTo(0,0)来自动隐藏浏览器地址栏。
10、width可是宽度,initial-scale初始化缩放比例,maximum-scale允许用户缩 放的最大比例,minimum-scale允许用户缩放的最小比例,user-scalable是否允许用户缩放。
11、允许用户添加到主屏幕,并提供webapp的支持。
12、css3动画会影响你的自动聚焦,所以自动聚焦要在动画执行之前来做,或者直接舍弃。
13、使用media query适配不同屏幕。
14、如果涉及较多域外链接,DNS Prefetching可以帮你做DNS预解析。
15、如果你希望你的站点更多地在SNS上传播,那么Open Graph Protocol会比较适合你。
16、当用iScroll时候,不能使用:focus{outline:0}伪类,否则滑动会卡。
 
1.当用户tap一个页面元素时,iOS会在元素周围显示橙色的外框,以表明该元素被tap了。如果你想自己实现tap时的响应效果,可以用以下方法“去除”这个高亮效果
.-webkit-tap-highlight-color: rgba(0,0,0,0);

2.禁止用户选择页面文字.

-webkit-user-select: none;<br>

3.如果你响应onclick事件,会发现click事件有大约半秒的延迟,这是因为iOS需要等待一段时间来判断用户是点击还是拖动。如想去掉这个延迟,可以用ontouchstart代替onclick

$(".button").bind("touchstart", handler);

但这样在桌面浏览器中鼠标点击操作就不要用了。没关系,可以做一下判断。

if ('ontouchstart' in window) { // mobile version $(".button").bind("touchstart", handler); } else { // desktop version $(".button").bind("click", handler); }

4.禁止用户拖动页面:

document.ontouchstart = function(e){ e.preventDefault(); } 5.禁用链接弹出窗口
-webkit-touch-callout:none
6.webkit在渲染页面时,会自动调整字体大小,比如横竖屏切换时;
-webkit-text-size-adjust:none;
但是如果设置为none,那么会导致页面的缩放功能不能用,最好办法是
-webkit-text-size-adjust:100%;

相关推荐