HTML5技术

webkit webApp 开发技术要点总结 - -小克

字号+ 作者:H5之家 来源:博客园 2016-07-29 17:00 我要评论( )

1. viewport: 也就是可视区域。对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏、状态栏、滚动条等等之后用于看网页的区域, 这是真正有效的区域。由于移动设备屏幕宽度不同于传统web,因此我们需要改变viewport; 实际上我们可以操作的属

1. viewport:
也就是可视区域。对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏、状态栏、滚动条等等之后用于看网页的区域,
这是真正有效的区域。由于移动设备屏幕宽度不同于传统web,因此我们需要改变viewport;

实际上我们可以操作的属性有4 个:

width -             //  viewport 的宽度 (范围从200 到10,000,默认为980 像素)

height -            //  viewport 的高度 (范围从223 到10,000)

 

initial-scale -     //  初始的缩放比例 (范围从>0 到10)

 

minimum-scale -    //   允许用户缩放到的最小比例

maximum-scale -    //   允许用户缩放到的最大比例

 

user-scalable -    //   用户是否可以手动缩 (no,yes)


那么到底这些设置如何让Safari 知道?其实很简单,就一个meta,形如:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">   //编码

<meta content="width=320; initial-scale=1.0;maximum-scale=1.0; user-scalable=no;"/>

<meta name=”apple-mobile-web-app-capable” content=”yes” />  // 离线应用的另一个技巧     

<meta name=”apple-mobile-web-app-status-bar-style” content=black” />  // 隐藏状态栏        

<meta content="black" /> //指定的iphone中safari顶端的状态条的样式        

<meta content="telephone=no" />       //告诉设备忽略将页面中的数字识别为电话号码      

<meta contect="Mr.He"/ >  


在设置了initial-scale=1 之后,我们终于可以以1:1 的比例进行页面设计了。关于viewport,还有一个很重要的概念是:iphone 的safari 浏览器完全没有滚动条,而且不是简单的“隐藏滚动条”,是根本没有这个功能。iphone 的safari 浏览器实际上从一开始就完整显示了这个网页,然后用viewport 查看其中的一部分。当你用手指拖动时,其实拖的不是页面,而是viewport。浏览器行为的改变不止是滚动条,交互事件也跟普通桌面不一样。(请参考:指尖的下JS 系列文章)

2. link:

<link rel=”apple-touch-startup-image” href=”startup.png” /> // 设置开始页面图片

<link rel=”apple-touch-icon” href=”iphon_tetris_icon.png”/> // 在设置书签的时候可以显示好看的图标

<link media="all and (orientation:portrait)" href="portrait.css">    // 肖像模式样式       

<link media="all and (orientation:landscape)" href="landscape.css"   // 风景模式样式

 

//竖屏时使用的样式 

<style media="all and (orientation:portrait)" type="text/css">

#landscape { display: none; }

</style>

 

//横屏时使用的样式 

<style media="all and (orientation:landscape)" type="text/css">

#portrait { display: none; }

</style>  


3. 事件 : (请参考:指尖的下JS 系列文章)

// 手势事件

touchstart            //当手指接触屏幕时触发

touchmove           //当已经接触屏幕的手指开始移动后触发

touchend             //当手指离开屏幕时触发

touchcancel

 

// 触摸事件

gesturestart          //当两个手指接触屏幕时触发

gesturechange      //当两个手指接触屏幕后开始移动时触发

gestureend

 

// 屏幕旋转事件   

onorientationchange     

 

// 检测触摸屏幕的手指何时改变方向       

orientationchange       

 

// touch事件支持的相关属性

touches         

targetTouches       

changedTouches              

clientX    // X coordinate of touch relative to the viewport (excludes scroll offset)       

clientY    // Y coordinate of touch relative to the viewport (excludes scroll offset)       

screenX    // Relative to the screen        

screenY     // Relative to the screen       

pageX     // Relative to the full page (includes scrolling)     

pageY     // Relative to the full page (includes scrolling)     

target     // Node the touch event originated from      

identifier     // An identifying number, unique to each touch event


4. 屏幕旋转事件:onorientationchange
添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋、右旋还是没旋)。例子:

// 判断屏幕是否旋转

function orientationChange() { 

    switch(window.orientation) { 

      case 0:  

            alert("肖像模式 0,screen-width: " + screen.width + "; screen-height:" + screen.height); 

            break; 

      case -90:  

            alert("左旋 -90,screen-width: " + screen.width + "; screen-height:" + screen.height); 

            break; 

      case 90:    

            alert("右旋 90,screen-width: " + screen.width + "; screen-height:" + screen.height); 

            break; 

      case 180:    

          alert("风景模式 180,screen-width: " + screen.width + "; screen-height:" + screen.height); 

          break; 

    };<br>};

// 添加事件监听 

addEventListener('load', function(){ 

    orientationChange(); 

    window.onorientationchange = orientationChange; 

});


5. 隐藏地址栏 & 处理事件的时候,防止滚动条出现:

// 隐藏地址栏  & 处理事件的时候 ,防止滚动条出现

addEventListener('load', function(){ 

        setTimeout(function(){ window.scrollTo(0, 1); }, 100); 

});


6. 双手指滑动事件:

// 双手指滑动事件

addEventListener('load',  function(){ window.onmousewheel = twoFingerScroll;}, 

     false              // 兼容各浏览器,表示在冒泡阶段调用事件处理程序 (true 捕获阶段)

); 

function twoFingerScroll(ev) { 

    var delta =ev.wheelDelta/120;              //对 delta 值进行判断(比如正负) ,而后执行相应操作 

    return true; 

}; 


7. 判断是否为iPhone:

// 判断是否为 iPhone : 

function isAppleMobile() { 

    return (navigator.platform.indexOf('iPad') != -1); 

}; 


8. localStorage:
 例子 :(注意数据名称  n  要用引号引起来)

var v = localStorage.getItem('n') ? localStorage.getItem('n') : "";   // 如果名称是  n 的数据存在 ,则将其读出 ,赋予变量  v  。 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

    移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

    2017-04-16 11:00

  • WebApp框架 - stumpx

    WebApp框架 - stumpx

    2017-04-06 15:01

  • CSS gradient渐变之webkit核心浏览器下的使用以及实例 - 孟然

    CSS gradient渐变之webkit核心浏览器下的使用以及实例 - 孟然

    2017-02-04 15:00

  • 修改输入框placeholder文字默认颜色-webkit-input-placeholder - 惟愿一生

    修改输入框placeholder文字默认颜色-webkit-input-placeholder - 惟

    2017-01-20 13:00

网友点评