浏览器和设备之间还有很多有趣的接口,

1.屏幕朝向接口

浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏。

(1)使用css媒体查询的方法

/* 竖屏 */
@media screen and (orientation: portrait) {
div{
width: 100%;
}
} /* 横屏 */ @media screen and (orientation: landscape) {
div{
height: 100%;
}

(2)利用js调用屏幕朝向接口

screen.addEventListener("orientationchange", function () {
console.log("屏幕的方向是: " + screen.orientation.angle);
});

例子:demo

2.设备朝向接口

通过这个接口可以监听设备朝向及旋转,以便自动调节放心,这个接口有两个:

(1) DeviceOrientationEvent:监听方向变化

window.addEventListener("deviceorientation", operate, true);

operate会接收一个对象,对象含有4个属性分别是:

function opertate(orientData) {
var absolute = orientData.absolute;
var alpha = orientData.alpha;//z轴上的旋转角度(0~360)
var beta = orientData.beta;//x轴的旋转角度(-180~180)
var gamma = orientData.gamma;//y轴上的旋转角度(-90-90)
}

  

(2) DeviceMotinEvent:监听加速度变化

window.addEventListener("devicemotion", operate, true);

operate同样会接收一个对象,有4个属性

acceleration 和 accelerationIncludingGravity都是去除重力后的加速度,包括3组数据
x: 左向右
y: 下到上
z: 垂直地面 rotationRate包含3组数据: alpha:垂直旋转速率
beta: 左至右的轴的旋转速率
gamma: 从下至上方向的轴的旋转速率 intervali:i是从设备获取数据的频率(ms)

利用以上的api我们可以监听设备的移动方向,从而做出更加具有交互感的h5页面和游戏。

例子:demo

3.地理位置接口(https)

浏览器可以直接获取到用户的地理位置接口,返回用户的经纬度,拿着这个经纬度可以到百度或者腾讯地图开发的接口去查询用户的位置,

为了安全考虑,使用这个接口之前会先征求用户的许可。

但是现在限制只能在https的链接中使用,安卓的微信中还可以继续使用,但是ios10中也要求必须是https。

navigator.geolocation(succ,error,option); //这个接口异步获取用户的地理位置

(1)获取成功之后调用第一个参数定义的succ函数,

(2)如果调用失败则调用第二个参数定义的error函数,并返回错误代码error.code 和error.message

error.code:1  用户拒绝显示位置
error.code:2 获取位置失败
error.code:3 请求超时
error.code:4 未知错误

(3)option:可选,用来设定是否获取高精度定位,等待请求时间和最长定位缓存时间。

var option ={
  enableHighAccuracy:true,
  timeout:1000,
  maximumAge:0
}

l

navigator.geolocation.getCurrentPosition(function(position) {
  alert(position.coords.latitude, position.coords.longitude);//获取纬度、精度
});

地理位置还有一个接口:navigator.geolocation.watchPosition(succ,error,option);//监听用户的位置

这个接口会在用户位置变化时,自动调用。

var watchID = navigator.geolocation.watchPosition(function(position) {
alert(position.coords.latitude, position.coords.longitude);
});

清除监听

navigator.geolocation.clearWatch(watchID);

  

  

内容原创,转载请注明出处:

作者:Jess_喵

来源:http://www.cnblogs.com/zhangwenjiajessy/p/6246021.html

 

几个有趣的WEB设备API(二)的更多相关文章

  1. 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api

    受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分. 1.电池状态API navigator.getBattery():这个api返回的是一个pr ...

  2. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息.   但是c ...

  3. HTML5 ——web audio API 音乐可视化(二)

    上一篇 web audio API 音乐可视化(一)介绍了一些基本的API,以及如何简单的播放一个音频,本篇介绍一下怎么对获取到的音频进行分析,并将分析后的数据绘制成图像. 最终效果请戳这里; 完整版 ...

  4. C# 调用百度地图Web服务API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  5. 使用Web Audio API绘制音波图

    摘要:Web Audio API是对<audio> 标签功能上的补充,我们可以用它完成混音.音效.平移等各种复杂的音频处理,本文简单的使用其完成音波图的绘制. PS:本例子使用ES6编程, ...

  6. C# 调用百度地图 Web 服务 API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  7. web 基础(二) HTML5

    web 基础(二) HTML5 一.HTML5 HTML5 是最新的 HTML 标准.是专门为承载丰富的 web 内容而设计的,并且无需额外插件.它拥有新的语义.图形以及多媒体元素.并提供的新元素和新 ...

  8. 【HTML5】Web Audio API打造超炫的音乐可视化效果

    HTML5真是太多炫酷的东西了,其中Web Audio API算一个,琢磨着弄了个音乐可视化的demo,先上效果图: 项目演示:别说话,点我!  源码已经挂到github上了,有兴趣的同学也可以去st ...

  9. H5的Web Audio Api

    概述 研究Web Audio Api的主要原因是:工作中需要在ios中实现声音的淡出效果,主要是通过setInterval来改audio标签的volume属性实现的,但是ios上面volume属性是只 ...

随机推荐

  1. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  2. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  3. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  4. 【资源】.Net 入门@提高 - 逆天的高薪之路!

     入门看视频,提高看书籍,飘升做项目.老练研开源,高手读外文,大牛讲低调~    官方学习计划 http://www.cnblogs.com/dunitian/p/5667901.html ----- ...

  5. vscode 1.5安装体验

    1.下载安装 官方下载地址: http://code.visualstudio.com/ 界面截图: 2.图标显示功能File Icon Themes vscode1.5版本文件夹视图,可显示文件类型 ...

  6. 热修复-Nuwa学习篇

    nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nu ...

  7. 电脑新建svn仓库

    步骤1:安转svg: 注意事项: 安装的时候选择:Modify 安装到以下图片的步骤时: 黄色区域选择: 步骤2:新建svn仓库文件夹(本教程例子:D:\svn-5gpos),选择文件夹右键,点击下图 ...

  8. 换个角度看微信小程序[推荐]

    去年参加几次技术沙龙时,我注意到一个有意思的现象:与之前大家统一接受的换名片不同,有些人并不愿意被添加微信好友--"不好意思,不熟的人不加微信". 这个现象之所以有意思,是因为名片 ...

  9. 小小改动帮你减少bundle.js文件体积(翻译)

    我已经从事过好多年的SPA开发工作,我发现很多的程序猿都从来不往 bundle.js 文件的体积上动脑筋,这让我有点懵逼. “安心洗路,等俺把代码混淆压缩后就一切666了”,若是有人这么说,我会翻白眼 ...

  10. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...